1 数值解法相关公式
1.1 为什么要研究数值解法?
所谓数值解法,就是设法将常微分方程离散化,建立差分方程,给出解在一些离散点上的近似值.
1.2 问题 7.1 一阶常微分方程初值问题的一般形式
{y′=f(x,y),a⩽x⩽by(a)=α\begin{equation}
\left \{
\begin{aligned}
& y'=f(x,y),a\leqslant x \leqslant b\\
&y(a)=\alpha
\end{aligned}
\right.
\end{equation}{y′=f(x,y),a⩽x⩽by(a)=α
其中f(x,y)f(x,y)f(x,y)是已知函数,α\alphaα为给定的初值.
若函数f(x,y)f(x,y)f(x,y)在区域
{a⩽x⩽b,−∞<y<+∞}\left \{a \leqslant x \leqslant b, - \infty < y < +\infty \right \}{a⩽x⩽b,−∞<y<+∞}上连续且关于yyy满足LipschitzLipschitzLipschitz条件∣f(x,y)−f(x,yˉ)∣⩽L∣y−yˉ∣,∀y,yˉ\left | f(x,y)-f(x, \bar y) \right | \leqslant L \left | y-\bar y \right |, \forall y, \bar y∣f(x,y)−f(x,yˉ)∣⩽L∣y−yˉ∣,∀y,yˉ
其中L>0L>0L>0为LipschitzLipschitzLipschitz常数,则初值问题(7.1)有唯一解。
1.3 构造数值解法的基本思想
假设初值问题(7.1)的解y=y(x)y=y(x)y=y(x)唯一存在且足够光滑.对求解区域[a,b][a,b][a,b]做剖分a=x0<x1<x2<...<xn<...<xN=ba=x_0<x_1<x_2<...<x_n<...<x_N=ba=x0<x1<x2<...<xn<...<xN=b其中剖分点xn=a+nh,n=0,1,...,Nx_n=a+nh,n=0,1,...,Nxn=a+nh,n=0,1,...,N,hhh称为剖分步长,数值解法就是求精确解y(x)y(x)y(x)在剖分节点xnx_nxn上的近似值yn≈y(xn),n=1,2,...,Ny_n\approx y(x_n),n=1,2,...,Nyn≈y(xn),n=1,2,...,N.
我们采用数值积分方法来建立差分公式.
在区间[xn,xn+1][x_n,x_{n+1}][xn,xn+1]上对方程(7.1)做积分,则有
y(xn+1)−y(xn)=∫xnxn+1f(x,y(x))dxy(x_{n+1})-y(x_n)=\int_{x_n} ^{x_{n+1}}f(x,y(x))dxy(xn+1)−y(xn)=∫xnxn+1f(x,y(x))dx
对右侧分别应用左矩形公式、梯形公式和中矩形公式,可分别得到EulerEulerEuler公式、梯形差分公式和EulerEulerEuler中点公式。
1.4 EulerEulerEuler公式
{yn+1=yn+hf(xn,yn)y0=α,n=0,1,2,...,N−1\begin{equation} \left \{ \begin{aligned} &y_{n+1}=y_n+hf(x_n,y_n) \\ &y_0=\alpha,n=0,1,2,...,N-1 \end{aligned} \right. \end{equation}{yn+1=yn+hf(xn,yn)y0=α,n=0,1,2,...,N−1
1.5 梯形差分公式
{yn+1=yn+h2[f(xn,yn)+f(xn+1,yn+1)]y0=α,n=0,1,2,...,N−1\begin{equation} \left\{ \begin{aligned} &y_{n+1}=y_n+\frac{h}{2}[f(x_n,y_n)+f(x_{n+1},y_{n+1})] \\ &y_0=\alpha,n=0,1,2,...,N-1 \\ \end{aligned} \right. \end{equation}⎩⎨⎧yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]y0=α,n=0,1,2,...,N−1
1.6 EulerEulerEuler中点公式(双步EulerEulerEuler公式)
{yn+1=yn−1+2hf(xn,yn)y0=α,n=0,1,2,...,N−1\begin{equation}
\left\{
\begin{aligned}
&y_{n+1}=y_{n-1}+2hf(x_n,y_n) \\
&y_0=\alpha,n=0,1,2,...,N-1
\end{aligned}
\right.
\end{equation}{yn+1=yn−1+2hf(xn,yn)y0=α,n=0,1,2,...,N−1
在EulerEulerEuler公式和梯形公式中,为求得yn+1y_{n+1}yn+1,只需用到前一步的值yny_nyn,这种差分方法称为单步法,这是一种自开始方法.EulerEulerEuler中点公式则不然, 计算yn+1y_{n+1}yn+1时需用到前两步的值yny_nyn , yn−1y_{n-1}yn−1 ,称其为两步方法,两步以上的方法统称为多步法.在EulerEulerEuler公式和EulerEulerEuler中点公式中,需要计算的yn+1y_{n+1}yn+1已被显式表示出来,称这类差分公式为显式公式,而梯形公式中,需要计算的yn+1y_{n+1}yn+1隐含在等式两侧,称其为隐式公式.隐式公式中,每次计算yn+1y_{n+1}yn+1都需解方程,要比显式公式需要更多的计算量,但其计算稳定性较好.
###1.7 改进的EulerEulerEuler方法
从数值积分的角度来看,梯形差分公式计算数值解的精度要比EulerEulerEuler公式好,但它属于隐式公式,不便于计算.实际上,常将EulerEulerEuler公式与梯形差分公式结合使用,通常采用只迭代一次的算法:
{yn+1=yn+h2(K1+K2)K1=f(xn,yn)K2=f(xn+h,yn+hK1)y0=α,n=0,1,2,...,N−1\begin{equation}
\left \{
\begin{aligned}
&y_{n+1}=y_n + \frac{h}{2}(K_1+K_2) \\
&K_1=f(x_n,y_n) \\
&K_2=f(x_n+h,y_n+hK_1)\\
&y_0=\alpha,n=0,1,2,...,N-1
\end{aligned}
\right.
\end{equation}⎩⎨⎧yn+1=yn+2h(K1+K2)K1=f(xn,yn)K2=f(xn+h,yn+hK1)y0=α,n=0,1,2,...,N−1
2 差分公式的误差分析
在节点xn+1x_{n+1}xn+1的误差y(xn+1−yn+1)y(x_{n+1}-y_{n+1})y(xn+1−yn+1),不仅与yn+1y_{n+1}yn+1这一步计算有关,而且与前nnn步计算值yn,yn−1,...,y1y_n,y_{n-1},...,y_1yn,yn−1,...,y1都有关。
为了简化误差分析,着重研究进行一步计算时产生的误差,即假设yn=y(xn)y_n=y(x_n)yn=y(xn),求误差y(xn+1)−yn+1y(x_{n+1})-y_{n+1}y(xn+1)−yn+1,这时的误差称为局部截断误差,它可以反映出差分公式的精度。
如果单步差分公式的局部截断误差为O(hp+1)O(h^{p+1})O(hp+1),则称该公式为**ppp阶方法**.这里ppp为非负整数.显然,阶数越高,方法的精度越高.
研究差分公式阶的重要手段是TaylorTaylorTaylor展开式,一元函数和二元函数的TaylorTaylorTaylor展开式为:
2.1 TaylorTaylorTaylor一元展开式
y(xn+1)=y(xn+h)=y(xn)+y′(xn)h+y′′(xn)2!h2+y′′′(xn)3!h3+O(h4)y(x_{n+1})=y(x_n+h)=y(x_n)+y'(x_n)h+\frac{y''(x_n)}{2!}h^2+\frac{y'''(x_n)}{3!}h^3+O(h^4)y(xn+1)=y(xn+h)=y(xn)+y′(xn)h+2!y′′(xn)h2+3!y′′′(xn)h3+O(h4)
其中,
y′(xn)=f(xn,y(xn))=f(xn,yn)=fny′′(xn)=f′(xn,y(xn))=∂fn∂x+∂fn∂yfny′′′(xn)=f′′(xn,y(xn))=∂2fn∂x2+2∂2fn∂x∂yfn+∂2fn∂y2fn2+∂fn∂x∂fn∂y+(∂fn∂y)2fn\begin{equation}
\begin{aligned}
&y'(x_n)=f(x_n,y(x_n))=f(x_n,y_n)=f_n \\
&y''(x_n)=f'(x_n,y(x_n))=\frac{\partial f_n}{\partial x} + \frac{\partial f_n}{\partial y}f_n \\
&y'''(x_n)=f''(x_n,y(x_n))=\frac{\partial ^2f_n}{\partial x^2} + \frac{2\partial ^2 f_n}{\partial x \partial y}f_n + \frac{\partial ^2f_n}{\partial y^2}f_n^2 + \frac{\partial f_n}{\partial x}\frac{\partial f_n}{\partial y} +\left ( \frac{\partial f_n}{\partial y} \right )^2 f_n
\end{aligned}
\end{equation}y′(xn)=f(xn,y(xn))=f(xn,yn)=fny′′(xn)=f′(xn,y(xn))=∂x∂fn+∂y∂fnfny′′′(xn)=f′′(xn,y(xn))=∂x2∂2fn+∂x∂y2∂2fnfn+∂y2∂2fnfn2+∂x∂fn∂y∂fn+(∂y∂fn)2fn
2.2 TaylorTaylorTaylor二元展开式
f(xn+h,yn+k)=f(xn+yn)+∂f(xn,yn)∂xh+∂f(xn,yn)∂yk+12![∂2f(xn,yn)∂x2h2+2∂2f(xn,yn)∂x∂yhk+∂2f(xn,yn)∂y2k2]+O(h3)f(x_n+h,y_n+k)=f(x_n+y_n)+\frac{\partial f(x_n,y_n)}{\partial x}h+\frac{\partial f(x_n,y_n)}{\partial y}k+\frac{1}{2!}\left [ \frac{\partial ^2f(x_n,y_n)}{\partial x^2}h^2+2\frac{\partial ^2f(x_n,y_n)}{\partial x \partial y}hk+\frac{\partial ^2 f(x_n,y_n)}{\partial y^2}k^2 \right ]+O(h^3)f(xn+h,yn+k)=f(xn+yn)+∂x∂f(xn,yn)h+∂y∂f(xn,yn)k+2!1[∂x2∂2f(xn,yn)h2+2∂x∂y∂2f(xn,yn)hk+∂y2∂2f(xn,yn)k2]+O(h3)
对EulerEulerEuler方法,有
yn+1=yn+hf(xn+yn)y(xn+1)=y(xn+h)=y(xn)+y′(xn)h+y′′(xn)2!h2+y′′′(xn)3!h3+O(h4)=yn+f(xn,yn)h+O(h2)\begin{equation}
\begin{aligned}
y_{n+1}&=y_n+hf(x_n+y_n) \\
y(x_{n+1})&=y(x_n+h)=y(x_n)+y'(x_n)h+\frac{y''(x_n)}{2!}h^2+\frac{y'''(x_n)}{3!}h^3+O(h^4) \\
&=y_n+f(x_n,y_n)h+O(h^2)
\end{aligned}
\end{equation}yn+1y(xn+1)=yn+hf(xn+yn)=y(xn+h)=y(xn)+y′(xn)h+2!y′′(xn)h2+3!y′′′(xn)h3+O(h4)=yn+f(xn,yn)h+O(h2)
从而y(xn+1)−yn+1=O(h2)y(x_{n+1})-y_{n+1}=O(h^2)y(xn+1)−yn+1=O(h2),所以EulerEulerEuler是一阶方法。
3 单步方法的收敛性与稳定性
3.1 单步方法的收敛性
对于给定的初值问题
{y′=f(x,y),a⩽x⩽by(a)=α\begin{equation}
\left \{
\begin{aligned}
& y'=f(x,y),a\leqslant x \leqslant b\\
&y(a)=\alpha
\end{aligned}
\right.
\end{equation}{y′=f(x,y),a⩽x⩽by(a)=α
的单步显示方法可以统一写成如下形式:
yn+1=yn+hΦ(xn,yn,h)(7.1)\begin{equation} y_{n+1}=y_n+h\Phi(x_n,y_n,h) \end{equation} \tag{7.1}yn+1=yn+hΦ(xn,yn,h)(7.1)
其中,Φ(x,y,h)\Phi(x,y,h)Φ(x,y,h)称为增量函数,对于EulerEulerEuler方法,有Φ(x,y,h)=f(x,y)\Phi(x,y,h)=f(x,y)Φ(x,y,h)=f(x,y),对于改进EulerEulerEuler方法,有Φ(x,y,h)=12[f(x,y)+f(x+h,y+hf(x,y))]\Phi(x,y,h)=\frac{1}{2}[f(x,y)+f(x+h,y+hf(x,y))]Φ(x,y,h)=21[f(x,y)+f(x+h,y+hf(x,y))]
定义7.1 单步法的收敛性
设y(x)y(x)y(x)是初值问题(7.1)的解 ,yny_nyn是单步法 (7.1)产生的近似解.如果对任意固定的点xnx_nxn,均有limh→0yn=y(xn)\lim_{h \rightarrow0}y_n=y(x_n)h→0limyn=y(xn),则称单步法(7.1)是收敛的。
可见,若方法(8.5)是收敛的,则当h→0h \rightarrow 0h→0时,整体截断误差en=y(xn)−yne_n=y(x_n)-y_nen=y(xn)−yn将趋于零.
定理7.1
设单步方法(7.1)是p⩾1p\geqslant 1p⩾1阶方法, 增量函数Φ(x,y,h)\Phi(x,y,h)Φ(x,y,h)在区域{a⩽x⩽b,−∞<y<+∞,0⩽h⩽h0}\left \{ a \leqslant x \leqslant b, -\infty < y < +\infty, 0 \leqslant h \leqslant h_0 \right \}{a⩽x⩽b,−∞<y<+∞,0⩽h⩽h0}上连续,且关于y满足LipschitzLipschitzLipschitz条件,初始近似y0=y(a)=αy_0=y(a)=\alphay0=y(a)=α,则方法(7.1)是收敛的,且存在与h无关的常数CCC,使∣y(xn)−yn∣⩽Chp\left | y(x_n)-y_n \right | \leqslant Ch^p∣y(xn)−yn∣⩽Chp
3.2 单步方法的稳定性
定义7.2 单步方法的稳定性
对于初值问题(7.1),取定步长hhh,用某个差分方法进行计算时,假设只在一个节点值yny_nyn上产生计算误差δ\deltaδ,即计算值ynˉ=yn+δ\bar {y_n}=y_n+\deltaynˉ=yn+δ,如果这个误差引起以后各节点值ym(m>n)y_m(m>n)ym(m>n)的变化均不超过δ\deltaδ,则称此差分方法是绝对稳定的.讨论数值方法的稳定性,通常仅限于典型的试验方程y′=λyy'=\lambda yy′=λy,其中λ\lambdaλ是复数且Re(λ)<0Re(\lambda)<0Re(λ)<0.在复平面上,当方法稳定时要求变量λh\lambda hλh的取值范围称为方法的绝对稳定域,它与实轴的交集称为绝对稳定区间。
说明:单步显式方法的稳定性与步长密切相关, 在一种步长下是稳定的差分公式,取大一点步长就可能是不稳定的.收敛性是反映差分公式本身的截断误差对数值解的影响;稳定性是反映计算过程中舍入误差对数值解的影响.只有即收敛又稳定的差分公式才有实用价值.
415

被折叠的 条评论
为什么被折叠?



