常微分方程初值问题的数值解法
未知函数为一元函数的微分方程叫作常微分方程,未知函数为多元函数,从而有多元函数偏导数的方程叫作偏微分方程。微分方程中各阶导数的最高阶数是微分方程的阶。这里讨论一阶常微分方程的初值问题的数值解法
{y′=f(x,y)y(x0)=y0
常微分方程初值问题的数值解法一般分为以下两大类:
-
单步法。单步法是在计算yn+1时,只用到xn+1,xn和yn,即前一步的值。因此,有了初值以后就可以逐步往下计算,其代表是龙格——库塔法
-
多步法。多步法是在计算yn+1时,除用到xn+1,xn和yn以外,还要用到xn−p,yn−p(p=1,2,⋯,k),即前面k步的值,其代表是亚当斯法
函数f(x,y)对x连续且关于y满足李普希茨(Lipschitz)条件:
∣f(x,y1)−f(x,y2)∣≤L∣y1−y2∣.
L>0。称为"lipschitz"常数即存在常数L,对所有的[a,b]区间的x,及任意实数y1,y2均成立,则初值问题在区间[a,b]上有唯一解
此时的Lipschitz常数L不必小于1,这一点与前面章节中讲过的压缩映射的条件有所不同
欧拉法
欧拉(Euler)法是过点P0(x0,y0)作曲线y(x)的切线y’(x0)与直线x=x1交于点P1(x1,y1),用y1作为曲线y(x)上的点(x1,y(x1))的纵坐标y(x1)的近似值
![欧拉法的几何意义]()
欧拉法的几何意义就是用一条初始点重合的折线来近似表示曲线y=y(x)
通常取xx+1-xn=hn=h(常数),则欧拉法计算公式
{yn+1=yn+hf(xn,yn)xn=x0+nh,n=0,1,…
y(xn+1)−yn+1=2h2y′′(ξn)≈2h2y′′(xn)
yn+1=yn+hf(xn+1,yn+1)
后退的欧拉公式与欧拉公式有着本质的区别,欧拉法是显式的;后退欧拉法是隐式的(且精度低,因此不常用)
yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]
改进欧拉法
格式一:
⎩⎪⎪⎨⎪⎪⎧yn+1=yn+hf(xn,yn)yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]y0=α,n=0,1⋯N−1
格式二:
⎩⎪⎪⎪⎨⎪⎪⎪⎧yp=yn+h(yn−yn2xn)yc=yn+h(yp−yp2xn+1)yn+1=21(yp+yc)
求该常微分方程的改进欧拉公式
{dxdy=1+x21−2y2,x∈[0,2]y(0)=0
解:令区间长度为h=2/N
⎩⎪⎪⎨⎪⎪⎧yn+1=yn+hf(xn,yn)yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]y0=0,n=0,1,…,N−1
改进的欧拉公式为:
⎩⎪⎪⎪⎨⎪⎪⎪⎧yn+1=yn+h(1+xn21−2yn2)yn+1=yn+2h(1+xn21−2yn2+1+xn+121−2yn+12)y0=0,n=0,1,…,N−1