资源描述:
《MATLAB求解微分方程.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、求微分方程的解析解dsolve(‘方程1’,‘方程2’,…‘方程n’,‘初始条件’,‘自变量’)记号:在表达微分方程时,用字母D表示求微分,D2、D3等表示求高阶微分.任何D后所跟的字母为因变量,自变量可以指定或由系统规则选定为确省MATLAB命令:dsolve(‘Dx=1+x*x’)结果:x=tan(t+C1)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
2、*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)用Matlab求微分方程的数值解[t,x]=solver(’f’,ts,x0,options)ode45ode23ode113ode15sode23s由待解方程写成的m-文件名ts=[t0,tf],t0、tf为自变量的初值和终值函数的
3、初值自变量值函数值用于设定误差限(缺省时设定相对误差10-3,绝对误差10-6),命令为:options=odeset(’reltol’,rt,’abstol’,at),rt,at:分别为设定的相对误差和绝对误差.STEP1令y1=x,y2=y1’STEP2建立M文件functiondy=vdp(t,y)dy=[y(2);1000*(1-y(1)^2)*y(2)-y(1);]STEP3调用MATLAB函数ODE15S[T,Y]=ode15s('vdp',[03000],[20]);plot(T,Y(:,1))图形结果使用匿名函数,STEP2和STEP3可以合并为
4、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))选定a=0.3,b=2,c=3初值x(0)=0,y(0)=0,z(0)=0a=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=[0100];x0=[000];[t,y]=ode45(rossler,ts,x0);plot(t,y(:,1),'r',t,y(:,2),'
5、b',t,y(:,3),'g');figureplot3(y(:,1),y(:,2),y(:,3))微分方程求解时参数传递方法一假设上例中参数a,b,c的值在运行时确定,我们可以这样建立函数文件rosslersolve.mfunctionrosslersolve(a,b,c)rossler1=@(t,y,a,b,c)[-y(2)-y(3),y(1)+a*y(2),b+(y(1)-c)*y(3)]';rossler2=@(t,y)rossler1(t,y,a,b,c);ts=[0100];x0=[000];[t,y]=ode45(rossler2,ts,x0);p
6、lot3(y(:,1),y(:,2),y(:,3))Matlab命令行输入>>rosslersolve(0.2,2,3)求解参数a,b,c的值为0.2,2,3时的rossler方程参数传递方法二Lorenz=@(t,y,beta,rho,sigma)...[-beta*y(1)+y(2)*y(3)-rho*(y(2)-y(3))-y(1)*y(2)+sigma*y(2)-y(3)];ts=[0,100];x0=[001e-10];[t,y]=ode45(Lorenz,ts,x0,[],8/3,10,28);plot(y(:,1),y(:,2));figure;p
7、lot(y(:,1),y(:,3));figure;plot(y(:,2),y(:,3));