内容发布更新时间 : 2024/11/19 5:37:07星期一 下面是文章的全部内容请认真阅读。
第五章 常微分方程数值解法
§1引言
在实际工作中常常会遇到求解常微分方程的定解问题。虽然我们已经学过一些常微分方程的定解问题的解法,但是那只是对一些特殊类型的方程给出了解析方法。而实际问题中归纳出来的常微分方程往往不能用解析方法来求解。有时虽然能求出其解析式子,但真要求它在某一点的值时,还会遇到一些麻烦。见下例。
?y??1?2xy 例 已知初值问题? 求其解。
?y(0)?0?x2xt2 易知,y(x)?e?0edx。若要求它在某 一点的值,还要求
积分,而这个积分是不能求出的,需要用数值积分来求解。因此不如直接用数值解法求其解了。以下我们就研究常微分方程的数值解法。
本章主要考虑下列一阶方程的定解问题(又称初值问题)。
?y??f(x,y) ? (1-1)
?y(x0)?y0这里假设函数f(x,y)满足Lipschitz(李卜西兹)条件。即f(x,y)满足:
f(x,y)?f(x,y)?Ly?y
其中,L为某一常数。这是保证问题(1-1)有唯一解。下面就研究关于问题(1-1)的数值解法。
所谓数值解法,就是直接寻求解函数y(x)在一系列离散点
x1?x2???xn?xn?1??
上的近似值y1,y2,…,yn,yn?1,…。其中,xi?1?xi?hi称为步长,今后如果不特殊说明,我们总是假定是等步长的。即有
xi?1?xi?h ,此时节点xn?x0?nh,n?0,1,2,?。由于y(x0)?y0为已知,所以自然设想利用这个已知信息求出y(x1)的
近似值y1,然后由y1求得y(x2)的近似值y2,如此继续下去,这就是初值问题数值解法的一般思想。称为“步进法”。
§2 Euler方法(折线法) 2-1 Euler公式
这一方法是初值问题数值解中最简单的一个方法,其精度不高。所以实际计算中很少应用。但在某种程度上反映了数值方法的基本思想,且在此基础上得到的某些改进的方法目前还在使用,因此我们有必要介绍一下这种方法。
Euler公式的推导方法很多,在此我们用Tarlor展开的方法。
h2y??(?n) ∵ y(xn?1)?y(xn?h)?y(xn)?y?(xn)h?2!其中,?n?(xn,xn?1) ,由(1-1)式知,
h2y(xn?1)?y(xn)?hf[xn,y(xn)]?y??(?n) n?0,1,2,?
2!h2y??(?n),即得 当h充分小时,略去2! y(xn?1)?y(xn)?hf[xn,y(xn)] 取近似,并写成等式得,
yn?1?yn?hf(xn,yn) n?0,1,2,? (2-1)
此即称为Euler公式。
h2由于略去的是y??(?n),可见这就是误差。但这只是在计
2!算第n步时产生的误差,并非是从一开始到现在所产生的误差。因此我们称这个误差为局部截断误差。即在假定yn?y(xn)的假设下,计算y(xn?1)时产生的误差y(xn?1)?yn?1,称为局部截断误
h2y??(xn)。 差。由此知Euler公式的局部截断误差约为2!2-2后退的Euler公式
后退的Euler公式的推导同样也有许多方法。在此,我们用差 商代替导数的方法。因为
y(xn?1)?y(xn) y?(xn?1)?xn?1?xn假设yn?y(xn),又有(1-1)知y?(xn?1)?f(xn?1,y(xn?1)),取近似整理得,
yn?1?yn?hf(xn?1,yn?1) n?0,1,2,? (2-2) 此即称为后退的(隐式)Euler公式。
公式(2-2)在计算yn?1时要用yn?1。这样的公式称为隐式公式,而象公式(2-1)的式子称为显式公式。对于隐式公式,在计算时要先给yn?1提供一个初值,然后再用给定的公式开始计算,通常称为迭代法。对(2-2)式的迭代公式如下,
(0)?yn?1?yn?hf(xn,yn) k?0,1,? (2-3) ?(k?1)(k)?yn?1?yn?hf(xn?1,yn?1)