数值实验报告(7)-解初值问题各种方法比较.pdf
《数值实验报告(7)-解初值问题各种方法比较.pdf》由会员分享,可在线阅读,更多相关《数值实验报告(7)-解初值问题各种方法比较.pdf(10页珍藏版)》请在三一文库上搜索。
1、数值实验报告数值实验报告七七 一、一、实验名称实验名称 解初值问题各种方法比较 二、二、实验目的实验目的 掌握了解各种解初值问题的方法,体会步长对问题解的影响。 三、三、实验内容实验内容 给定初值问题 2 2 ,12 (0)1 x dy yx ex dxx y 其精确解为 2( ) x yx ee 四、四、实验要求实验要求 分别按 (1)欧拉法,步长0.025,0.1hh; (2)改进的欧拉法,步长0.05,0.1hh; (3)四阶标准龙格-库塔法,步长0.1h ; 编写程序求在节点1 0.1 (1,2,10) k xk k 处的数值解及误差,并比较各方 法的优缺点。 用 MATLAB 中的内
2、部函数 dsolve 求此常微分方程初值问题的解并与 上述结果进行比较。 五、五、实验步骤实验步骤 1 1、欧拉法欧拉法 (1)建立主程序 function y = DEEuler(f, h,a,b,y0,varvec) %f:一阶常微分方程的一般表达式的右端函数 %h:积分步长 %a:自变量取值下限 %b:自变量取值上限 %y0:函数初值 %varvec:常微分方程的变量组 format long; N = (b-a)/h; y = zeros(N+1,1); x = a:h:b; y(1) = y0; for i=2:N+1 y(i)=y(i-1)+h*(2/x(i-1)*y(i-1)+x
3、(i-1).2*exp(x(i-1); end format short; (2)在 matlab 工作窗口输入: syms u v;z=2/u*v+u2*exp(u);yy=DEEuler(z,0.1,1,2,0,u,v) syms u v;z=2/u*v+u2*exp(u);yy=DEEuler(z,0.025,1,2,0,u,v) 运行后得出结果: h=0.1 yy = 0 0.2718 0.6848 1.2770 2.0935 3.1874 4.6208 6.4664 8.8091 11.7480 15.3982 h=0.025 yy = 0 0.0680 0.1445 0.2301
4、0.3255 0.4311 0.5478 0.6760 0.8165 0.9701 1.1374 1.3192 1.5164 1.7297 1.9601 2.2085 2.4757 2.7629 3.0709 3.4009 3.7539 4.1311 4.5337 4.9630 5.4201 5.9065 6.4235 6.9725 7.5551 8.1728 8.8272 9.5200 10.2529 11.0277 11.8464 12.7107 13.6228 14.5847 15.5985 16.6667 17.7914 2 2、改进的欧拉法、改进的欧拉法 (1)建立主程序 funct
5、ion y = DEModifEuler(f, h,a,b,y0,varvec) %f:一阶常微分方程的一般表达式的右端函数 %h:积分步长 %a:自变量取值下限 %b:自变量取值上限 %y0:函数初值 %varvec:常微分方程的变量组 format long; N = (b-a)/h; y = zeros(N+1,1); y(1) = y0; x = a:h:b; var = findsym(f); for i=2:N+1 v1=2/x(i-1)*y(i-1)+x(i-1).2*exp(x(i-1); t = y(i-1) + h*v1; v2=2/x(i)*t+x(i).2*exp(x(
6、i); y(i) = y(i-1)+h*(v1+v2)/2; end format short; (2)在 matlab 工作窗口输入: syms u v;z=2/u*v+u2*exp(u);yy=DEModifEuler(z,0.1,1,2,0,u,v) syms u v;z=2/u*v+u2*exp(u);yy=DEModifEuler(z,0.05,1,2,0,u,v) 运行后输出 h=0.1 yy = 0 0.3424 0.8583 1.5927 2.5983 3.9364 5.6789 7.9092 10.7245 14.2374 18.5789 h=0.05 yy = 0 0.15
7、32 0.3449 0.5801 0.8643 1.2032 1.6031 2.0710 2.6142 3.2406 3.9589 4.7785 5.7092 6.7621 7.9487 9.2816 10.7744 12.4418 14.2993 16.3641 18.6542 3 3、四阶标准龙格四阶标准龙格- -库塔法库塔法 (1)建立主程序 function y = DELGKT4_lungkuta(f, h,a,b,y0,varvec) %f:一阶常微分方程的一般表达式的右端函数 %h:积分步长 %a:自变量取值下限 %b:自变量取值上限 %y0:函数初值 %varvec:常微分方程
8、的变量组 format long; N = (b-a)/h; y = zeros(N+1,1); y(1) = y0; x = a:h:b; var = findsym(f); for i=2:N+1 K1 =2/x(i-1)*y(i-1)+x(i-1).2*exp(x(i-1); K2 = 2/(x(i-1)+h/2)*(y(i-1)+h/2*K1)+(x(i-1)+h/2).2*exp(x(i-1)+h/2); K3 =2/(x(i-1)+h/2)*(y(i-1)+h/2*K2)+(x(i-1)+h/2).2*exp(x(i-1)+h/2); K4 =2/(x(i-1)+h)*(y(i-1
9、)+h*K3)+(x(i-1)+h).2*exp(x(i-1)+h); y(i) = y(i-1)+h*(K1+2*K2+2*K3+K4)/6; end format short; (2)在 matlab 工作窗口输入: syms x y;z=2/x*y+x2*exp(x);yy=DELGKT4_lungkuta(z,0.1,1,2,0,x,y) 输出后结果: h=0.1 yy = 0 0.3459 0.8666 1.6072 2.6203 3.9676 5.7209 7.9638 10.7935 14.3229 18.6829 4 4、使用使用 dsolvedsolve 命令计算命令计算 (
10、1)h=0.1 在 matlab 工作窗口输入 y=dsolve(Dy=2/x*y+x2*exp(x),y(1)=0,x);x=1:0.1:2;yy=subs(y,x) 运行后输出结果 yy = 0 0.3459 0.8666 1.6072 2.6204 3.9677 5.7210 7.9639 10.7936 14.3231 18.6831 (2)h=0.05 在 matlab 工作窗口输入 y=dsolve(Dy=2/x*y+x2*exp(x),y(1)=0,x);x=1:0.05:2;yy=subs(y,x) 运行后输出结果 yy = 0 0.1537 0.3459 0.5818 0.8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 实验 报告 初值问题 各种 方法 比较
链接地址:https://www.31doc.com/p-6080148.html