MATLAB简介7数值法求解微分方程及微分方程组

上传人:ni****g 文档编号:568334712 上传时间:2024-07-24 格式:PPT 页数:20 大小:107KB
返回 下载 相关 举报
MATLAB简介7数值法求解微分方程及微分方程组_第1页
第1页 / 共20页
MATLAB简介7数值法求解微分方程及微分方程组_第2页
第2页 / 共20页
MATLAB简介7数值法求解微分方程及微分方程组_第3页
第3页 / 共20页
MATLAB简介7数值法求解微分方程及微分方程组_第4页
第4页 / 共20页
MATLAB简介7数值法求解微分方程及微分方程组_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《MATLAB简介7数值法求解微分方程及微分方程组》由会员分享,可在线阅读,更多相关《MATLAB简介7数值法求解微分方程及微分方程组(20页珍藏版)》请在金锄头文库上搜索。

1、Matlab解微分方程解微分方程除了上述的已知除了上述的已知ODE外,还须有起始条件外,还须有起始条件y0=y(x0)才能解方程式,即是在才能解方程式,即是在x=x0时,时,y(x)=y0。上述各个方程式。上述各个方程式的解析解的解析解(analyticalsolution)如下:如下:阮奇阮奇-库达库达(Runge-Kutta)方法是最通用的解方法是最通用的解ODE的方法,它可以依计算精确度的要求有低的方法,它可以依计算精确度的要求有低阶到高阶的各个阶到高阶的各个计算式,计算式,MATLAB应用阮奇应用阮奇-库达法的函数有库达法的函数有ode23,ode45,其中,其中ode23是同时以二阶

2、及三阶阮奇是同时以二阶及三阶阮奇-库达法求解,而库达法求解,而ode45则是以四阶及五阶阮奇则是以四阶及五阶阮奇-库达法求解。其语法为库达法求解。其语法为ode23(dy,x0,xn,y0),其中其中dy为为ODE中的等式右边的函数(如之中的等式右边的函数(如之前前介绍的),介绍的),x0,xn是要解是要解ODE的区间的区间x0, xn的二个端点,的二个端点,y0是起始值是起始值(y0=y(x0)。而。而ode45的语法的语法与与ode23相同。相同。例一、要在区间例一、要在区间2,4解以下的解以下的ODE:%m-function,g1.mfunctiondy=g1(x,y)dy=3*x.2;

3、x,num_y=ode23(g1,2,4,0.5);anl_y=x.3-7.5;plot(x,num_y,b:,x,anl_y,r-) title(Solutionofg1)xlabel(x),ylabel(y=f(x),gridY=3x2例二、要在区间例二、要在区间0,5解以下的解以下的ODE:%m-function,g2.mfunctiondy=g2(x,y)dy=-0.131*y;x,num_y=ode23(g2,0,5,4);anl_y=4*exp(-0.131*x);plot(x,num_y,x,anl_y,o)title(Solutionofg2)xlabel(x),ylabel(

4、y=f(x),gridY=-0.13y例三、要在区间例三、要在区间0,2解以下的解以下的ODE:%m-function,g3.mfunctiondy=g3(x,y)dy=2*x*cos(y)2;x,num_y=ode23(g3,0,2,pi/4);anl_y=atan(x.*x+1);plot(x,num_y,b:,x,anl_y,r-)title(Solutionofg3)xlabel(x),ylabel(y=f(x),gridY=2xcos2y例四、要在区间例四、要在区间0,3解以下的解以下的ODE:%m-function,g4.mfunctiondy=g4(x,y)dy=3*y+exp(

5、2*x);x,num_y=ode23(g4,0,3,3);anl_y=4*exp(3*x)-exp(2*x);plot(x,num_y,x,anl_y,o)title(Solutionofg4)xlabel(x),ylabel(y=f(x),griY=3y+e2x如果将上述方法改以如果将上述方法改以ode45计算,你可能无法察计算,你可能无法察觉出其与觉出其与ode23的解之间的差异,那是因为我们的解之间的差异,那是因为我们选的选的ODE代表的函数分布变化平缓,所以高阶代表的函数分布变化平缓,所以高阶方法就显现不出其优点。不过以二者在计算的误方法就显现不出其优点。不过以二者在计算的误差上做比较

6、,差上做比较,ode45的误差量级会比的误差量级会比ode23要小。要小。以下是几个例子:以下是几个例子:%m-function,g1.mfunctiondy=g1(x,y)dy=3*x.2;%m-file,odes1.m;%Solveanodeusingode23andode45clgx1,num_y1=ode23(g1,2,4,0.5);anl_y1=x1.3-7.5;error_1=abs(anl_y1-num_y1)./abs(anl_y1);%ode23的计算误差的计算误差x2,num_y2=ode45(g1,2,4,0.5);anl_y2=x2.3-7.5;%注意注意x2个数与个数

7、与x1不一定相同不一定相同error_2=abs(anl_y2-num_y2)./abs(anl_y2);%ode45的计算误差的计算误差holdonsubplot(2,2,1)plot(x1,num_y1,x1,anl_y1,o)title(ODE23solution),ylabel(y)subplot(2,2,2)plot(x1,error_y1)%注意二种方法的误差注意二种方法的误差title(ODE23error),ylabel(y)%ode23的误差的的误差的量级为量级为1.e-16subplot(2,2,3)plot(x2,num_y2,x2,anl_y2,o)title(ODE4

8、5solution),ylabel(y)subplot(2,2,4)plot(x1,error_y2)title(ODE45error),ylabel(y)%ode45的解没有的解没有误差误差holdoff另一个例子:另一个例子:%m-function,g5.mfunctiondy=g5(x,y)dy=-y+2*cos(x);%m-file,odes1.m%Solveanodeusingode23andode45clgx1,num_y1=ode23(g5,0,5,1);anl_y1=sin(x1)+cos(x1);error_1=abs(anl_y1-num_y1)./abs(anl_y1);

9、x2,num_y2=ode45(g5,0,5,1);anl_y2=sin(x2)+cos(x2);error_2=abs(anl_y2-num_y2)./abs(anl_y2);holdonsubplot(2,2,1)plot(x1,num_y1,x1,anl_y1,o)title(ODE23solution),ylabel(y)subplot(2,2,2)plot(x1,error_1)%注意二种方法的误差注意二种方法的误差title(ODE23error),ylabel(y)%ode23的误的误差的量级为差的量级为1.e-4subplot(2,2,3)plot(x2,num_y2,x2,a

10、nl_y2,o)title(ODE45solution),ylabel(y)subplot(2,2,4)plot(x2,error_2)title(ODE45error),ylabel(y)%ode45的误差的误差的量级为的量级为1.e-6holdoff高阶常微分方程式高阶常微分方程式一个高阶常微分方程式可以利用变数改变一个高阶常微分方程式可以利用变数改变(changeofvariables)方式改写成一组联立的一方式改写成一组联立的一阶常微分方程式。阶常微分方程式。例如以下的例如以下的n阶方程式阶方程式以下即是解二阶以下即是解二阶ODE的解法的解法:u_prime(1)=u(1)*(1-u(

11、2)2)-u(2);u_prime(2)=u(1);u(1)=y=y*(1-y2)-y;y=u(1);functionu_prime=eqns2(x,u)u_prime=u(1)*(1-u(2)2)-u(2);u(1);initial=00.25;x,num_y=ode23(eqns2,0,20,initial);subplot(2,1,1),plot(x,num_y(:,1)title(1stderivativeofy),xlabel(x),gridsubplot(2,1,2),plot(x,num_y(:,2)title(y),xlabel(x),grid3利用利用MatlabM文件形式文件形式用四阶用四阶Runge-Kutta法法计算以上计算以上初值问题初值问题的解的解1练习练习Matlab解微分方程解微分方程2用用Matlab解微分方程组解微分方程组

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号