仅供大致参考,有许多定义存在不严谨的地方;不同学校的考察重点自然是不同的
第九章 常微分方程初值问题数值解法
常微分方程的初值问题
{ d y d x = f ( x , y ) y ( x 0 ) = y 0 \left\{\begin{array}{l} \frac{\mathrm{d} y}{\mathrm{~d} x}=f(x, y) \\ y\left(x_{0}\right)=y_{0} \end{array}\right. { dxdy=f(x,y)y(x0)=y0 即,我们要求解函数 y y y的数学表达式,然而我们目前只有 y y y在某个点(初始点)的值(初值),以及 y y y的导数 y ′ y^{\prime} y′的表达式,而 y ′ y^{\prime} y′式中本身是包含 y y y的。为此需要设计相应的数值计算方法进行近似。
显式Euler法
y n + 1 = y n + h f ( x n , y n ) y_{n+1}=y_{n}+h f\left(x_{n}, y_{n}\right) yn+1=yn+hf(xn,yn)
隐式Euler法
y n + 1 = y n + h f ( x n + 1 , y n + 1 ) y_{n+1}=y_{n}+h f\left(x_{n+1}, y_{n+1}\right) yn+1=yn+hf(xn+1,yn+1)
梯形公式
y n + 1 = y n + h 2 [ f ( x n , y n ) + f ( x n + 1 , y n + 1 ) ] y_{n+1}=y_{n}+\frac{h}{2}\left[f\left(x_{n}, y_{n}\right)+f\left(x_{n+1}, y_{n+1}\right)\right] yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]
改进Euler法
y n + 1 = y n + h 2 [ f ( x n , y n ) + f ( x n + 1 , y n + h f ( x n , y n ) ) ] y_{n+1}=y_{n}+\frac{h}{2}\left[f\left(x_{n}, y_{n}\right)+f\left(x_{n+1}, y_{n}+h f\left(x_{n}, y_{n}\right)\right)\right] yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+hf(xn,yn))]
龙格-库塔法
{ y n + 1 = y n + h ( c 1 K 1 + c 2 K 2 + ⋯ + c r K r ) ( n = 0 , 1 , 2 , ⋯ ) K 1 = f ( x n , y n ) K i = f ( x n + a i h , y n + h ∑ j = 1 i − 1 b i j K j ) ( i = 2 , 3 , ⋯ , r ) \left\{\begin{array}{l} y_{n+1}=y_{n}+h\left(c_{1} K_{1}+c_{2} K_{2}+\cdots+c_{r} K_{r}\right) \quad(n=0,1,2, \cdots) \\ K_{1}=f\left(x_{n}, y_{n}\right) \\ K_{i}=f\left(x_{n}+a_{i} h, y_{n}+h \sum_{j=1}^{i-1} b_{i j} K_{j}\right) \quad(i=2,3, \cdots, r) \end{array}\right. ⎩⎪⎨⎪⎧yn+1=yn+h(c1K1+c2K2+⋯+crKr)(n=0,1,2,⋯)K1=f(xn,yn)Ki=f(xn+aih,yn+h∑j=1i−1bijKj)(i=2,3,⋯,r)
龙格-库塔法&二阶中点格式
{ y n + 1 = y n + h K 2 ( n = 0 , 1 , 2 , ⋯ ) K 1 = f ( x n , y n ) K 2 = f ( x n + 1 2 h , y n + 1 2 h K 1 ) \left\{\begin{array}{l} y_{n+1}=y_{n}+h K_{2} \quad(n=0,1,2, \cdots) \\ K_{1}=f\left(x_{n}, y_{n}\right) \\ K_{2}=f\left(x_{n}+\frac{1}{2} h, y_{n}+\frac{1}{2} h K_{1}\right) \end{array}\right. ⎩⎨⎧yn+1=yn+hK2(n=0,1,2,⋯)K1=f(xn,yn)K2=f(xn+21h,yn+21hK1)
龙格-库塔法&二阶休恩格式
{ y n + 1 = y n + h 4 ( K 1 + 3 K 2 ) ( n = 0 , 1 , 2 , ⋯ ) K 1 = f ( x n , y n ) K 2 = f ( x n + 2 3 h , y n + 2 3 h K 1 ) \left\{\begin{array}{l} y_{n+1}=y_{n}+\frac{h}{4}\left(K_{1}+3 K_{2}\right) \quad(n=0,1,2, \cdots) \\ K_{1}=f\left(x_{n}, y_{n}\right) \\ K_{2}=f\left(x_{n}+\frac{2}{3} h, y_{n}+\frac{2}{3} h K_{1}\right) \end{array}\right. ⎩⎨⎧yn+1=yn+4h(K1+3K2)(n=0,1,2,⋯)K1=f(xn,yn)K2=f(xn+32h,yn+32hK1)
龙格-库塔法&四阶
{ y n + 1 = y n + h 6 ( K 1 + 2 K 2 + 2 K 3 + K 4 ) ( n = 0 , 1 , 2 , ⋯ ) K 1 = f ( x n , y n ) K 2 = f ( x n + h 2 , y n + h 2 K 1 ) K 3 = f ( x n + h 2 , y n + h 2 K 2 ) K 4 = f ( x n + h , y n + h K 3 ) \left\{\begin{array}{l} y_{n+1}=y_{n}+\frac{h}{6}\left(K_{1}+2 K_{2}+2 K_{3}+K_{4}\right)(n=0,1,2, \cdots) \\ K_{1}=f\left(x_{n}, y_{n}\right) \\ K_{2}=f\left(x_{n}+\frac{h}{2}, y_{n}+\frac{h}{2} K_{1}\right) \\ K_{3}=f\left(x_{n}+\frac{h}{2}, y_{n}+\frac{h}{2} K_{2}\right) \\ K_{4}=f\left(x_{n}+h, y_{n}+h K_{3}\right) \end{array}\right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧yn+1=yn+6h(K1+2K2+2K3+K4)(n=0,1,2,⋯)K1=f(xn,yn)K2=f(xn+2h,yn+2hK1)K3=f(xn+2h,yn+2hK2)K4=f(xn+h,yn+hK3)
单步法,收敛性
单步法的统一形式为: y n + 1 = y n + h φ ( x n , y n , y n + 1 , h ) y_{n+1}=y_{n}+h \varphi\left(x_{n}, y_{n}, y_{n+1}, h\right) yn+1=yn+hφ(xn,yn,yn+1,h) 如果不含 y n + 1 y_{n+1} yn+1,则称为显示单步法,否则为隐式单步法。
如果对于 x n = x 0 + n h x_{n}=x_{0}+n h xn=x0+nh,当 h → 0 h \rightarrow 0 h→0时有 y n → y ( x n ) y_{n} \rightarrow y\left(x_{n}\right) yn→y(xn),则称该数值方法是收敛的。
局部截断误差,阶,精度
设 y ( x ) y(x) y(x)为微分方程的精确解,那么有精确解减去数值解: T n + 1 = y ( x n + 1 ) − y n + 1 = y ( x n + 1 ) − y ( x n ) − h φ ( x n , y ( x n ) , y ( x n + 1 ) , h ) \begin{aligned} T_{n+1} &=y\left(x_{n+1}\right)-y_{n+1} \\ &=y\left(x_{n+1}\right)-y\left(x_{n}\right)-h \varphi\left(x_{n}, y\left(x_{n}\right), y\left(x_{n+1}\right), h\right) \end{aligned} Tn+1=y(xn+1)−yn+1=y(xn+1)−y(xn)−hφ(xn,y(xn),y(xn+1),h) 称 T n + 1 T_{n+1} Tn+1为单步法的局部截断误差。
泰勒展开式
研究局部截断误差的有关问题,基本上都是离不开泰勒展开。一般我们在处理局部截断误差精度时会去把精确解 y ( x n + 1 ) y(x_{n+1}) y(xn+1)展开,即: y ( x n + 1 ) = y ( x n + h ) = y ( x n ) + y ′ ( x n ) h + y ′ ′ ( x n ) 2 ! h 2 + y ′ ′ ′ ( x n ) 3 ! h 3 + ⋯ y\left(x_{n+1}\right)=y\left(x_{n}+h\right)=y\left(x_{n}\right)+y^{\prime}\left(x_{n}\right) h+\frac{y^{\prime \prime}\left(x_{n}\right)}{2 !} h^{2}+\frac{y^{\prime \prime \prime}\left(x_{n}\right)}{3 !} h^{3}+\cdots y(xn+1)=y(xn+h)=y(xn)+y′(xn)h+2!y′′(xn)h2+3!y′′′(xn)h3+⋯ 或者把 f ( x n + h , y n + k ) f(x_{n}+h,y_{n}+k) f(xn+h,yn+k)给展开: f ( x n + h , y n + k ) = f ( x n , y n ) + ∂ f ( x n , y n ) ∂ x h + ∂ f ( x n , y n ) ∂ y k + 1 2 ! [ ∂ 2 f ( x n , y n ) ∂ x 2 h 2 + 2 ∂ 2 f ( x n , y n ) ∂ x ∂ y h k + ∂ 2 f ( x n , y n ) ∂ y 2 k 2 ] + ⋯ \begin{aligned} f\left(x_{n}+h, y_{n}+k\right) &=f\left(x_{n}, y_{n}\right)+\frac{\partial f\left(x_{n}, y_{n}\right)}{\partial x} h+\frac{\partial f\left(x_{n}, y_{n}\right)}{\partial y} k \\ +& \frac{1}{2 !}\left[\frac{\partial^{2} f\left(x_{n}, y_{n}\right)}{\partial x^{2}} h^{2}+2 \frac{\partial^{2} f\left(x_{n}, y_{n}\right)}{\partial x \partial y} h k+\frac{\partial^{2} f\left(x_{n}, y_{n}\right)}{\partial y^{2}} k^{2}\right]+\cdots \end{aligned} f(xn+h,yn+k)+=f(xn,yn)+∂x∂f(xn,yn)h+∂y∂f(xn,yn)k2!1[∂x2∂2f(xn,yn)h2+2∂x∂y∂2f(xn,yn)hk+∂y2∂2f(xn,yn)k2]+⋯
例1
对于初值问题:
{
y
′
=
−
1000
(
y
−
g
(
x
)
)
+
g
′
(
x
)
y
(
0
)
=
g
(
0
)
\left\{\begin{array}{c} y^{\prime}=-1000(y-g(x))+g^{\prime}(x) \\ y(0)=g(0) \end{array}\right.
{y′=−1000(y−g(x))+g′(x)y(0)=g(0) 其中
g
(
x
)
g(x)
g(x)为已知函数,其解
y
(
x
)
=
g
(
x
)
y(x)=g(x)
y(x)=g(x)
1)若用显式Euler法求解,从稳定性考虑步长应在什么范围内选取
2)若用隐式Euler法求解,从稳定性考虑,步长有没有限制,为什么
3)若g(x)为不超过一次的多项式,用显式Euler法求解此问题时,从精确阶考虑,步长的选择有无限制,为什么
解 1) 根据绝对稳定的定义,有
∣
1
+
h
λ
∣
≤
1
|1+h \lambda| \leq 1
∣1+hλ∣≤1,而
λ
=
−
1000
\lambda=-1000
λ=−1000(y之前的系数),解得
0
<
h
≤
0.002
0 < h \leq 0.002
0<h≤0.002
2) 隐式欧拉法的绝对稳定域为
(
0
,
∞
)
(0,\infty)
(0,∞),因此无限制
3) 对于显式Euler法,可以写出迭代公式如下:
y
n
+
1
=
y
n
+
h
[
−
1000
(
y
n
−
g
(
x
n
)
)
+
g
′
(
x
n
)
]
y_{n+1}=y_n+h[-1000(y_n-g(x_n))+g^{\prime}(x_n)]
yn+1=yn+h[−1000(yn−g(xn))+g′(xn)] 而既然
g
(
x
)
g(x)
g(x)不超过一次,那么令
g
(
x
)
=
a
x
+
b
g(x)=ax+b
g(x)=ax+b,代入上式,可得
y
n
+
1
=
y
n
+
h
[
−
1000
(
y
n
−
a
x
−
b
)
+
a
]
y_{n+1}=y_n+h[-1000(y_n-ax-b)+a]
yn+1=yn+h[−1000(yn−ax−b)+a] 而
y
0
=
y
(
0
)
=
g
(
0
)
=
b
y_0=y(0)=g(0)=b
y0=y(0)=g(0)=b,可递推得
y
1
=
a
h
+
b
y_1=ah+b
y1=ah+b,
y
2
=
a
(
2
h
)
+
b
y_2=a(2h)+b
y2=a(2h)+b,…,
y
n
=
a
(
n
h
)
+
b
y_n=a(nh)+b
yn=a(nh)+b,容易发现总是能得到精确解,因此无步长限制。
例题1(课后习题3)
用梯形法解初值问题
{
y
′
+
y
=
0
y
(
0
)
=
1
\left\{\begin{array}{l} y^{\prime}+y=0 \\ y(0)=1 \end{array}\right.
{y′+y=0y(0)=1 证明其近似解为
y
n
=
[
2
−
h
2
+
h
]
n
y_{n}=\left[\frac{2-h}{2+h}\right]^{n}
yn=[2+h2−h]n,并证明当
h
→
0
h \rightarrow 0
h→0时,它收敛于原初值问题的准确解
y
=
e
−
x
y=e^{-x}
y=e−x
解 :这里我们给出梯形法的公式:
y
n
+
1
=
y
n
+
h
2
[
f
(
x
n
,
y
n
)
+
f
(
x
n
+
1
,
y
n
+
1
)
]
y_{n+1}=y_{n}+\frac{h}{2}\left[f\left(x_{n}, y_{n}\right)+f\left(x_{n+1}, y_{n+1}\right)\right]
yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)] 那么由于
f
(
x
,
y
)
=
y
′
=
−
y
f(x,y)=y^{\prime}=-y
f(x,y)=y′=−y,代进去,有:
y
n
+
1
=
y
n
+
h
2
(
−
y
n
−
y
n
+
1
)
y_{n+1}=y_{n}+\frac{h}{2}\left(-y_{n}-y_{n+1}\right)
yn+1=yn+2h(−yn−yn+1) 移项,可以得到:
y
n
+
1
=
[
2
−
h
2
+
h
]
y
n
=
[
2
−
h
2
+
h
]
2
y
n
−
1
=
[
2
−
h
2
+
h
]
n
+
1
y
0
y_{n+1}=\left[\frac{2-h}{2+h}\right] y_{n}=\left[\frac{2-h}{2+h}\right]^{2} y_{n-1}=\left[\frac{2-h}{2+h}\right]^{n+1} y_{0}
yn+1=[2+h2−h]yn=[2+h2−h]2yn−1=[2+h2−h]n+1y0 代入
y
0
=
1
y_{0}=1
y0=1,可以证得近似解。而由于
x
=
n
h
x=nh
x=nh,n为运算次数,h为步长,因此该式可化为:
y
n
=
[
2
−
h
2
+
h
]
x
/
h
y_{n}=\left[\frac{2-h}{2+h}\right]^{x / h}
yn=[2+h2−h]x/h
lim
h
→
0
y
n
=
lim
h
→
0
[
(
1
−
2
h
2
+
h
)
2
+
h
2
h
]
2
h
2
+
h
x
h
=
e
−
x
\lim _{h \rightarrow 0}{y_n} =\lim _{h \rightarrow 0}\left[\left(1-\frac{2 h}{2+h}\right)^{\frac{2+h}{2 h}}\right]^{\frac{2 h}{2+h} \frac{x}{h}}=\mathbf{e}^{-x}
h→0limyn=h→0lim[(1−2+h2h)2h2+h]2+h2hhx=e−x
例题2(课后习题6)
证明对任意参数
t
t
t,下列龙格-库塔方法是二阶的:
{
y
n
+
1
=
y
n
+
1
2
h
(
K
2
+
K
3
)
K
1
=
f
(
x
n
,
y
n
)
K
2
=
f
(
x
n
+
t
h
,
y
n
+
t
h
K
1
)
K
3
=
f
(
x
n
+
(
1
−
t
)
h
,
y
n
+
(
1
−
2
)
h
K
1
\left\{\begin{array}{l} y_{n+1}=y_{n}+\frac{1}{2} h\left(K_{2}+K_{3}\right) \\ K_{1}=f\left(x_{n}, y_{n}\right) \\ K_{2}=f\left(x_{n}+t h, y_{n}+t h K_{1}\right) \\ K_{3}=f\left(x_{n}+(1-t) h, y_{n}+(1-2) h K_{1}\right. \end{array}\right.
⎩⎪⎪⎨⎪⎪⎧yn+1=yn+21h(K2+K3)K1=f(xn,yn)K2=f(xn+th,yn+thK1)K3=f(xn+(1−t)h,yn+(1−2)hK1 解:
T
n
+
1
=
y
(
x
n
+
1
)
−
y
n
+
1
T_{n+1}=y(x_{n+1})-y_{n+1}
Tn+1=y(xn+1)−yn+1 首先利用泰勒展开处理
y
(
x
n
+
1
)
=
y
(
x
n
+
h
)
y(x_{n+1})=y(x_n + h)
y(xn+1)=y(xn+h),有:
y
(
x
n
+
h
)
=
y
(
x
n
)
+
h
y
′
(
x
n
)
+
1
2
h
2
y
′
′
(
x
n
)
+
1
3
!
h
3
y
′
′
′
(
ξ
)
y(x_n + h)= y(x_n)+h y^{\prime}(x_n)+\frac{1}{2} h^{2} y^{\prime \prime}(x_n)+\frac{1}{3 !} h^{3} y^{\prime \prime \prime}(\xi)
y(xn+h)=y(xn)+hy′(xn)+21h2y′′(xn)+3!1h3y′′′(ξ) 而
y
n
+
1
=
y
(
x
n
)
+
h
2
(
K
2
+
K
3
)
=
y
(
x
n
)
+
1
2
h
[
f
(
x
n
+
t
h
,
y
n
+
t
h
y
′
(
x
n
)
)
+
f
(
x
n
+
(
1
−
t
)
h
,
y
n
+
(
1
−
t
)
h
y
′
(
x
n
)
)
]
)
y_{n+1}=y(x_n)+\frac{h}{2}(K_2+K_3)=y(x_n)+\frac{1}{2}h\left[f\left(x_n+t h, y_n+t h y^{\prime}(x_n)\right)+f\left(x_n+(1-t) h, y_n+(1-t) h y^{\prime}(x_n)\right)\right])
yn+1=y(xn)+2h(K2+K3)=y(xn)+21h[f(xn+th,yn+thy′(xn))+f(xn+(1−t)h,yn+(1−t)hy′(xn))]) 对
f
(
x
n
+
t
h
,
y
n
+
t
h
y
′
(
x
n
)
)
f\left(x_n+t h, y_n+t h y^{\prime}(x_n)\right)
f(xn+th,yn+thy′(xn))与
f
(
x
n
+
(
1
−
t
)
h
,
y
n
+
(
1
−
t
)
h
y
′
(
x
n
)
)
f\left(x_n+(1-t) h, y_n+(1-t) h y^{\prime}(x_n)\right)
f(xn+(1−t)h,yn+(1−t)hy′(xn))各自做二元泰勒展开,带回原式,可解得最后
T
n
+
1
=
O
(
h
3
)
T_{n+1}=O(h^3)
Tn+1=O(h3),即方法是二阶的。
例题3(课后习题7)
证明中点公式
y
n
+
1
=
y
n
+
h
f
(
x
n
+
h
2
,
y
n
+
1
2
h
f
(
x
n
,
y
n
)
)
y_{n+1}=y_{n}+h f\left(x_{n}+\frac{h}{2}, y_{n}+\frac{1}{2} h f\left(x_{n}, y_{n}\right)\right)
yn+1=yn+hf(xn+2h,yn+21hf(xn,yn))是二阶的。
解:
T
n
+
1
=
y
(
x
n
+
1
)
−
y
(
x
n
)
−
h
f
(
x
n
+
h
2
,
y
(
x
n
)
+
h
2
y
′
(
x
n
)
)
T_{n+1}=y\left(x_{n+1}\right)-y\left(x_{n}\right)-h f\left(x_{n}+\frac{h}{2}, y\left(x_{n}\right)+\frac{h}{2} y^{\prime}\left(x_{n}\right)\right)
Tn+1=y(xn+1)−y(xn)−hf(xn+2h,y(xn)+2hy′(xn)) 根据泰勒展开式将
y
(
x
n
+
1
)
y(x_{n+1})
y(xn+1)展开,有:
y
(
x
n
+
1
)
=
y
(
x
n
)
+
h
y
′
(
x
n
)
+
h
2
2
y
′
′
(
x
n
)
+
h
3
6
y
′
′
′
(
x
n
)
+
O
(
h
4
)
y(x_{n+1})=y(x_{n})+hy^{\prime}(x_{n})+\frac{h^{2}}{2}y^{\prime\prime}(x_{n})+\frac{h^{3}}{6}y^{\prime\prime\prime}(x_{n})+O(h^{4})
y(xn+1)=y(xn)+hy′(xn)+2h2y′′(xn)+6h3y′′′(xn)+O(h4) 同理,利用二元泰勒公式将
f
(
x
n
+
h
2
,
y
(
x
n
)
+
h
2
y
′
(
x
n
)
)
f\left(x_{n}+\frac{h}{2}, y\left(x_{n}\right)+\frac{h}{2} y^{\prime}\left(x_{n}\right)\right)
f(xn+2h,y(xn)+2hy′(xn))展开,有:
f
(
x
n
+
h
2
,
y
(
x
n
)
+
h
2
y
′
(
x
n
)
)
=
f
(
x
n
,
y
(
x
n
)
)
+
h
2
∂
f
(
x
n
,
y
(
x
n
)
)
∂
x
+
h
2
y
′
(
x
n
)
∂
f
(
x
n
,
y
(
x
n
)
)
∂
y
+
1
2
!
[
(
h
2
)
2
∂
2
f
(
x
n
,
y
(
x
n
)
)
∂
x
2
+
h
2
h
2
y
′
(
x
n
)
∂
2
f
(
x
n
,
y
(
x
n
)
)
∂
x
∂
y
+
[
h
2
y
′
(
x
n
)
]
2
∂
2
f
(
x
n
,
y
(
x
n
)
)
∂
y
2
]
+
O
(
h
3
)
f\left(x_{n}+\frac{h}{2}, y\left(x_{n}\right)+\frac{h}{2} y^{\prime}\left(x_{n}\right)\right) = f\left( {{x_n},y\left( {{x_n}} \right)} \right) + {h \over 2}{{\partial f\left( {{x_n},y\left( {{x_n}} \right)} \right)} \over {\partial x}} + {h \over 2}{y^\prime }\left( {{x_n}} \right){{\partial f\left( {{x_n},y\left( {{x_n}} \right)} \right)} \over {\partial y}} + {1 \over {2!}}\left[ {{{\left( {{h \over 2}} \right)}^2}{{{\partial ^2}f\left( {{x_n},y\left( {{x_n}} \right)} \right)} \over {\partial {x^2}}}} \right. + {h \over 2}{h \over 2}{y^\prime }\left( {{x_n}} \right){{{\partial ^2}f\left( {{x_n},y\left( {{x_n}} \right)} \right)} \over {\partial x\partial y}}\left. { + {{\left[ {{h \over 2}{y^\prime }\left( {{x_n}} \right)} \right]}^2}{{{\partial ^2}f\left( {{x_n},y\left( {{x_n}} \right)} \right)} \over {\partial {y^2}}}} \right] + O\left( {{h^3}} \right)
f(xn+2h,y(xn)+2hy′(xn))=f(xn,y(xn))+2h∂x∂f(xn,y(xn))+2hy′(xn)∂y∂f(xn,y(xn))+2!1[(2h)2∂x2∂2f(xn,y(xn))+2h2hy′(xn)∂x∂y∂2f(xn,y(xn))+[2hy′(xn)]2∂y2∂2f(xn,y(xn))]+O(h3) 把这两个泰勒展开后的式子代回去,由于
y
′
(
x
n
)
y^{\prime}(x_{n})
y′(xn)其实就是
f
(
x
n
,
y
n
)
f(x_{n},y_{n})
f(xn,yn),因此消掉一堆东西后可以得到:
=
h
3
3
!
y
′
′
′
(
x
n
)
−
h
3
8
[
∂
2
f
∂
x
2
+
y
′
(
x
)
∂
2
f
∂
x
∂
y
+
(
y
′
(
x
)
)
2
∂
2
∂
y
2
]
(
x
n
,
y
(
x
n
)
)
+
O
(
h
4
)
\begin{aligned} &=\frac{h^{3}}{3 !} y^{\prime \prime \prime}\left(x_{n}\right)-\frac{h^{3}}{8}\left[\frac{\partial^{2} f}{\partial x^{2}}+y^{\prime}(x) \frac{\partial^{2} f}{\partial x \partial y}+\left(y^{\prime}(x)\right)^{2} \frac{\partial^{2}}{\partial y^{2}}\right]_{\left(x_{n}, y\left(x_{n}\right)\right)}+O\left(h^{4}\right) \end{aligned}
=3!h3y′′′(xn)−8h3[∂x2∂2f+y′(x)∂x∂y∂2f+(y′(x))2∂y2∂2](xn,y(xn))+O(h4) 因此是二阶的。
例题4(课后习题11)
证明解
y
′
=
f
(
x
,
y
)
y^{\prime}=f(x,y)
y′=f(x,y)的下列差分公式
y
n
+
1
=
1
2
(
y
n
+
y
n
−
1
)
+
h
4
(
4
y
n
+
1
′
−
y
n
′
+
3
y
n
−
1
′
)
y_{n+1}=\frac{1}{2}\left(y_{n}+y_{n-1}\right)+\frac{h}{4}\left(4 y^{\prime}_{n+1}-y^{\prime}_{n}+3 y^{\prime}_{n-1}\right)
yn+1=21(yn+yn−1)+4h(4yn+1′−yn′+3yn−1′)是二阶的,并求出截断误差的主项。
解: 与上一问类似,首先
T
n
+
1
=
y
(
x
n
+
1
)
−
y
n
+
1
T_{n+1}=y(x_{n+1})-y_{n+1}
Tn+1=y(xn+1)−yn+1 对于
y
(
x
n
+
1
)
=
y
(
x
n
+
h
)
y(x_{n+1})=y(x_{n}+h)
y(xn+1)=y(xn+h),利用泰勒展开,有:
y
(
x
n
+
h
)
=
y
(
x
n
)
+
h
y
′
(
x
n
)
+
1
2
h
2
y
′
′
(
x
n
)
+
1
3
!
h
3
y
′
′
′
(
x
n
)
+
O
(
h
4
)
y(x_{n}+h)=y\left(x_{n}\right)+h y^{\prime}\left(x_{n}\right)+\frac{1}{2} h^{2} y^{\prime \prime}\left(x_{n}\right)+\frac{1}{3 !} h^{3} y^{\prime \prime \prime}\left(x_{n}\right)+O\left(h^{4}\right)
y(xn+h)=y(xn)+hy′(xn)+21h2y′′(xn)+3!1h3y′′′(xn)+O(h4) 现在的问题就是怎么处理
1
2
(
y
(
x
n
)
+
y
(
x
n
−
h
)
)
+
1
4
h
[
4
y
′
(
x
n
+
h
)
−
y
′
(
x
n
)
+
3
y
′
(
x
n
−
h
)
]
{1 \over 2}\left( {y\left( {{x_n}} \right) + y\left( {{x_n} - h} \right)} \right){\rm{ + }}{1 \over 4}h\left[ {4{y^\prime }\left( {{x_n} + h} \right) - {y^\prime }\left( {{x_n}} \right) + 3{y^\prime }\left( {{x_n} - h} \right)} \right]
21(y(xn)+y(xn−h))+41h[4y′(xn+h)−y′(xn)+3y′(xn−h)]。其实依然完全是泰勒展开,这里给出一个例子,展开
y
′
(
x
n
+
h
)
y^{\prime}({x_{n}+h})
y′(xn+h):
y
′
(
x
n
+
h
)
=
y
(
x
n
′
)
+
h
y
′
′
(
x
n
)
+
1
2
h
2
y
′
′
′
(
x
n
)
+
O
(
h
3
)
y^{\prime}({x_{n}+h})=y\left(x^{\prime}_{n}\right)+h y^{\prime\prime}\left(x_{n}\right)+\frac{1}{2} h^{2} y^{\prime \prime\prime}\left(x_{n}\right)+O\left(h^{3}\right)
y′(xn+h)=y(xn′)+hy′′(xn)+21h2y′′′(xn)+O(h3) 都展来开,代进去的话,最终消去得:
−
5
8
h
3
y
′
′
′
(
x
n
)
+
O
(
h
4
)
-\frac{5}{8} h^{3} y^{\prime \prime \prime}\left(x_{n}\right)+O\left(h^{4}\right)
−85h3y′′′(xn)+O(h4) 因此差分公式是二阶的。
例题5(课后习题12)
试证明线性二步法
y
n
+
2
+
(
b
−
1
)
y
n
+
1
−
b
y
n
=
h
4
[
(
b
+
3
)
f
n
+
2
+
(
3
b
+
1
)
f
n
]
y_{n+2}+(b-1) y_{n+1}-b y_{n}=\frac{h}{4}\left[(b+3) f_{n+2}+(3 b+1) f_{n}\right]
yn+2+(b−1)yn+1−byn=4h[(b+3)fn+2+(3b+1)fn]当
b
≠
−
1
b \neq-1
b=−1时方法为二阶,当
b
=
−
1
b = -1
b=−1时方法为三阶。
解: 注意这里是求
T
n
+
2
=
y
(
x
n
+
2
)
−
y
n
+
2
T_{n+2}=y(x_{n+2})-y_{n+2}
Tn+2=y(xn+2)−yn+2。有:
T
n
+
2
=
y
(
x
n
+
2
h
)
+
(
b
−
1
)
y
(
x
n
+
h
)
−
b
y
(
x
n
)
−
h
4
[
(
b
+
3
)
y
′
(
x
n
+
2
h
)
+
(
3
b
+
1
)
y
′
(
x
n
)
]
\begin{aligned} T_{n+2}=& y\left(x_{n}+2h\right)+(b-1) y\left(x_{n}+h\right)-b y\left(x_{n}\right) \\ &-\frac{h}{4}\left[(b+3) y^{\prime}\left(x_{n}+2h\right)+(3 b+1) y^{\prime}\left(x_{n}\right)\right] \end{aligned}
Tn+2=y(xn+2h)+(b−1)y(xn+h)−by(xn)−4h[(b+3)y′(xn+2h)+(3b+1)y′(xn)] 与前几问类似,各自进行泰勒展开,最终得到:
−
1
3
(
b
+
1
)
h
3
y
′
′
′
(
x
n
)
−
[
3
8
+
7
24
b
]
h
4
y
(
4
)
(
x
n
)
+
O
(
h
5
)
-\frac{1}{3}(b+1) h^{3} y^{\prime \prime \prime}\left(x_{n}\right)-\left[\frac{3}{8}+\frac{7}{24} b\right] h^{4} y^{(4)}\left(x_{n}\right)+O\left(h^{5}\right)
−31(b+1)h3y′′′(xn)−[83+247b]h4y(4)(xn)+O(h5) 当
b
≠
−
1
b \neq -1
b=−1时,有
T
n
+
2
=
−
1
3
(
b
+
1
)
h
3
y
′
′
′
(
x
n
)
+
O
(
h
4
)
T_{n+2}=-\frac{1}{3}(b+1) h^{3} y^{\prime \prime \prime}\left(x_{n}\right)+O\left(h^{4}\right)
Tn+2=−31(b+1)h3y′′′(xn)+O(h4)为二阶;反正,为:
T
n
+
2
=
−
[
3
8
+
7
24
b
]
h
4
y
(
4
)
(
x
n
)
+
O
(
h
5
)
T_{n+2}=-\left[\frac{3}{8}+\frac{7}{24} b\right] h^{4} y^{(4)}\left(x_{n}\right)+O\left(h^{5}\right)
Tn+2=−[83+247b]h4y(4)(xn)+O(h5)是四阶。