常微分方程初值问题的matlab解法

上传人:第*** 文档编号:31145576 上传时间:2018-02-05 格式:DOC 页数:10 大小:462KB
返回 下载 相关 举报
常微分方程初值问题的matlab解法_第1页
第1页 / 共10页
常微分方程初值问题的matlab解法_第2页
第2页 / 共10页
常微分方程初值问题的matlab解法_第3页
第3页 / 共10页
常微分方程初值问题的matlab解法_第4页
第4页 / 共10页
常微分方程初值问题的matlab解法_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《常微分方程初值问题的matlab解法》由会员分享,可在线阅读,更多相关《常微分方程初值问题的matlab解法(10页珍藏版)》请在金锄头文库上搜索。

1、1用 Matlab 求常微分方程(ODE) 的初值问题(IVP)本节考虑一阶常微分方程* MERGEFORMAT (1.1)00(,) ufttT的数值求解问题,包括算法公式及编程问题。对一阶常微分方程组的初值问题* MERGEFORMAT (1.2)0111122 220012 ()(,) (,)()mmmmutuftutTft tLLL可以通过引入列向量 化成类似* MERGEFORMAT (1.1)的形式0,ufr* MERGEFORMAT (1.3)00(,)ufttTr其中* MERGEFORMAT 11012220012()()(,),)()()(,)mmmmmttftuuut f

2、tttftLrrrMM(1.4)另外一个高阶常微分方程的初值问题* MERGEFORMAT (1.5)() (1)0(1)00, ()mmuftutTu L也可以通过变换 化成维微分方程组:1123,mu* MERGEFORMAT (1.6)2312(,)mmuuftuLL我们在设计算法时通常先对一维一阶常微分方程* MERGEFORMAT (1.1)进行,然后再将这个算法写成适合求解* MERGEFORMAT (1.3)的向量形式,并以向量形式来进行编程。1、 非刚性系统与刚性系统 当 时微分方程组* MERGEFORMAT (1.3)变成(,)()ftuAtrr* MERGEFORMAT

3、(1.7)()uAtrr如果系数矩阵 特征值 满足 ,对应的特征向量为 ,则* mR12,mL12mL12,mvrrL2MERGEFORMAT (1.7)具有通解* MERGEFORMAT (1.8)1()()jmtjutcevrr其中 为* MERGEFORMAT (1.7) 的一个特解。如果* MERGEFORMAT (1.7)中的矩阵满足()tr* MERGEFORMAT (1.9)j1()Re0,22 ()e)1 msL就称微分方程组* MERGEFORMAT (1.7) 是刚性的或坏条件的或病态的。s 称为刚性比。对于一般的一阶常微分方程组* MERGEFORMAT (1.3),如果

4、多元向量值函数 对* (,)fturMERGEFORMAT (1.4)中向量 的分量的 Jacobi 矩阵ur* MERGEFORMAT (1.10)1122112()()mmmutffuuJtffurLMOL的特征值 对于求解区间上的任何 满足* MERGEFORMAT (1.9)式,则称微分方程12(),()mttL0,tT组* MERGEFORMAT (1.3)为刚性的。2、解法器及调用格式解法器 适用类型 何时使用 使用算法ode45 Nonstiff Most of the time. This should be the first solver you try.Runge-Kut

5、ta (4,5) 格式ode23 Nonstiff If using crude error tolerances or solving moderately stiff problems.Runge-Kutta (2,3) 格式ode113 Nonstiff If using stringent error tolerances or solving a computationally intensive ODE file.Adams-Bashforth-Moulton PECE 格式ode15s Stiff If ode45 is slow because the problem is s

6、tiff.ode23s Stiff If using crude error tolerances to solve stiff systems and the mass matrix is constant.ode23t Moderately Stiff If the problem is only moderately stiff and you need a solution without numerical damping.ode23tb Stiff If using crude error tolerances to solve stiff 3systems.有如下三种调用方法,其

7、中 solver 是上面三个解法器的名子。(1) t,y = solver(odefun,tspan,y0);(2) t,y = solver(odefun,tspan,y0,options);(3) t,y = solver(odefun,tspan,y0,options,p1,p2.);它们输入参数是:(1) odefun:是一个函数句柄,指向初值问题* MERGEFORMAT (1.3)中的函数 ,它的基本形式是 dydt (,)ftur= f(t,y), 其中 dydt,y 是列向量,而 t 是标量。(2) tspan:是一个向量,用于指定求解区间 。要求这个向量的分量是有序的,或者单

8、调上tspan(1),ted)升或者单调下降。(3) y0:是初值问题* MERGEFORMAT (1.3)中的初始列向量 。0ur(4) options:用于对解法器缺省的求解参数进行设置。如果不想改变缺省值,可以用空矩阵 来代替。MATLAB 的 ODE 解法器设计了一个结构变量用于设置解法器的各项公共参数,比如精度,步长等。其中已经定义了一些缺省值,用无参数的 odeset 命令可以列出所有的公共参数及其缺省值:AbsTol: positive scalar or vector 1e-6 绝对误差RelTol: positive scalar 1e-3 相对误差NormControl:

9、on | off 是否用向量范数控制误差,缺省是按每个分量进行误差控制。OutputFcn: function OutputSel: vector of integers Refine: positive integer Stats: on | off InitialStep: positive scalar 初始步长MaxStep: positive scalar 最大步长,缺省为求解区间的十分之一。BDF: on | off 是否利用向后差分来求 Jacobi 矩阵。MaxOrder: 1 | 2 | 3 | 4 | 5 Jacobian: matrix | function 对刚性方程组

10、的解法器可以提供相应的 Jacobi 矩阵信息JPattern: sparse matrix Vectorized: on | off Mass: matrix | function MStateDependence: none | weak | strong MvPattern: sparse matrix MassSingular: yes | no | maybe InitialSlope: vector Events: function 每个解法器可以设置的参数如下表:Parameters ode45 ode23 ode113 ode15s ode23s ode23t ode23tbR

11、elTol, AbsTol, NormControlOutputFcn, OutputSel, Refine, StatsEvents4MaxStep, InitialStepJacobian, JPattern, Vectorized - - -MassMStateDependence MvPatternMassSingular- -InitialSlope - - - - -MaxOrder, BDF - - - - - -(5) 输入参数 p1,p2. 等等是可选的参数,并且由解法器传递给函数 odefun.输出参数的含义是:(1) t:节点列向量。(2) y:在节点处的解的近似值数组,

12、第 i 行对应于 t 的第 i 行那个节点处的近似解。即输出是如下形式:节点 t y1(t) y2(t) ym(t)例题 1、分别用步长 来求初值问题在区间 上的近似解,并与准确解0.5,.,0h0,8进行图形上的比较。2ut* MERGEFORMAT (1.11)2 (0)1tu解:利用如下代码,注意其中作为输入参数的函数的代码的编写方法,以及 ODE 解法器 ode45 的调用方法。function zzzh=0.1;y0=1;tspan=0:h:8;t,y = ode45(f,tspan,y0);t,yhold on;plot(tspan,y,-k,tspan,fu(tspan),-b)

13、;title(Solution of IVP in eg1);xlabel(time t);ylabel(solution u);legend(numerical solutons,true solutions);function dudt=f(t,u)dudt=u-2*t./u;function u=fu(t)u=sqrt(1+2*t);由于结果较多我们只画出它们的图形如图 1。从图形中可以明显看出,当时间变量较大时比如 所求的近似5t解严重偏离了真解。这说明初值问题* MERGEFORMAT (1.11)在时刻 0 有较好的稳定性,但是在时刻 4 以后可能稳定性就不太好了,为些我们利用*

14、MERGEFORMAT (1.11)构造一个初值问题:* MERGEFORMAT (1.12)241()3tu5它与初值问题* MERGEFORMAT (1.11)有相同的解。将上述代码适当改动来求解初值问题* MERGEFORMAT (1.12),并画出图形如图 2,发现还是在初始时刻 4 附近有较好的稳定性,所以我们在求解时不能希望在很大的区间上求解。图 1 图 2 例 2、求解二阶 Van der Pol 微分方程所构成的初值问题在区间 上的近似解。其中参数 是一个正数,0,当较大时这个方程是刚性的。* MERGEFORMAT (1.13)2(1) 20,uut解:这是一个高阶方程,要用

15、变量代换化成向量形式的一阶方程组形式* MERGEFORMAT (1.3),令 则vu化成方程组* MERGEFORMAT (1.14)2(1)0 20,uvut再令 , 则* MERGEFORMAT (1.14)的一阶向量形式为* (),()Tutvtr 2(,),()TftuvrMERGEFORMAT (1.3)。下列代码中编写了向量值函数 ,由还有一个可选参数 故要注意解法器的调用(,)ftur 形式。输出矩阵 u 的每一行代表解向量在每个节点处的近似函数值。对于本题来说输出矩阵 u 的第二列相当于方程* MERGEFORMAT (1.13)解函数 导数的近似值。可以对 进行试验解法器()ut 0.5,12,01ode45 的求解结果及图像。function zzz %ode13.mmu=10

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号