MATLAB求解微分 方程.pptVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用Matlab求微分方程的数值解 STEP2 建立M文件 function dy=vdp(t,y) dy=[y(2); 1000*(1-y(1)^2)*y(2)-y(1);] STEP3 调用MATLAB 函数ODE15S [T,Y]=ode15s(vdp,[0 3000],[2 0]); plot(T,Y(:,1)) 图形结果 使用匿名函数,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)) 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)) 微分方程求解时参数传递方法一 假设上例中参数a,b,c的值在运行时确定,我们可以这样建立函数文件rosslersolve.m function rosslersolve(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=[0 100];x0=[0 0 0]; [t,y]=ode45(rossler2,ts,x0); plot3(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=[0 0 1e-10]; [t,y]=ode45(Lorenz,ts,x0,[],8/3,10,28); plot(y(:,1),y(:,2));figure;plot(y(:,1),y(:,3)); figure;plot(y(:,2),y(:,3)); 求微分方程的解析解 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*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) [t,x]=solver(’f’,ts,x0,options) ode45 ode23 ode113ode15sode23s 由待解方程写成的m-文件名 ts=[t0,tf],t0、tf为自变量的初值和终值 函数的初值 自变量值 函数值 用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6), 命令为:options=odeset(’reltol’,rt,’abstol’,at), rt,at:分别为设定的相对误差和绝对误差. STEP1 令 y1=x,y2=y1’ 选定a=0.3,b=2,c=3 初值x(0)=0,y(0)=0,z(0)=0

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档