第八章 常微分方程的初值问题1.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第八章 常微分方程的初值问题1.ppt》由会员分享,可在线阅读,更多相关《第八章 常微分方程的初值问题1.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章 常微分方程的初值问题常微分方程(常微分方程(ODE):只含有未知函数的导数的方程。:只含有未知函数的导数的方程。ODE的阶数:的阶数:最高阶导数的阶数最高阶导数的阶数ODE问题问题初值问题:初值问题:边值问题:边值问题:已知初始点处的条件已知初始点处的条件已知初始点和末端点处的条件已知初始点和末端点处的条件本章只讨论初值问题本章只讨论初值问题 一阶一阶ODE问题的形式问题的形式 1、如果、如果 f 与与 y 无关,则计算变为第无关,则计算变为第5章(数值积分)中章(数值积分)中讨论的任一种直接积分方法应用讨论的任一种直接积分方法应用 初始条件初始条件2、如果、如果 f 是是 y 的函数
2、的函数,积分过程将不同于前者。,积分过程将不同于前者。若若 f 是是 y 的线性函数,如:的线性函数,如:f=ay+b 其中其中a,b是常数或是是常数或是 t 的函数,的函数,此时原方程称为线性此时原方程称为线性ODE若若 f 不是线性函数,方程就称为非线性不是线性函数,方程就称为非线性ODE。一、求一、求ODEODE的解析解的解析解dsolvedsolve输出变量列表输出变量列表=dsolve(eq1,eq2,.,eqn,cond1,cond2,.,condn,v1,v2,vn)其中其中 eq1、eq2、.、eqn为微分方程,为微分方程,cond1、cond2、.、condn为初值条件,为初
3、值条件,v1,v2,vn 为自变为自变量。量。注注1:微分方程中用微分方程中用 D 表示对表示对 自变量自变量 的导数,如:的导数,如:Dy y;D2y y;D3y y例例:求微分方程求微分方程 的通解,并验证。的通解,并验证。y=dsolve(Dy+2*x*y=x*exp(-x2),x)结果为结果为 y=(1/2*x2+C1)*exp(-x2)syms x;diff(y)+2*x*y-x*exp(-x2)结果为结果为 ans=0注注2:如果省略初值条件,则表示求通解;如果省略初值条件,则表示求通解;注注3:如果省略自变量,则默认自变量为如果省略自变量,则默认自变量为 t 例例:dsolve(
4、Dy=2*x)%dy/dt=2x 结果为结果为 ans=2*x*t+C1例例:求微分方程求微分方程 在初值条件在初值条件 下的特解,并画出解函数的图形。下的特解,并画出解函数的图形。y=dsolve(x*Dy+y-exp(x)=0,y(1)=2*exp(1),x)结果为结果为 y=(exp(x)+exp(1)/x ezplot(y)%此时的此时的y已经是符号变量,故不用已经是符号变量,故不用ezplot(y)dsolve(D3y=-y,y(0)=1,Dy(0)=0,D2y(0)=0)结果为结果为ans=1/3*exp(-t)+2/3*exp(1/2*t)*cos(1/2*3(1/2)*t)例:
5、例:注注4 4:解微分方程组时,如果所给的输出个数与方程个数解微分方程组时,如果所给的输出个数与方程个数相同,则方程组的解按词典顺序输出;如果只给一个输相同,则方程组的解按词典顺序输出;如果只给一个输出,则输出的是一个包含解的结构出,则输出的是一个包含解的结构(structure)类型的类型的数据。数据。例:例:求微分方程组求微分方程组 在初值条件在初值条件 下的特解下的特解x,y=dsolve(Dx+5*x+y=exp(t),.Dy-x-3*y=0,x(0)=1,y(0)=0,t)x,y=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=0,.x(0)=1,y(0)=0,t)或
6、或r=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=0,.x(0)=1,y(0)=0,t)这里返回的这里返回的 r 是一个是一个 结构类型结构类型 的数据的数据r.x%查看解函数查看解函数 x(t)r.y%查看解函数查看解函数 y(t)dsolve的输出个数只能为一个的输出个数只能为一个 或或 与方程个数相等。与方程个数相等。例例:用用dsolve求解著名的求解著名的Van der Pol方程方程 syms mu;y=dsolve(D2y+mu*(y2-1)*Dy+y)结果:结果:Warning,cannot find an explicit solutiony=&where
7、(_a,diff(_b(_a),_a)*_b(_a)+mu*_b(_a)*_a2-mu*_b(_a)+_a=0,_b(_a)=diff(y(t),t),_a=y(t),y(t)=_a,t=Int(1/_b(_a),_a)+C1)注注5:若找不到解析解,则返回其积分形式。若找不到解析解,则返回其积分形式。只有很少一部分微分方程(组)能求出解析解。只有很少一部分微分方程(组)能求出解析解。大部分微分方程(组)只能利用大部分微分方程(组)只能利用数值方法数值方法求数值解。求数值解。Euler(欧拉)方法是求解一阶欧拉)方法是求解一阶ODE的一种简的一种简便方法。尽管精度不高,但由于简单,特别适用于便
8、方法。尽管精度不高,但由于简单,特别适用于快速编程求解。它有三种格式:快速编程求解。它有三种格式:二、用二、用Euler Euler 方法求数值解方法求数值解(a)向前向前Euler 法法(b)改进的改进的Euler 法法(c)向后向后Euler法法介绍这些方法是为了了解初值问题求解的基本思想。介绍这些方法是为了了解初值问题求解的基本思想。一阶一阶ODE 对对 两边从两边从x0 到到 x 积分得:积分得:(积分方程)积分方程)1 1、向前、向前EulerEuler法法推导推导1:设节点为设节点为向前向前Euler法:法:用向前差分公式代替导数:用向前差分公式代替导数:此处,此处,y(xn)表示
9、表示 xn 处的理论解,处的理论解,yn表示表示y(xn)的近似解的近似解 一阶一阶ODE 对对 两边从两边从xn 到到 xn+1 积分得:积分得:推导推导2:yn 近似代替近似代替y(xn)用矩形代替右边的积分用矩形代替右边的积分向前向前Euler法法例例 求出求出解析解和数值解并画解析解和数值解并画图比较图比较先用先用dsolve求解析解求解析解y=dsolve(Dy=y+2*x/(y2),y(0)=1,x)结果为结果为 y=1/3*(-18-54*x+45*exp(3*x)(1/3)解析解:解析解:function x,y=Euler_bf(fun,x0,y0,xmax,h)%fun为显
10、式一阶微分方程右端的函数为显式一阶微分方程右端的函数%x0,y0为初始条件为初始条件,满足满足y(x0)=y0%xmax为为x的取值最大值的取值最大值%h为将为将x等分后的步长等分后的步长N=(xmax-x0)/h+1;%N为总的节点数为总的节点数x(1)=x0;y(1)=y0;for n=1:N-1 x(n+1)=x(n)+h;y(n+1)=y(n)+h*feval(fun,x(n),y(n);end下面再用向前欧拉法数值求解,为此先编写向前欧拉法下面再用向前欧拉法数值求解,为此先编写向前欧拉法的程序的程序最后通过图形比较用向前欧拉得到的数值解和解析解的最后通过图形比较用向前欧拉得到的数值解
11、和解析解的误差误差 fun=inline(y+2*x/y2,x,y);x1,y1=Euler_bf(fun,0,1,2,0.1);x2,y2=Euler_bf(fun,0,1,2,0.05);x=0:0.01:2;y=1/3*(-18-54*x+45*exp(3*x).(1/3);plot(x1,y1,*,x2,y2,x,x,y)axis(0,2,0,9)向前欧拉方法截断误差为向前欧拉方法截断误差为 对对 两边从两边从xn 到到 xn+1 积分得:积分得:2、改进的、改进的Euler法法yn 近似代替近似代替y(xn)用梯形代替右边的积分用梯形代替右边的积分梯形法梯形法从从n=0开始计算,每步
12、都要求解一个关于开始计算,每步都要求解一个关于yn+1的方程的方程(一般是一个非线性方程),可用如下的迭代法计算:(一般是一个非线性方程),可用如下的迭代法计算:利用此算法,可得:利用此算法,可得:利用利用 (为允许误差)来控制是否继续为允许误差)来控制是否继续迭代迭代迭代法太麻烦,迭代法太麻烦,实际上,当实际上,当h取得很小时,只让上式中取得很小时,只让上式中的第二式迭代一次就可以,即的第二式迭代一次就可以,即改进的改进的Euler法(也叫欧拉预估法(也叫欧拉预估校正法)校正法)预估算式预估算式校正算式校正算式改进的改进的Euler法法=向前欧拉法向前欧拉法+梯形法梯形法向后向后Euler法
13、依赖于向后差分近似,其格式为:法依赖于向后差分近似,其格式为:3 3、向后、向后EulerEuler法法 精度与向前欧拉法相同。如果精度与向前欧拉法相同。如果 f 为非线性函数,则与为非线性函数,则与改进的改进的Euler算法一样,在每一步中需要采用迭代法。算法一样,在每一步中需要采用迭代法。该方法有两个优点:该方法有两个优点:(a)绝对稳定;绝对稳定;(b)如果解为正,则可保证数值计算结果也为正。如果解为正,则可保证数值计算结果也为正。三、龙格库塔(三、龙格库塔(Runge-kutta)方法方法 Euler法的一个重要缺陷是精度太低。为了获得法的一个重要缺陷是精度太低。为了获得高精度,就要减
14、小高精度,就要减小 h,这不仅会增加计算时间,也这不仅会增加计算时间,也会产生舍入误差。会产生舍入误差。1 1、二阶、二阶Runge-kutta方法方法或或其实就是欧拉预估其实就是欧拉预估校正方法(或改进的欧拉法)校正方法(或改进的欧拉法)例例 用改进的欧拉法(即二阶用改进的欧拉法(即二阶龙格龙格-库塔法)数值求解并库塔法)数值求解并与向前欧拉法、解析解画与向前欧拉法、解析解画图比较图比较前面已求出解析解:前面已求出解析解:function x,y=Euler_mend(fun,x0,y0,xmax,h)%fun为显式一阶微分方程右端的函数为显式一阶微分方程右端的函数%x0,y0为初始条件为初
15、始条件,满足满足y(x0)=y0%xmax为为x的取值最大值的取值最大值%h为将为将x等分后的步长等分后的步长N=(xmax-x0)/h+1;%N为总的节点数为总的节点数x(1)=x0;y(1)=y0;for n=1:N-1 x(n+1)=x(n)+h;k1=h*feval(fun,x(n),y(n);k2=h*feval(fun,x(n+1),y(n)+k1);y(n+1)=y(n)+1/2*(k1+k2);end先编写改进的欧拉法的程序:先编写改进的欧拉法的程序:再分别调用再分别调用Euler_bf.m和和Euler_mend.m求解:求解:fun=inline(y+2*x/y2,x,y)
16、;x1,y1=Euler_bf(fun,0,1,2,0.1);x2,y2=Euler_mend(fun,0,1,2,0.1);x=0:0.01:2;y=1/3*(-18-54*x+45*exp(3*x).(1/3);plot(x1,y1,*,x2,y2,s,x,y)axis(0,2,0,9)3 3、三阶龙格库塔方法、三阶龙格库塔方法常见常见的三阶龙格库塔方法的格式为:的三阶龙格库塔方法的格式为:二阶龙格库塔方法截断误差为二阶龙格库塔方法截断误差为精度不高,希望通过增加计算精度不高,希望通过增加计算f的次数提高截断误差的的次数提高截断误差的阶数,为此引入阶数,为此引入4 4、四阶龙格库塔方法、四
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八章 常微分方程的初值问题1 第八 微分方程 初值问题
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内