当前位置:文档之家› 计算方法-常微分方程的差分方法实验

计算方法-常微分方程的差分方法实验

实验三 常微分方程的差分方法实验
一. 实验目的
(1)深入理解常微分方程的差分方法的原理,学会用差分方法解决某些实际的常微分方程问题,比较这些方法解题的不同之处。

(2)熟悉Matlab 编程环境,利用Matlab 实现具体的常微分方程。

二. 实验要求
用Matlab 软件实现欧拉方法、改进的欧拉方法、龙格-库塔方法和亚当姆斯方法,并用实例在计算机上计算。

三. 实验内容
1. 实验题目
(1)取h =0.1,用欧拉方法、改进的欧拉方法、四阶龙格-库塔方法求解初值问题:
⎪⎩⎪⎨⎧=-+='0
)0(21122y y x y 40≤≤x 并与精确解2
1x x y +=比较计算结果 A.欧拉方法:
a .编写文件Euler.m,内容如下所示:
b.B
b.编写文件
f3.m:
c.编写文件
solvef3(x):
d.运行如下所示:
可见精度是比较粗糙的,具有两位有效数字;
B.改进的欧拉方法
a.编写文件MendEuler.m,内容如下所示:
c.运行如下:
可见部分值具有3为有效数字了
C.四阶龙格-库塔方法
a.编写文件Rungkuta4.m,内容如下所示:
b.运行如下所示:
(2)分别用二阶亚当姆斯预估校正系统、改进的四阶亚当姆斯预估校正系统求解初
值问题0)0(1=-='y y y ,,取181.0)2.0(2.0==y h ,,计算)0.1(y 。

a.编写文件Adams2PC.m,即为二阶亚当姆斯预估校正系统的程序:
b.编写改进的四阶亚当姆斯预估校正系统的程序,如下所示:
C .编写文件f5.m,即为微分方程的程序;编写文件solvef5.m ,为解函数的程序,用以比较结果:
d.运行
从上面的输出可以看到CA4(:,2)和CA4的输出时不同的,前面一个值输入矩阵的第二列;
2. 设计思想
要求针对上述题目,详细分析每种算法的设计思想。

首先差分方法是一类离散化方法,这类方法将寻求解y(x)的分析问题转化为计算离散值y的代数问题,使问题得到实质性的简化;差分方法在解初值问题时采取步进式,进一步将计算模型化归为仅含一个变元的代数方程——差分格式
A.欧拉方法:确定步长,施行离散化手续,用差商代替倒数;
B.改进的欧拉方法:在欧拉方法的基础上,改变倒数项,通过首尾两点的倒数的一半来作为平均倒数,从而改善精度;
C.龙格-库塔方法:在每一步上多预报几个点的斜率,然后将它们加权平均作为平均斜率K*,即该平均斜率将比上面两种方法更加精确,则有可能构造出更高精
度的计算格式;
D.二阶亚当姆斯预估校正系统:充分利用先前计算出来的老信息来为新信息服务,期望来达到减少计算量的目的;预报过程采用松弛手续,来校正产生的值,使
值的精度更高;
E.改进的四阶亚当姆斯预估校正系统:在二阶的基础上,更近一步地改善精度,更加充分地利用来信息,又不失二阶时的预报校正的优点。

四.实验体会
对实验过程进行分析总结,对比求解常微分方程的不同方法,指出每种算法的设计要点及应注意的事项,以及自己通过实验所获得的对常微分方程的差分方法的理解。

在实验的过程也是一次对书本进行复习的过程,通过实验可以更加地理解和学会利用已知的结论来求解初值问题。

算法的计算是建立在使用价值上的,如上面的设计思想中可以看出,每一种算法的建立都是在满足一定的实用价值上的,既要有一定的精度,也要控制在一定的计算范围之内。

利用松弛手续来提高精度,这种设计是优秀的。

编写程序时,以前并不是很注意结尾要不要分号,但这个细节有时必须要注意,正如在运行窗口下时,要想得出计算结果是不能带分号的,假如你带了分号就会自动换行,
提示继续输入,如,而当去了分号后就可以运行了;当然这个道理前面几个实验已经知道;这次实验的情况是微分方程是另外存在一个函数文件中的,那么这个文件的结尾到底要不要分号呢?从习惯上还是提倡写上分号,假如在这次中忘了写的话,在其它“.m”文件中引用该函数时,虽然只是中间结果,但每用一次就好输出一次,使输出内容与预知的多了些;
还有一点是,像上面的内容假如直接复制,粘贴再运行会出错,因为把“>>”也复制上了,粘贴的“>>”和换行时自动出现的符号在意义上是不同的,故会出错,不过在最新版本的matlab上就没有这个问题,在粘贴时自动把多出的符号删去。

实验中二阶亚当姆斯预估校正系统题目中给了两个初值,从而使得程序更加地简单,不必利用其它的方法来求得初值再启动运行。

相关主题