常微分方程数值解法(2)

2019-03-11 09:28

校正法是二阶方法。

可以证明,改进的欧拉公式与预估—校正公式的截断误差相同,均为O(h)。这里略去证明。

例 1:在区间[0,1]上以h=0.1为步长,分别用欧拉法与预估— 校正法求初值

2x?dy?y??问题?dxy的数值解

??y(0)?13解:该方程为贝努利方程,其精确解为y?1?2x欧拉公式的具体形式为

?2xnyn?1?yn?h?y??nyn?????

预估—校正公式的具体形式为

?11?yn?1?yn?k1?k2?22?2xnk1?hf(yn?)?yn???2?xn?h????k?hfy?k??21?nyn?k1??? ?取步长h?0.1,x0?0,y0?1,计算结果见下表:表7-1

表7-1

n xn y 欧拉法 预估-矫正法 11.0959091.1840971.2662011.3433601.4164021.4859561.5525141.6164751.678166准确解 11.0954451.1832161.2649111.3416411.4142141.4832401.5491931.6124521.67332001234567891000.10.20.30.40.50.60.70.80.911.11.1918181.2774381.3582131.4351331.5089661.5803381.6497831.717779 1 1.784771 1.737867 1.732051

6

近似解与准确解比较,欧拉法的结果大致只有两位有效数字,而预估—校正法的结果则 有3位有效数字。

第二节 龙格—库塔法

前面讨论的欧拉法与改进的欧拉法都是一步 法,即计算yn?1时,只用到前一步值。龙格—库塔(Runge-Kut ta)法(简称为?R-K?方法)是一类高精度的一步法,这类方法与泰勒级数法有着密 切的关系。? 一、泰勒级数法?

设有初值问题

?dy??f(x,y)?dx??y(x0)?y0???

由 泰勒展开式??

y?xn?1??y?xn?h??y?xn??hy??xn??hkh22!y???xn????k!y?k??xn??O?hk?1? (1)

?若令?

yn?1?y?xn??hy??xn??h22!???hkk!y?k??xn? (2)?

则??

y?xn?1??yn?1?Oh?k?1???

即公式(2)为k阶方法。?

从理论上讲,只要解y(x)有任意阶导数,泰勒展开方法就可以构造任意阶求?yn?1的公 式,但由于计算这些导数是非常复杂的。如?

y??x??f?x,y?x???fy???x??fx?y?fy?fx?ffyy???fxx?2ffxy?fxfy?ffy?f22fyy??

所以这种方法实际上不能用来解初值问题。 二、龙格 —库塔方法(R-K方法)?

R-K方法不是通过求导数的方法构造近似公式,而是通过计算 不同点上的函数值,并对这些函数值作线性组合,构造近似公式,再把近似公式与解的泰勒展开

7

式进行比较,使前面的若干项相同,从而使近似公式达到一定的阶数。?我们先分析欧拉法与预估—校正法。对于欧拉法?

?yn?1?yn?k1???k1?hf(xn,yn)

每步计算f的值一次,其截断误差为O(h)。对于预估—校正法。 ??

11?y?y?k?k2n1?n?122?k1?hf?xn,yn???k?hf?x?h,y?k?nn1?2?

3每步计算f的值两次,其截断误差为?O(h)?。?

2下面对预估—校正法进行改进,将该公式写成更一般的形式 ?

yn?1?yn?R1k1?R2k2k1?hf?xn,yn?k2?hf?xn?ah,yn?bh? (3)

其中R1,R2,a,b为待定常数。选择这 些常数的原则是在yn?y(xn)的前提下,使?y(xn?1)?yn?1)?的阶尽量 高。为此,作泰勒展开

k2?hf(xn?ah,yn?bk)?h[f?ahf2x?bk1fy??]x?hf?h(af?bffy)????

其中

f,fx,fy,??都是在(xn,yn)处的函数值。将k1,k2?代入yn?1得?

yn?1?yn?(R1?R2)hf?h(aR2fx?bR2ffy)???y(xn)?h(R1?R2)y?(xn)?h(aR2fx?bR2ffx??

22与泰勒展开式(2)进行比较,要使得

??R1?R2???aR2???bR?2??y?xn?1??yn?1?oh???只要 四个参数满足

3?11212 (4)

若R1?R2?12,a?b?1,?即得预估—校正公式。?满足(4)式的R1,R2,a,b可以

8

有各种不同的取法,但不管如何取法,都要计算两次f的值(即 计算f在两个不同点的函数值),截断误差都是Oh??。满足条件(4)的一族公式(3)统称为 二

3阶龙格—库塔公式。?人们容易想到,如果不增加计算函数值的次数,能否适当地选择这 四个参数,使近似公式的局部截断误差的阶再提高,比如达到

Oh??。为此,把k42多展 开 一项,有

?bffyk2?hf?h2?afx??h32?a2fxx?2abffxy?bf22fyy?Oh???4 (4)所

yn?1?y?xn??h?R1?R2?y??xn??hh32?aR2fx?bR2ffy??2?a2R2fx?2abR2ffxy?bR2f22fyy?Oh???4?

而y?xn?1?在xn的泰勒展开式?

y?xn?1??y?xn??hy??xn???y?xn??hf?h2h22y???xn??h3h36y????xn??Oh2??422?fx?ffy??36?fxx?2ffxy?f2fyy?fxfy?ffy?Oh???4

由于

y?xn?1?展开式的h项中

fxfy?ffy是无法通过选择参数R1,R2,a,b来消

去的,所以不论四个参 数如何选择,都不能使局部截断误差?y?xn?1??yn?1?达到O?h?。要想提 高近似公式的阶,只能继续增加计算f的值的次数。?如

4果每步计算三次f的值,可将公式写 成下列形式:??

?yn?1?yn?R1k1?R2k2?R3k3??k1?hf?xn,yn? (5) ???k?hfx?ah,y?bkn2n211?2?k3?hf?xn?a3h,yn?b31k1,b32k2???与二阶龙格—库塔公式的讨论方法类似,要使

y?xn?1??yn?1?Oh??,?只

4 9

?R1?R2?R3?1?a?b21?2?a3?b31?b32?1aR?aR?需8个参数满足? 33?222?122?a2R2?a3R3?3?1?a2b32R3??6?方程组包含6个方程,8个未知量,其解不唯一。满足条件(6)的一族公式(5)统称为三阶龙格—库 塔公式。?一个比较简单的三阶龙格—龙塔公式是

141?y?y?R?R?R3n12?n?1666?k?hf?x,y??1nn?11???k2?hf?xn?h,yn?k1?22?????k3?hf?xn?h,yn?k1?2k2?

截断误差为O?h?的四阶龙格—库塔公式 是常用的公式,每步都要计算四次

5f的值。它的一般形式是?

?yn?1?yn?R1k1?R2k2R3k3R4k4?k?hf(xn,yn)?1?? ?k2?h(xn?a2h,yn?b21k1) (6)

?k?hf?x?ah,y?bk?bk?n3n311322?3??k4?hf?xn?a4h,yn?b41k1?b42k2?b43k3??

(6)式中13个待定常数需满足下列11个方程的方程组??

10


常微分方程数值解法(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高二地理环境对区域发展的影响3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: