matlab在数值分析中的应用Runge-kutta.ppt
《matlab在数值分析中的应用Runge-kutta.ppt》由会员分享,可在线阅读,更多相关《matlab在数值分析中的应用Runge-kutta.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 微分方程问题的解法微分方程的解析解方法微分方程问题的数值解法微分方程问题算法概述四阶定步长 Runge-Kutta算法及 MATLAB 实现一阶微分方程组的数值解微分方程转换特殊微分方程的数值解7.1 微分方程的解析解方法格式:y=dsolve(f1,f2,fm)格式:指明自变量 y=dsolve(f1,f2,fm,x)fi即可以描述微分方程,又可描述初始条件或边界条件。如:描述微分方程时 描述条件时 例:syms t;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)+
2、92*exp(-5*t)*sin(2*t+1)+10 syms t y;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
3、*sin(1)-69/2)ans=-8704 185%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数行,
4、故可采用有理式近似 的方式表示.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)例:
5、syms t x x=dsolve(Dx=x*(1-x2)x=1/(1+exp(-2*t)*C1)(1/2)-1/(1+exp(-2*t)*C1)(1/2)syms t x;x=dsolve(Dx=x*(1-x2)+1)Warning:Explicit solution could not be found;implicit solution returned.In D:MATLAB6p5toolboxsymbolicdsolve.m at line 292x=t-Int(1/(a-a3+1),a=.x)+C1=0故只有部分非线性微分方程有解析解。7.2 微分方程问题的数值解法7.2.1 微分
6、方程问题算法概述微分方程求解的误差与步长问题:7.2.2 四阶定步长Runge-Kutta算法 及 MATLAB 实现 function tout,yout=rk_4(odefile,tspan,y0)y0初值列向量 t0=tspan(1);th=tspan(2);if length(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(10 42-20 20-20 2
7、5);%根据实际数值手动设置坐标系可采用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(10 42-20 20-20 25);得出完全一致的结果。7.
8、2.3.3 MATLAB 下带有附加参数的微分方程求解例:编写函数function xdot=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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 数值 分析 中的 应用 Runge kutta
限制150内