6.1 确定常微分方程数值解的常用方法
1.欧拉(Euler)法
欧拉法又称欧拉折线法,欧拉折线法的基本思想是利用微分中值定理对方程(6.1)的解函数y=y(x)进行近似。由于y(x)是可微函数,故
![]()
其中ξ是介于x0和x0+h之间的一个值。当h比较小时,y'(ξ)和y'(x0)相差不大,故用x0代替上式中的ξ,就得到了近似值
![]()
当知道y1以后,再用类似方法来求y(x)在点xk的近似值yk。
![]()
这样就得到了方程(6.1)在点xi(i=1,2,…,n)的近似解,式(6.2)称为欧拉公式。
由方程(6.1)在节点xi处成立,得
![]()
将y(xi+1)在xi处利用泰勒(Taylor)展开式展开,得

将式(6.3)代入式(6.4),得

在式(6.5)中略去高阶项并用yi和yi+1分别代替式(6.5)中的y(xi)和y(xi+1),可得向前欧拉公式:
![]()
将y(xi-1)在xi处利用泰勒展开式展开,得

将式(6.3)代入式(6.7),得

在式(6.8)中略去高阶项并用yi和yi-1分别代替式(6.5)中的y(xi)和y(xi-1),可得向后欧拉公式:
![]()
向前欧拉公式和向后欧拉公式相比,向前欧拉公式关于yi+1是显式格式,而在向后欧拉公式中,yi+1隐含在方程中,这样的格式称为隐式格式。
如果将式(6.4)和式(6.5)再多展开一项,得

将上述两式相减并整理得

在式(6.10)中略去高阶项并用yi-1,yi和yi+1分别代替式(6.10)中的y(xi-1),y(xi)和y(xi+1),可得中心差分欧拉公式:
![]()
如果将方程(6.1)中常微分方程的两端从xi到xi+1积分,则得

如果用梯形求积公式计算式(6.12)中的积分,则有

在式(6.13)中略去高阶项后可得梯形公式:

一般来说,隐式格式比显示格式具有更好的数值稳定性。但是,由于在隐式格式中,yi+1往往满足的是一个非线性方程,因而需要使用迭代法得到yi+1的近似值,然后代入隐式格式做校正,并以这个校正值作为y(xi+1)的近似值。因此可以选择适当的显示格式计算预测值,我们把这样的格式称为预估-校正公式。预估-校正公式往往既便于计算又具有较好的数值稳定性。
例如,对于梯形公式,可先用向前欧拉公式计算出预测值,再用梯形公式修正,得到

式(6.15)称为改进欧拉公式。
2.龙格-库塔(Runge-Kutta)法
根据微分中值定理,存在0<θ<1,使得(https://www.daowen.com)

由方程(6.1)知
![]()
将上式代入式(6.16)并整理得
![]()
令K*=f(xi+θh,y(xi+θh)),称其为区间[xi,xi+1]上的平均斜率。只要对这个平均斜率提供一种算法,便可以由式(6.17)得到一种计算公式。
若取θ=0,即取点(xi,yi)的斜率作为整个区间[xi,xi+1]上的平均斜率,这时K*=f(xi,yi),则得到欧拉公式:
![]()
若取θ=1,即取点(xi+1,yi+1)的斜率作为整个区间[xi,xi+1]上的平均斜率,这时K*=f(xi+1,yi+1),则得到后退的欧拉公式:
![]()
如果取K1=f(xi,yi),K2=f(xi+1,yi+hf(xi,yi)),令K*=
(K1+K2),即取(xi,yi)和(xi+1,yi+1)两点斜率的算术平均作为整个区间[xi,xi+1]上的平均斜率,则得到

这显然是改进的欧拉公式(即梯形公式)。
在[xi,xi+1]内取xi,xi+p,0<p≤1,将这两个点上的斜率值K1与K2的线性组合作为平均斜率K*。显然,K1=f(xi,yi),而K2=f(xi+p,yi+p),对于其中的yi+p,我们用欧拉公式来计算:
![]()
为此有

其中含有3个待定参数λ1、λ2和p。确定这3个待定参数的原则是使得式(6.19)具有二阶精度。为此将K2在点(xi,yi)作二元函数泰勒展开,得
![]()
其中fi=f(xi,yi),(fx+ffy)i=fx(xi,yi)+f(xi,yi)fy(xi,yi),将K1和K2代入式(6.19)中的第一式得
![]()
而yi+1的泰勒级数展开为

通过比较式(6.20)和式(6.21)二者的系数得到3个待定参数λ1、λ2和p应满足的方程组为

满足式(6.22)、形如式(6.19)的所有公式均称为二阶龙格-库塔公式。特别地,当λ1=λ2=
和p=1时,该式就是改进的欧拉公式;当λ1=0,λ2=1和p=
时,对应的公式为

该式称为中点公式。
为提高精度,在[xi,xi+1]内取xi,xi+p,xi+q,0<p<q≤13个点,用这3个点上的斜率值K1,K2和K3的线性组合作为平均斜率K*。
显然,K1=f(xi,yi),K2=f(xi+p,yi+phK1),而K3的预测值我们用公式K3=f(xn+q,yn+q)=f(xi+qh,yi+qh(rK1+sK2))来计算,从而得

为了确定式(6.24)中的待定参数λ1、λ2、λ3、p、q、r和s。我们同样将K1、K2和K3作二元函数泰勒展开,代入式(6.24)中的第一个公式,整理后将其与yi+1的三阶泰勒展开式的对应系数比较,得到待定参数应满足的条件:

参数满足式(6.25)、形如式(6.24)的公式统称为三阶龙格-库塔公式,它也是一族公式。
当λ1=
,q=1,r=-1和s=2时,对应的公式为经典的三阶龙格-库塔公式:

用同样的方法可得龙格-库塔公式的一般表达式:

如果取r=4,用同样的方法可以得到四阶龙格-库塔公式。式(6.27)就是一个经典的四阶龙格-库塔公式:
