微分方程作业

上传人:飞*** 文档编号:47751162 上传时间:2018-07-04 格式:PDF 页数:10 大小:556.56KB
返回 下载 相关 举报
微分方程作业_第1页
第1页 / 共10页
微分方程作业_第2页
第2页 / 共10页
微分方程作业_第3页
第3页 / 共10页
微分方程作业_第4页
第4页 / 共10页
微分方程作业_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《微分方程作业》由会员分享,可在线阅读,更多相关《微分方程作业(10页珍藏版)》请在金锄头文库上搜索。

1、P10 习题1.用 Euler 法和改进的Euler 法求 u=-5u (0t 1),u(0)=1的数值解, 步长 h=0.1,0.05;并比较两个算法的精度。解: function du= Euler_fun1(t,u)du=-5*u;clear;h=0.1 ;tend=1;N=1/h;t(1)=0;u(1)=1;t=h.*(0:N); for n=1:Nu(n+1)=u(n)+h*Euler_fun1(t(n),u(n);endplot(t,u, * );hold onfor n=1:Nv(1)=u(n)+h*Euler_fun1(t(n),u(n);for k=1: 6v(k+1)=u(

2、n)+h/2*(Euler_fun1(t(n),u(n)+Euler_fun1(t(n+1),v(k);endu(n+1)=v(k+1);endplot(t,u, o ); sol=dsolve(Du=-5*u, u(0)=1);u_real=eval(sol);plot(t,u_real, r ); 将上述 h 换为0.05得:由图像知道 : 显然改进的 Euler 法要比 Euler 法精确度要高; 3. 将 u=-u (0t 1) , u(0)=0,u(0)=1 化为一阶方程组, 并用 Euler 法和改进的的Euler法求解,步长h=0.1,0.05;并比较两个算法的精度。 解:fun

3、ction du=fun31(y)du=y;function dy=fun32(u)dy=-u;clear;h=0.1;tend=1;N=1/h;t(1)=0;u(1)=0;y(1)=;t=h.*(0:N); for n=1:Nu(n+1)=u(n)+h*y(n);y(n+1)=y(n)+h*(-u(n);endplot(t,u,*);hold onfor n=1:Nv(1)=u(n)+h*fun31(y(n);w(1)=y(n)+h*fun32(u(n);for k=1:6v(k+1)=u(n)+h/2*(fun31(y(n)+fun31(.w(k);w(k+1)=y(n)+h/2*(fun

4、32(u(n)+fun32(.v(k);endu(n+1)=v(k+1);y(n+1)=w(k+1);endplot(t,u,o); sol=dsolve(D2u=-u, u(0)=0, Du(0)=1;u_real=eval(sol);plot(t,u_real,r); 将上述 h 换为0.05得:由图像可以知道 : 显然改进的 Euler 法要比 Euler 法精确度要高;实习题(二)1. 取步长1.0h,分别用Euler 法和改进的Euler 法求下列初值问题的解,并与真解相比较 . (1) ,1)0(, 10,2uxuxuu真解xxu21)(;解:function du=fun1(x,

5、u)du=u-2*x/u;clear;h=0.1;xend=1;N=1/h;x(1)=0;u(1)=1;x=h.*(0:N); %Eluer 法% for n=1:Nu(n+1)=u(n)+h*fun1(x(n),u(n);endplot(x,u,*);hold on %改进的 Eluer 法% for n=1:Nv(1)=u(n)+h*fun1(x(n),u(n);for k=1:6v(k+1)=u(n)+h/2*(fun1(x(n),u(n)+fun1(x(n+1),v(k);endu(n+1)=v(k+1);endplot(x,u,o);hold on %真解% u_real=sqrt(

6、1+2*x);plot(x,u_real,r); 由图像可以知道 : 显然改进的 Euler 法要比 Euler 法精 确度要高;(2),2)1(,21,22uxuxxuu真解31 )ln38()(xxxu;解:function du=fun2(x,u)du=(u/x)-x.2/u.2;clear;h=0.1;N=1/h;x=1:h:2;x(1)=1;u(1)=2; for n=1:Nu(n+1)=u(n)+h*fun2(x(n),u(n);endplot(x,u,*);hold on for n=1:Nv(1)=u(n)+h*fun2(x(n),u(n);for k=1:6v(k+1)=u(

7、n)+h/2*(fun2(x(n),u(n)+fun2(x(n+1),v(k);endu(n+1)=v(k+1);endplot(x,u,o);hold on u_real=x.*(8-3.*log(x).(1/3);plot(x,u_real,r); 由图像可知:改进的 Euler 法和 Euler 法都很接近真值。(3), 1)1(,5.11,222uxuxxu u真解31 223 )34()(xxxu. 解:function du=fun3(x,u)du=u/(2*x)-x/(2*u2);clear;h=0.1;N=0.5/h; x=1:h:1.5; x(1)=1;u(1)=1; for

8、 n=1:Nu(n+1)=u(n)+h*fun3(x(n),u(n);endplot(x,u,*);hold on for n=1:Nv(1)=u(n)+h*fun3(x(n),u(n);for k=1:6v(k+1)=u(n)+h/2*(fun3(x(n),u(n)+fun3(x(n+1),v(k);endu(n+1)=v(k+1);endplot(x,u,o);hold on u_real=(4*x.(3/2)-3*x.2).(1/3);plot(x,u_real,r); 由图像可以知道 : 显然改进的 Euler 法要比 Euler 法精 确度要高;2. 试用预报校正格式 (1.20)

9、解初值问题并与 Euler 格式比较精度,取h=0.1 。作业要求:写出程序,列表或用图 形显示结果,并给出图或表所说明的结果。 解:function du=Euler_fun2(t,u)du=-u+t+1; clear;h=0.1;tend=1;N=1/h;t(1)=0;u(1)=1;t=h.*(0:N); for n=1:Nu(n+1)=u(n)+h*Euler_fun2(t(n),u(n);endplot(t,u,*);hold on for n=1:Nu0(n+1)=u(n)+h*Euler_fun2(t(n),u(n);u(n+1)=u(n)+h/2*(Euler_fun2(t(n)

10、,u(n)+Euler_fun2(t(n+1),u0(n+1);endplot(t,u,o);hold on sol=dsolve(Du=-u+t+1, u(0)=1);u_real=eval(sol);plot(t,u_real,r); 由图像可以知道 : 显然预报校正格式要比 Euler 法精确度要高;010,1|1tuuttuP37 例 4.1 用四级四阶 Runge-Kutta 法计算初值问题:u=4tu0.5,0 t 2, u(0)=1. 取 h=0.1,0.5,1.精确解为 u(t)=(1+t2)2作业要求:写出程序,列表或用图形显示结果,并给出图或表所说明的结果. 解:funct

11、ion du=fun4(t,u)du=4*t*u.(1/2);clear;h=0.1;N=2/h;t=0:h:2;t(1)=0;u(1)=1;for n=1:Nk1=fun4(t(n),u(n);k2=fun4(t(n)+0.5*h,u(n)+0.5*h*k1);k3=fun4(t(n)+0.5*h,u(n)+0.5*h*k2);k4=fun4(t(n)+h,u(n)+h*k3);u(n+1)=u(n)+h*(k1+2*k2+2*k3+k4)/6; endplot(t,u,*);hold on u_real=(1+t.2).2;plot(t,u_real,r); 将上述 h 换为 0.5 后图像为:将上述 h 换为 1 后图像为:从上述图像来看: 第一幅图说明四级四阶Runge-Kutta 法精度很高;后面两幅图说明了步长h 取 的越小越逼近精确值。

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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