常微分方程数值解与matlab.ppt

上传人:小飞机 文档编号:6570777 上传时间:2023-11-13 格式:PPT 页数:25 大小:960.50KB
返回 下载 相关 举报
常微分方程数值解与matlab.ppt_第1页
第1页 / 共25页
常微分方程数值解与matlab.ppt_第2页
第2页 / 共25页
常微分方程数值解与matlab.ppt_第3页
第3页 / 共25页
常微分方程数值解与matlab.ppt_第4页
第4页 / 共25页
常微分方程数值解与matlab.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《常微分方程数值解与matlab.ppt》由会员分享,可在线阅读,更多相关《常微分方程数值解与matlab.ppt(25页珍藏版)》请在三一办公上搜索。

1、实验4-常微分方程数值解,1.求解常微分方程数值方法介绍(1)一阶微分方程 求方程(1)的数值解,就是计算(精确)解在一系列离散点 的近似值.通常取相等的步长h,于是xn=x0+nh(n=1,2,).(a)欧拉方法基本思想是在小区间xn,xn+1上用差商 代替方程(1)左端的导数 而方程右端函数f(x,y(x)中的x取xn,xn+1上得某一点,公式为(2),实验4-常微分方程数值解,(b)Runge-Kutta方法基本思想是用小区间xn,xn+1上的若干个点的导数的线性组合代替方程(2)右端的,一般形式为(3)满足 并使(3)的局部截断误差-L级p阶Runge-Kutta公式,实验4-常微分方

2、程数值解,(2)常微分方程组和高阶方程的数值方法 欧拉方法和Runge-Kutta方法可直接推广到求常微分方程组,如对欧拉公式为Runge-Kutta公式有类似的形式.对高阶方程(5)需先降阶化为一阶常微分方程组,降阶方法不唯一.简单、常用的方法是令y1=y,将(5)化为,实验4-常微分方程数值解,2.Runge-Kutta方法的MatLab实现 对微分方程(组)的初值问题Runge-Kutta方法用MatLab命令实现:t,x=ode23(f,ts,x0,options)%用3级2阶Runge-Kutta公式t,x=ode45(f,ts,x0,options)%用5级4阶Runge-Kutt

3、a公式命令的输入f是待解方程写成的函数M文件:function dx=f(t,x)Dx=f1;f2;fn;,实验4-常微分方程数值解,2.Runge-Kutta方法的MatLab实现举例:仿真模拟著名的Lorenz系统混沌图其中,先建立一个函数M文件 function xdot=lorenz(t,x)sigma=10;r=28;row=8/3;xdot=-sigma*x(1)+sigma*x(2);(r-x(3)*x(1)-x(2);x(1)*x(2)-row*x(3);,实验4-常微分方程数值解,2.Runge-Kutta方法的MatLab实现画出Lorenz系统图clear all;clf

4、;options=odeset(RelTol,1e-5,AbsTol,1e-5);tspan=0,100;x0=1,2,3;t,x=ode45(lorenz,tspan,x0,options);l=length(x(:,1);a=1;b=l;figure(1)plot3(x(a:b,3),x(a:b,1),x(a:b,2),b);grid on;%画出三维相图xlabel(z);ylabel(x);zlabel(y);figure(2)subplot(311);plot(t,x(a:b,1);%画三分量演化图subplot(312);plot(t,x(a:b,2)subplot(313);pl

5、ot(t,x(a:b,3),实验4-常微分方程数值解,2.Runge-Kutta方法的MatLab实现作业报告:著名的Duffing系统(描述弹簧系统性质)其中类似的,分别画出F=1,2,3,4,6等时的相图翻阅一些参考书,你能得到一些什么结论?,实验4-常微分方程数值解,3.实例问题 缉私艇追击走私船 海上边防缉私艇发现距d公里处有一走私船正以匀速a沿直线行驶,缉私艇立即以最大匀速度v追赶,在雷达的引导下,缉私艇的方向始终指向走私船.问缉私艇何时追赶上走私船?并求出缉私艇追赶的路线.,S,(1)建立模型,走私船初始位置在点(S0,0),行驶方向为x轴正方向,缉私艇的初始位置在点(0,M0),

6、在时刻t:走私船的位置到达点:(S0+at,0)缉私艇到达点M(x,y),S,(2)模型求解(a)求解析解,令:,令:,(2)模型求解,(a)求解析解,当y=0 时:,走私船a=0.4千米/秒,分别取v=0.6,0.8,1.0千米/秒时,缉私艇追赶路线的图形。,clear all;clf;a=0.4;v=0.6 0.8 1.0;%取不同的速度r=0.4./v;t=20*r./(a*(1-r.2)%追上的时间 for i=1:3y=20:-0.01:0;x(:,i)=-0.5*(-40*r(i)+20(-r(i)*(r(i)-1)*y.(1+r(i)+20r(i)*(r(i)+1)*y.(1-r

7、(i)/(1-r(i)2);plot(x(:,i),y);axis(0 30 0 20);hold onend,追赶时间分别为:T=60.0000,33.3333,23.8095(秒),2),当,时,,缉私艇不可能追赶上走私船。,3),,,,,当,时,,,,缉私艇不可能追赶上走私船。,(b)用MATLAB软件求解析解,MATLAB软件5.3以上版本提供的解常微分方程解析解的指令是Dsolve,完整的调用格式是:dsolve(eqn1,eqn2,.)其中eqn1,eqn2,.是输入宗量,包括三部分:微分方程、初始条件、指定变量,若不指定变量,则默认小写字母t为独立变量.书P-69,微分方程的书写

8、格式规定:当y是因变量时,用“Dny”表示y的n阶导数.,例 求微分方程,的通解。,dsolve(Dy=x+x*y,x),Ans=-1+exp(1/2*x2)*C1,dsolve(Dx=1/2*(y/20)r-(20/y)r),x(20)=0,y),Ans=1/2*20(-r)*y(r+1)/(r+1)+1/2*20r/(r-1)*y*(1/y)r-20*r/(r2-1),(c)用MATLAB软件防真,当建立动态系统的微分方程模型很困难时,我们可以用计算机仿真法对系统进行分析研究.所谓计算机仿真就是利用计算机对实际动态系统的结构和行为进行编程、模拟和计算,以此来预测系统的行为效果.,追赶方向可

9、用方向余弦表示为:%两点形成的向量的方向余弦,时间步长为,,,则在时刻,时:,仿真算法:,第一步:设置时间步长,速度a,v及初始距离d,,第二步:,计算动点缉私艇D在时刻,时的坐标,,,计算走私船R在时刻,时的坐标,,,第三步:计算缉私艇与走私船这两个动点之间的距离:,根据事先给定的距离,判断缉私艇是否已经追上了走私船,从而判断退出循环还是让时间产生一个步长,返回到第二步继续进入下一次循环;,第四步:当从上述循环退出后,由点列,和,可分别绘,制成两条曲线即为缉私艇和走私船走过的轨迹曲线。,缉私艇初始位置,,,走私船初始位置,追击问题的数值模拟(P-66)clear;clf;d=120;v=90

10、;a=80;s0=8;%给出初始条件T=10;dt=0.001;%选取时间区间T(可以偏大一点),时间微元dtt=0:dt:T;%离散时间表tn=length(t);%离散时间表t长度x(1)=0;y(1)=d;s(1)=s0;%初始位置、初始距离for i=1:n x(i+1)=x(i)+v*dt*(s0+a*t(i)-x(i)/sqrt(s0+a*t(i)-x(i)2+y(i)2);y(i+1)=y(i)+v*dt*(-y(i)/sqrt(s0+a*t(i)-x(i)2+y(i)2);%递推算式、d=sqrt(s0+a*t(i)-x(i)2+y(i)2);%t(i)时刻的距离 if d0.

11、1 i*dt break end%判断是否已追上,并显示追上时的时间 s(i)=s0+a*t(i);endplot(x,y)%comet(x,y);,(e)结果分析,用求解析解的方法算得的解是最为精确的;用数值方法计算的结果依赖于迭代终值的设定,减小迭代终值可以提高计算精度;用计算机仿真法计算的结果依赖于时间迭代步长的选取和程序终止条件的设定,修改终止条件的设定和减小时间迭代步长可以提高计算精度,减小误差.,实验4-常微分方程数值解,4.刚性现象与刚性方程刚性现象 振动系统或包含电容、电感、电阻的电路系统的数学模型一般为:给定一组参数k=2000.5,r=1000,a=1,b=-1999.5,

12、f(t)=1.则(*1)的解为 稳态解 快瞬态解 慢瞬态解对快瞬态解:时间常数t1=1/2000=0.0005,计算到t=10t1=0.005时,该项已衰减到;对慢瞬态解:时间常数t2=2,计算到t=10t2=20时它才衰减到.用数值方法求解时,精度要达到,至少要算到t=20,需要14286步,这样大的计算量是由快瞬态解和慢瞬态解的衰减速度相差悬殊造成的,这现象称为刚性现象,相应的微分方程称为刚性方程.,实验4-常微分方程数值解,4.刚性现象与刚性方程刚性方程 振动、电路及化学反应中出现刚性现象的方程可表示为:(*2)其中x,f是n维向量,A是nxn矩阵.当A的特征根的实部 均为负数时,方程通

13、解中对应于 的值大的项为快瞬态解,值小的项为慢瞬态解,称 为刚性比.s10的方程便可认为是刚性方程,实际问题中可出现s达 的情况.刚性是问题本身的性质,与解法无关.但正是由于这种性质,用数值方法求解时需要计算到最慢瞬态解衰减成可忽略的小量为止,使得积分区间很长,而为保证计算的稳定性,当最快瞬态解的 很大时,又必须使步长充分小,这就出现了在大区间上用小步长计算的困难情况.,实验4-常微分方程数值解,4.刚性现象与刚性方程MatLab求解 Matlab中求解常微分方程的命令ode23,ode45.由于其步长是按稳定性要求和指定的精度加以调整的,所以用它们解刚性微分方程时步长会自动变小,对于大的区间

14、会导致计算时间很长.Matlab中有专门求解刚性方程的命令ode23s,ode15s,用法与 ode23,ode45相同.例 解方程特征根,刚性比.解析解为,实验4-常微分方程数值解,4.刚性现象与刚性方程MatLab求解function dx=stiff1(t,x)dx=x(1)+2*x(2);-(106+1)*x(1)-(106+2)*x(2);t=0:0.1:1;%t=0:0.1:10;x1=(106/4+1)*exp(-t)-exp(-106*t);x2=-(106/4+1)*exp(-t)+(106+1)/2*exp(-106*t);A=t;x1;x2x0=106/4,106/4-1/2;t,x=ode23s(stiff1,t,x0);%很快出结果B=t,x%t,y=ode23(stiff1,t,x0);%几十秒出结果%C=t,y%要计算0,10才能保证精度,ode23薛要很长很长时间.,谢谢同学们!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号