数学与计算科学学院 实 验 报 告
实验项目名称 常微分方程数值解 所属课程名称 数值方法B 实 验 类 型 验证 实 验 日 期 2013.11.11
班 级 学 号 姓 名 成 绩 1
一、实验概述: 【实验目的】
1.掌握求解常微分方程的欧拉法; 2.掌握求解常微分方程的预估校正法; 3.掌握求解常微分方程的经典的四阶龙格库塔法; 4.能用C语言或MATLAB将上述三种算法用程序运行出来; 5.将算法实例化,并得出三种算法的相关关系,如收敛性、精度等; 6.附带书中例题的源程序见附录1。
【实验原理】 1.欧拉格式 (1)显式欧拉格式:1(,)nnnnyyhfxy
局部截断误差:22211()()()()22nnnhhyxyyyxoh (2)隐式欧拉格式:111(,)nnnnyyhfxy 局部截断误差:2211()()()2nnnhyxyyxoh
2.预估校正法 预估:1(,)nnnnyyhfxy 校正:111[(,)(,)]2nnnnnnhyyfxyfxy 2
统一格式:1[(,)(,(,))]2nnnnnnnnhyyfxyfxhyhfxy
平均化格式:11(,),(,),1().2pnnncnnpnpcyyhfxyyyhfxyyyy
3.四阶龙格库塔方法的格式(经典格式)
112341213243(22),6(,),(,),22(,),22(,).nnnnnnnnnnhyyKKKKKfxyhhKfxyKhhKfxyKKfxhyhK
【实验环境】 1.硬件环境: HP Microsoft 76481-640-8834005-23929 HP Corporation Intel(R) Core(TM) I5-2400 CPU @ 3.10GHz 3.09GHz,3.16GB的内存
2.软件环境: Microsoft Windows XP 3
Professional 版本 2002 Service Pack 3
二、实验内容: 【实验方案】
方案一: 用欧拉法,预估校正法,经典的四阶龙格库塔方法求解下列ODE问题:
例题:在区间【0,1】上以h=0.1用欧拉法,预估校正法,经典的四阶龙格库塔
法求解微分方程 dy/dx=-y+x+1,初值y(0)=1;其精确解为y=x+exp(-x),且将计算结果与精确解进行比较,对三个算法的收敛性的进行分析比较。
方案二: 用欧拉法,预估校正法, 经典的四阶龙格库塔方法求解初值问题 dy/dx=xxey,初值y(0)=1; 将计算结果与精确解为21(2)2xxe
比较在区
间[0,1]上分别取步长h=0.1; 0.05时进行计算。对三个算法的收敛性进行分析比较,
【实验过程】(实验步骤、记录、数据、分析) 注:以下图形是通过Excel表格处理数据得出,并未通过MATLAB编程序所得! 1、1(0)1dyyxdxy 4
由题可知精确解为:xyxe,当x=0时,y(x)=0。
h=0.1 表1 h=0.1时三个方法与精确值的真值表
图1 h=0.1时三个方法走势图 h=0.05(此时将源程序中i的范围进行扩大,即for(i=0;i<20;i++))
步长 Euler法 预估校正法 经典四阶库 精确值 0.1 1.010000 1.005000 1.004838 1.249080 0.2 1.029000 1.019025 1.018731 1.055455 0.3 1.056100 1.041218 1.040818 1.091217 0.4 1.090490 1.070802 1.070320 1.131803 0.5 1.131441 1.107076 1.106531 1.176851 0.6 1.178297 1.149404 1.148812 1.226025 0.7 1.230467 1.197211 1.196586 1.279016 0.8 1.287421 1.249975 1.249329 1.335536 0.9 1.348678 1.307228 1.306570 1.395322 1.0 1.413811 1.368541 1.367880 1.458127 5
表2 h=0.05时三个方法与精确值的真值表 步长 Euler法 预估校正法 经典四阶库 精确值 0.05 1.002500 1.001250 1.001229 1.011721 0.10 1.007375 1.004877 1.004837 1.024908 0.15 1.014506 1.010764 1.010708 1.039504 0.20 1.023781 1.018802 1.018731 1.055455 0.25 1.035092 1.028885 1.028801 1.072710 0.30 1.048337 1.040915 1.040818 1.091217 0.35 1.063421 1.054795 1.054688 1.110931 0.40 1.080250 1.070436 1.070320 1.131801 0.45 1.098737 1.087752 1.087628 1.153791 0.50 1.118800 1.106662 1.106531 1.176851 0.55 1.140360 1.127087 1.126950 1.200942 0.60 1.163342 1.148954 1.148812 1.226025 0.65 1.187675 1.172193 1.172046 1.252062 0.70 1.213291 1.196736 1.196585 1.279016 0.75 1.240127 1.222520 1.222367 1.306852 0.80 1.268121 1.249485 1.249329 1.335536 0.85 1.297215 1.277572 1.277415 1.365037 0.90 1.327354 1.306728 1.306570 1.395322 0.95 1.358486 1.336900 1.336741 1.426362 1.00 1.390562 1.368039 1.367880 1.458127
图2 h=0.05时三个方法走势图 6
2、(0)1xdyxeydxy 由题可知精确解为:21(2)2xxe,当x=0时,y(x)=0。 h=0.1 表3 h=0.1时三个方法与精确值的真值表 步长 Euler法 预估校正法 经典四阶库 精确值 0.1 0.900000 0.909625 0.909428 0.929533 0.2 0.819249 0.835927 0.835593 0.872564 0.3 0.754433 0.776081 0.775655 0.826822 0.4 0.702726 0.727671 0.727189 0.790348 0.5 0.661726 0.688636 0.688127 0.761457 0.6 0.629396 0.657225 0.656711 0.738709 0.7 0.604018 0.631957 0.631453 0.720874 0.8 0.584147 0.611582 0.611100 0.706908 0.9 0.568575 0.595050 0.594599 0.695927 1.0 0.556297 0.581487 0.581072 0.687191 7
图3 h=0.1时三个方法走势图 h=0.05(此时将源程序中i的范围进行扩大,即for(i=0;i<20;i++)) 表4 h=0.05时三个方法与精确值的真值表 步长 Euler法 预估校正法 经典四阶库 精确值 0.05 0.950000 0.952452 0.952427 0.962924 0.10 0.904904 0.909474 0.909428 0.929533 0.15 0.864284 0.870670 0.870606 0.899511 0.20 0.827741 0.835671 0.835592 0.872564 0.25 0.794908 0.804137 0.804047 0.848419 0.30 0.765447 0.775755 0.775655 0.826822 0.35 0.739043 0.750232 0.750125 0.807538 0.40 0.715407 0.727302 0.727189 0.790348 0.45 0.694272 0.706715 0.706599 0.775050 0.50 0.675394 0.688245 0.688126 0.761457 0.55 0.658546 0.671682 0.671561 0.749397 0.60 0.643519 0.656830 0.656710 0.738709 0.65 0.630124 0.643514 0.643395 0.729247 0.70 0.618185 0.631570 0.631453 0.720874