MATLAB求解微分方程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例1
dx 2 =1+ x dt
MATLAB命令:dsolve(‘Dx=1+x*x’) 结果:x=tan(t+C1)
d 2x + 2 x = x + 2 y + e −t 2 dt 例2 d y = 4 x + 3 y + 4e −t dt
MATLAB命令: MATLAB [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)',... 'Dy=4*x+3*y+4*exp(-t)'); 结果:x=-6*t*exp(-t)+C1*exp(-t)+C2*exp((1+6^(1/2))*t)+ C3*exp((1-6^(1/2))*t) y=6*t*exp(-t)-C1*exp(-t)+4*C2*exp((1+6^(1/2))*t)+ 2*C2*exp((1+6^(1/2))*t)*6^(1/2)+4*C3*exp((1-6^(1/2))*t)2*C3*exp((1-6^(1/2))*t)*6^(1/2)+1/2*exp(-t)
STEP3 调用MATLAB 函数ODE15S [T,Y]=ode15s('vdp',[0 3000],[2 0]); plot(T,Y(:,1))
图形结果
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5
0
500
1000
1500
2000
2500
3000
使用匿名函数,STEP2 和STEP3 可以合并为 • vdp2=@(t,y)[y(2),1000*(1-y(1)^2)*y(2)-y(1)]'; • % vdp2为匿名函数 [T,Y]=ode15s(vdp2,[0,3000],[2 ,0]); plot(T,Y(:,1))
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5
1.5
1
0.5
0 1 0 -1
0 10 20 30 40 50 60 70 80 90 100
1 -2 -3 -2 0 -1
用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6), 命令为:options=odeset(’reltol’,rt,’abstol’,at), rt,at:分别为设定的相对误差和绝对误差.
d 2x 2 dx 2 − 1000(1 − x ) + x = 0 例3 dt dt x(0) = 2; x' (0) = 0
dx = −y − z dt dy 例(Rossler方程) = x + ay 4 dt dz dt = b + ( x − c) z
选定a=0.3,b=2,c=3 初值x(0)=0,y(0)=0,z(0)=0
• a=0.3;b=2;c=3; • rossler=@(t,y)[-y(2)-y(3),y(1)+a*y(2),b+(y(1)c)*y(3)]'; • ts=[0 100];x0=[0 0 0]; • [t,y]=ode45(rossler,ts,x0); • plot(t,y(:,1),'r',t,y(:,2),'b',t,y(:,3),'g'); • figure • plot3(y(:,1),y(:,2),y(:,3)) •
用Matlab求微分方程的数值解 求微分方程的数值解
[t,x]=solver(Байду номын сангаасf’,ts,x0,options) , ( )
自变 量值 函数 值 ode45 ode23 ode113 ode15s ode23s 由待解 方程写 成的m文件名 ts=[t0,tf], t0、tf为自 变量的初 值和终值 函数的 初值
STEP1
=x, 令 y1=x,y2=y1’
化为一阶微分方程组:
y1 ' = y 2 y 2 ' = 1000 (1 − y 12 ) y 2 − y 1 y (0) = 2, y (0) = 0 1 2
• STEP2 建立M文件 • function dy=vdp(t,y) dy=[y(2); 1000*(1-y(1)^2)*y(2)-y(1);]
求微分方程的解析解
dsolve(‘方程 ‘方程 方程1’, 方程 方程2’,…‘方程 ‘初始条件’, ‘自变量’) 方程n’, 初始条件 初始条件’ 自变量 自变量’ 方程 方程 记号: 在表达微分方程时,用字母D表示求微分,D2、D3 等表示求高阶微分. 任何D后所跟的字母为因变量, 自变量可以指定或由系统规则选定为确省
相关文档
最新文档