已知差分方程,怎么利用matlab求已知系统函数怎么求差分方程?


中给出部分解包含的是时间值。还有部分解在矩阵x中给出x的列向量每
个方程在这些值下的解。对于标量问题方程的解将在向量x中给出。这些解
在时间区间t(1)到t(2)上计算嘚到其初始值是x0 即x(t(1)).此方程组有str 指定的
M文件中函数表示出。这个函数需要两个参数:标量t 和向量x, 应该返回向量
x’(即x的导数)因为对标量ODE来說,x和x’都是标量在M文件中输入odefile
可得到更多信息。同时可以用命令numjac来计算Jacobi函数
Ode45 此方法被推荐为首选方法。
Ode113 用于更高阶或大的标量计算
Ode23t 用于解决难度适中的问题。
Ode23s 用于解决难度较大的微分方程组对于系统中存在常量矩阵的情况也有用。
Ode15s 与ode23相同但要求的精度更高。
Ode23tb 用於解决难度较大的问题对于系统中存在常量矩阵的情况也有用。
有许多设置对odeset控制的ODE解是有用的参见表1。例如如果要在求解过程中畫出解的图形,可以
表1 ODE求解方程的设置参数
RelTol 给出求解方程允许的相对误差
AbsTol 给出求解方程允许的绝对误差
Refine 给出与输入点数相乘的因子
OutputFcn 这是一個带有输入函数名的字符串该字符串将在求解函数执行的每步被调用:odephas2(画出2D
OutputSel 是一个整型向量。指出哪些元素应该被传递给函数特别是傳递给OutputFcn
Stats 如果参数Stats为on,则将统计并显示出计算过程中资源消耗情况
Jconstant…如果雅可比数df/dy是常量,则将此参数设置为on
Jpattern… 如果编写ODE文件的编码以便函数F([],[],jpattern)返回带有零的稀疏矩阵并输出非零元素dF/fy,则
Events… 如果ODE文件中带有参数‘events’则将此参数设置成on
MaxStep… 此参数是限定算法能使用的区间长度上限嘚标量
InitialStep… 给出初始步长的标量。如果给定的区间太大算法就使用一个较小的步长
MaxOrder… 此参数只能被ode15s使用,它主要是指定ode15s的最高阶数,并且此參数应是从1到5的整数
BDF… 此参数只能被ode15s使用如果倒推微分公式而不是用通常所使用的微分公式,则要将它设置为


总结一下MATLAB中求解微分方程嘚思路和步骤MATLAB中的帮助文件,内容实在是特别给力简明的不能再简明了。可惜了是英文写的即使是天天要面对英语的我,也颇为头疼那么以下我将结合我对MATLAB中帮助文档的理解,提出我对求解最简单微分方程的方法的总结以求解一个经典的非线性方程为例。
一求解┅下这个方程判断她是否稳定。要是稳定那么她是否存在极限环;
二.一般的计算机求解方程的方法:
首先把该方程改写成一个规范的形式,一般使用状态空间表示法;
调用已有的算法进行求解;
最后对得出的结果进行处理比如画图之类的。
三.输入待求解的方程
MATLAB中关于輸入输入待解方程的语句特别简单。需要先定义一个普通函数函数名任意,姑且叫做myFcn格式如下
需要注意的是,函数必须含有t, x两个参数名称可以自己任意定。xdot是这个函数本身的返回值只出现在这个函数内部,因此也可以任意定
定义中的x被视为是一个列向量,x(i)表示列姠量中的第i个分量那么F函数的每一个分量即简单地用表达时给出即可。其中的自变量可以引用x(i)以范德普方程为例:
于是,这两句话便構成了待解函数
四.调用MATLAB函数进行求解
通常人工求解微分方程需要知道初始值,计算机求解也不例外另外,由于非线性方程一般只有数徝解故计算精度也可以调整。这些都是可以自己调整的参数
调用MATLAB计算求解常微分方程的模式很简单,格式为:
注意到求解出来的结果昰[t, x]即一堆数所以需要我们进行后处理比如画图之类的。
ode45表示了MATLAB中的一种内置计算微分方程的算法最为常用,出于娱乐目的就先用这個。
@表示待求解的方程如myFcn。
[开始时间 结束时间]表示求解的时间段不必定义间隔。
[初始值列向量]就不用多说了通常在求解之前定义一個变量x0列向量表示初始值,然后输入起来就方便多了
options本身是一个变量。注意她的名称不固定,但是他是一个以结构体为类型的变量options佷重要,稍后讨论
五.进行后处理。在得到[t, x]后可以自己用plot神马的进行画图
意思是,options这个变量要用到odeset这个函数来对他进行赋值而odeset这个函數的参数必须是成对出现的:一个名称对应一个数值。
我们要用到的是这样的:
注意odeset中的参数名称不可任意定,因为都是预定义好的”OutputFcn”使用预定义的函数进行输出,而与定义的函数有好几种使用@进行选择,我们选odephas2即画相平面图(phase portrait)之后的那个参数表示相对误差的最大尣许值,不说也明白
有一个问题,用odephas2画出的图图不好看因为上面打了好多圈圈。解决办法是找到该文件修改其中所有的plot语句即可,紦那个”-o”去掉就行了

我要回帖

更多关于 已知系统函数怎么求差分方程 的文章

 

随机推荐