




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章微分方程问题的解法,微分方程的解析解方法微分方程问题的数值解法微分方程问题算法概述四阶定步长Runge-Kutta算法及MATLAB实现一阶微分方程组的数值解微分方程转换特殊微分方程的数值解,7.1微分方程的解析解方法,格式:y=dsolve(f1,f2,fm)格式:指明自变量y=dsolve(f1,f2,fm,x)fi即可以描述微分方程,又可描述初始条件或边界条件。如:描述微分方程时描述条件时,例:symst;u=exp(-5*t)*cos(2*t+1)+5;uu=5*diff(u,t,2)+4*diff(u,t)+2*uuu=87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10symsty;y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y=,.87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10),y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y=,.87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1).+10,y(0)=3,Dy(0)=2,D2y(0)=0,D3y(0)=0),分别处理系数,如:n,d=rat(double(vpa(-445/26*cos(1)-51/13*sin(1)-69/2)ans=-8704185%rat()最接近有理数的分数判断误差:vpa(-445/26*cos(sym(1)-51/13*sin(1)-69/2+8704/185)ans=.114731975864790922564144636e-4,y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y=,.87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+.10,y(0)=1/2,Dy(pi)=1,D2y(2*pi)=0,Dy(2*pi)=1/5);如果用推导的方法求Ci的值,每个系数的解析解至少要写出10数行,故可采用有理式近似的方式表示.vpa(y,10)%有理近似值ans=1.196361839*exp(-5.*t)+.4166666667-.4785447354*sin(t)*cos(t)*exp(-5.*t)-.4519262218e-1*cos(2.*t)*exp(-5.*t)-2.392723677*cos(t)2*exp(-5.*t)+.2259631109*sin(2.*t)*exp(-5.*t)-473690.0893*exp(-3.*t)+31319.63786*exp(-2.*t)-219.1293619*exp(-1.*t)+442590.9059*exp(-4.*t),例:symstxx=dsolve(Dx=x*(1-x2)x=1/(1+exp(-2*t)*C1)(1/2)-1/(1+exp(-2*t)*C1)(1/2)symstx;x=dsolve(Dx=x*(1-x2)+1)Warning:Explicitsolutioncouldnotbefound;implicitsolutionreturned.InD:MATLAB6p5toolboxsymbolicdsolve.matline292x=t-Int(1/(a-a3+1),a=.x)+C1=0故只有部分非线性微分方程有解析解。,7.2微分方程问题的数值解法7.2.1微分方程问题算法概述,微分方程求解的误差与步长问题:,7.2.2四阶定步长Runge-Kutta算法及MATLAB实现,functiontout,yout=rk_4(odefile,tspan,y0)y0初值列向量t0=tspan(1);th=tspan(2);iflength(tspan)t_final=100;x0=0;0;1e-10;%t_final为设定的仿真终止时间t,x=ode45(lorenzeq,0,t_final,x0);plot(t,x),figure;%打开新图形窗口plot3(x(:,1),x(:,2),x(:,3);axis(1042-2020-2025);%根据实际数值手动设置坐标系,可采用comet3()函数绘制动画式的轨迹。comet3(x(:,1),x(:,2),x(:,3),描述微分方程是常微分方程初值问题数值求解的关键。f1=inline(-8/3*x(1)+x(2)*x(3);-10*x(2)+10*x(3);,.-x(1)*x(2)+28*x(2)-x(3),t,x);t_final=100;x0=0;0;1e-10;t,x=ode45(f1,0,t_final,x0);plot(t,x),figure;plot3(x(:,1),x(:,2),x(:,3);axis(1042-2020-2025);得出完全一致的结果。,7.2.3.3MATLAB下带有附加参数的微分方程求解,例:,编写函数functionxdot=lorenz1(t,x,flag,beta,rho,sigma)flag变量是不能省略的xdot=-beta*x(1)+x(2)*x(3);-rho*x(2)+rho*x(3);-x(1)*x(2)+sigma*x(2)-x(3);求微分方程:t_final=100;x0=0;0;1e-10;b2=2;r2=5;s2=20;t2,x2=ode45(lorenz1,0,t_final,x0,b2,r2,s2);plot(t2,x2),options位置为,表示不需修改控制选项figure;plot3(x2(:,1),x2(:,2),x2(:,3);axis(072-2022-3540);,f2=inline(-beta*x(1)+x(2)*x(3);-rho*x(2)+rho*x(3);,.-x(1)*x(2)+sigma*x(2)-x(3),t,x,flag,beta,rho,sigma);flag变量是不能省略的,7.2.4微分方程转换7.2.4.1单个高阶常微分方程处理方法,例:函数描述为:functiony=vdp_eq(t,x,flag,mu)y=x(2);-mu*(x(1)2-1)*x(2)-x(1);x0=-0.2;-0.7;t_final=20;mu=1;t1,y1=ode45(vdp_eq,0,t_final,x0,mu);mu=2;t2,y2=ode45(vdp_eq,0,t_final,x0,mu);plot(t1,y1,t2,y2,:)figure;plot(y1(:,1),y1(:,2),y2(:,1),y2(:,2),:),x0=2;0;t_final=3000;mu=1000;t,y=ode45(vdp_eq,0,t_final,x0,mu);由于变步长所采用的步长过小,所需时间较长,导致输出的y矩阵过大,超出计算机存储空间容量。所以不适合采用ode45()来求解,可用刚性方程求解算法ode15s()。,7.2.4.2高阶常微分方程组的变换方法,例:,描述函数:functiondx=apolloeq(t,x)mu=1/82.45;mu1=1-mu;r1=sqrt(x(1)+mu)2+x(3)2);r2=sqrt(x(1)-mu1)2+x(3)2);dx=x(2);2*x(4)+x(1)-mu1*(x(1)+mu)/r13-mu*(x(1)-mu1)/r23;x(4);-2*x(2)+x(3)-mu1*x(3)/r13-mu*x(3)/r23;,求解:x0=1.2;0;0;-1.04935751;tic,t,y=ode45(apolloeq,0,20,x0);tocelapsed_time=0.8310length(t),plot(y(:,1),y(:,3)ans=689得出的轨道不正确,默认精度RelTol设置得太大,从而导致的误差传递,可减小该值。,改变精度:options=odeset;options.RelTol=1e-6;tic,t1,y1=ode45(apolloeq,0,20,x0,options);tocelapsed_time=0.8110length(t1),plot(y1(:,1),y1(:,3),ans=1873,min(diff(t1)ans=1.8927e-004plot(t1(1:end-1),diff(t1),例:,x0=1.2;0;0;-1.04935751;tic,t1,y1=rk_4(apolloeq,0,20,0.01,x0);tocelapsed_time=4.2570plot(y1(:,1),y1(:,3)%绘制出轨迹曲线显而易见,这样求解是错误的,应该采用更小的步长。,tic,t2,y2=rk_4(apolloeq,0,20,0.001,x0);tocelapsed_time=124.4990计算时间过长plot(y2(:,1),y2(:,3)%绘制出轨迹曲线严格说来某些点仍不满足106的误差限,所以求解常微分方程组时建议采用变步长算法,而不是定步长算法。,例:,用MATLAB符号工具箱求解,令symsx1x2x3x4dx,dy=solve(dx+2*x4*x1=2*dy,dx*x4+3*x2*dy+x1*x4-x3=5,dx,dy)dx=-2*(3*x4*x1*x2+x4*x1-x3-5)/(2*x4+3*x2)dy=(2*x42*x1-x4*x1+x3+5)/(2*x4+3*x2)对于更复杂的问题来说,手工变换的难度将很大,所以如有可能,可采用计算机去求解有关方程,获得解析解。如不能得到解析解,也需要在描写一阶常微分方程组时列写出式子,得出问题的数值解。,7.3特殊微分方程的数值解7.3.1刚性微分方程的求解,刚性微分方程一类特殊的常微分方程,其中一些解变化缓慢,另一些变化快,且相差悬殊,这类方程常常称为刚性方程。MATLAB采用求解函数ode15s(),该函数的调用格式和ode45()完全一致。t,x=ode15s(Fun,t0,tf,x0,options,p1,p2,),例:计算h_opt=odeset;h_opt.RelTol=1e-6;x0=2;0;t_final=3000;tic,mu=1000;t,y=ode15s(vdp_eq,0,t_final,x0,h_opt,mu);tocelapsed_time=2.5240,作图plot(t,y(:,1);figure;plot(t,y(:,2)y(:,1)曲线变化较平滑,y(:,2)变化在某些点上较快。,例:定义函数functiondy=c7exstf2(t,y)dy=0.04*(1-y(1)-(1-y(2)*y(1)+0.0001*(1-y(2)2;-104*y(1)+3000*(1-y(2)2;,方法一tic,t2,y2=ode45(c7exstf2,0,100,0;1);tocelapsed_time=229.4700length(t2),plot(t2,y2)ans=356941,步长分析:formatlong,min(diff(t2),max(diff(t2)ans=0.000222206938840.00214971787184plot(t2(1:end-1),diff(t2),方法二,用ode15s()代替ode45()opt=odeset;opt.RelTol=1e-6;tic,t1,y1=ode15s(c7exstf2,0,10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚诉讼中夫妻共同债务承担及财产分割起诉协议
- 码头场地租赁合同附带集装箱装卸作业及仓储服务
- 线上线下教育合作合同补充协议及教学资源共享协议
- 码头经营场地租赁与船舶租赁及管理合同
- 离婚协议解除与财产分割法律咨询合同
- 房地产开发项目销售合同签订流程及购房者权益保障
- 园林现场施工课件
- 保密新标准培训
- 第05章 生物化学诊断试剂的研制
- 2025年中医外科拔罐和针灸操作技能考核卷答案及解析
- 第6课 戊戌变法 课件(内嵌视频) 统编版初中历史八年级上册
- 2025年陪诊师资格证考试题库(附答案)
- 2025年人教版音乐四年级上册教学计划(含进度表)
- 妇科抗生素使用课件
- 高中物理课程标准解读与教学建议
- 2025 - 2026学年教科版科学三年级上册教学计划
- 2025年桥式起重机理论考试试题及答案
- 住培绩效管理办法
- 涪陵殡葬管理办法
- 2025年工会财务知识竞赛考试题库及参考答案
- 《城市轨道交通初期运营客流预测要求》编制说明
评论
0/150
提交评论