第七章常微分方程的数值解法 §1引言 只含有一个未知数的微分或导数的方程称为常微分方程 (Ordinary Differential Equation), HEtu f(x,y,y)=0 一个常微分方程如果有解,则有无数个解,称为通解 ( General solution);其中的某一个确定的解称为特解 (Particular Solution 考虑初值问题 l(o)=y
第七章 常微分方程的数值解法 §1 引言 只含有一个未知数的微分或导数的方程称为常微分方程 (Ordinary Differential Equation),形如 f x y y ( , , ) 0. = 一个常微分方程如果有解,则有无数个解,称为通解 (General Solution);其中的某一个确定的解称为特解 (Particular Solution). 考虑初值问题 0 0 ( , ) ( ) y f x y y x y = =
定理7.1(初值问题解的存在唯一性) 设f(x,y)在D={≤xsb,<y<+上有定义且连续,同 时满足李普希兹条件 ∫(x,y)-f(x,y)≤Ly-y,(x,y,(x,y)∈D 其中L为李普希兹常数,则初值问题(71)的解存在且唯一, 并且解y(x)连续可微。 定理72如果(xy)满足李普希兹条件,则初值问题是稳定的。 仅有少数常微分方程可求解析解,大部分只能求数值解, 即求出在区间[ab上若干离散点a=x<x<x2<…<xn=b 处函数值的近似值n1y2;…yn 本章介绍求解常微分方程(组)的常用数值方法
定理7.1(初值问题解的存在唯一性) 设f(x,y)在 上有定义且连续,同 时满足李普希兹条件 其中L为李普希兹常数,则初值问题(7.1)的解存在且唯一, 并且解y(x)连续可微。 D a x b y = − + { , } * * * f x y f x y L y y x y x y D ( , ) ( , ) , ( , ), ( , ) − − 定理7.2 如果f(x,y)满足李普希兹条件,则初值问题是稳定的。 本章介绍求解常微分方程(组)的常用数值方法。 仅有少数常微分方程可求解析解,大部分只能求数值解, 即求出在区间[a,b]上若干离散点 处函数值的近似值 0 1 2 n a x x x x b = = 1 2 , , , . n y y y
§2泰勒级数法( Taylor Series Method) 素勒展开式 y(x+b)=y(x)+y(x)+y(x)+…+yP(x)+O(h) 2! 2! 对于初值问题 ∫y=f(x,y) (x0)=y 考虑其解y=y(x)在初值点x处的p阶泰勒多项式 y)+y(x)+1x)+…+ 2!
§2 泰勒级数法(Taylor Series Method) 泰勒展开式 对于初值问题 0 0 ( , ) ( ) y f x y y x y = = 2 ( ) 1 ( ) ( ) ( ) ( ) ( ) ( ) 1! 2! 2! p h h h p p y x h y x y x y x y x O h + + = + + + + + 考虑其解y=y(x)在初值点x0处的p阶泰勒多项式 2 ( ) 0 0 0 0 0 ( ) ( ) ( ) ( ) ( ) 1! 2! 2! p h h h p y x h y x y x y x y x + + + + + 1 y x( )y1 =
y=y(x)+y(x)+my”(x)+…+,yP(x) 2! 2! 其中 y(ro)=yo y(x=f(x,y) y(ro)=f(ro,yo)=fo →y(x)=(+ff 将上述各阶导数值代入*式,即得y1的值; 再以(x11为起点,建立X1点的Tayo多项式,计算出y2如此 继续,依次通过 htS c乡×4 可求出数值解y,y2,…,yn
2 ( ) 1 0 0 0 0 ( ) ( ) ( ) ( ) 1! 2! 2! p h h h p y y x y x y x y x = + + + + 其中 0 0 y x y ( ) = y x f x y ( ) ( , ) = 0 0 ( ) ( ) x y y x f f f = + 0 0 0 0 y x f x y f ( ) ( , ) = ( ) f f y x y x y = + 将上述各阶导数值代入*式,即得y1的值; 再以(x1 ,y1 )为起点,建立x1点的Taylor多项式,计算出y2 ,如此 继续,依次通过 可求出数值解 1 2 , , , . n y y y 2 ( ) 1 1! 2! 2! p p n n n n n h h h y y y y y + = + + + +
例1取步长h=01,用二阶泰勒多项式求解初值问题 (0≤x≤) (0)=1 解: h ∴ 2! 2! 由于y=y,故有y=(y)=2yy=2 于是,相应的二阶泰勒多项式的迭代式为 hh +-y2+-2 n+1 212y=y,+012+0.001y7 由初值x。=0y0=1开始迭代,计算结果为
例1 取步长h=0.1,用二阶泰勒多项式求解初值问题 解: 由于 2 1 (0 ) (0) 1 2 y y x y = = 2 ( ) 1 1! 2! 2! p p n n n n n h h h y y y y y + = + + + + 2 y y = , 3 故有 y y y y y = = = ( ) 2 2 , 于是,相应的二阶泰勒多项式的迭代式为 2 2 3 1 2 1! 2! n n n n h h y y y y + = + + 2 3 0.1 0.001 n n n = + + y y y 由初值x0=0,y0=1开始迭代,计算结果为
Xn0.1 0.2 0.3 0.4 0.5 yn1110012468914217416262197087 y(×n)11111250001.428571666720000 (此初值问题的解析解为y 1-x 定义71假定y=y(xn,在此前提下用某种数值方法精确计算得到 yn1称Rn+=y(xn+)yn+1为该数值方法的局部截断误差。 定义72若数值方法的局部截断误差为Rn+=0(hP+,则称该方法 具有p阶精度或p阶方法,其中p为正整数。 结论展开至p阶的泰勒级数法具有p阶精度
xn 0.1 0.2 0.3 0.4 0.5 yn 1.11000 1.24689 1.42174 1.66262 1.97087 y(xn ) 1.11111 1.25000 1.42857 1.66667 2.00000 (此初值问题的解析解为 1 .) 1 y x = − 定义7.1 假定yn=y(xn ), 在此前提下用某种数值方法精确计算得到 yn+1, 称 Rn+1=y(xn+1)-yn+1 为该数值方法的局部截断误差。 定义7.2 若数值方法的局部截断误差为 Rn+1=O(hp+1), 则称该方法 具有p阶精度或p阶方法,其中p为正整数。 结论 展开至p阶的泰勒级数法具有p阶精度
§3基于数值微分公式的方法 y=f(r, y) 对于初值问题 中的微分方程, V(m-v(xn) 使用向前差商数值微分公式y(x)≈m 由于y(xn)=f(x,y(x),故有 (,)-y(x,) f(rn,y(xn)) 用近似值yn代替y(x),得yx1)-y=/xn,y) 整理即得 (x)≈yn+h·f(xn2y) 欧拉Eue)公式:yn=y+h,f(x2,yn) h2 局部截断误差M+25)≤0h2),xn<5n<xmH
§3 基于数值微分公式的方法 对于初值问题 中的微分方程, 0 0 ( , ) ( ) y f x y y x y = = 使用向前差商数值微分公式 1 ( ) ( ) ( ) n n n y x y x y x h + − 由于 1 ( ) ( ) ( , ( )) n n n n y x y x f x y x h + − y x f x y x ( ) ( , ( )), n n n = 故有 用近似值 yn 代替 y x( ) n ,得 1 ( ) ( , ) n n n n y x y f x y h + − = 整理即得 1 ( ) ( , ) n n n n y x y h f x y + + 欧拉(Euler)公式: 1 ( , ) n n n n y y h f x y + = + 局部截断误差 2 2 1 1 ( ) ( ), 2 n n n n n h R y O h x x + + = =
f(x, y 对于初值问题 中的微分方程, y(mi)(x) 使用向后差商数值微分公式y(xn1)x 得后退欧拉公式:ym+=yn+h:f(x1,ym) h2 y(S)=O(h) 局部截断误差Rn+=2n x <s sx 对上述两种公式进行平均,得梯形公式(改进的欧拉公式) ym=yn+-.(n,ym)+f(m,ym) 局部截断误差Rn1=-y"n)=O(h),xn<5n<xn1
对于初值问题 中的微分方程, 0 0 ( , ) ( ) y f x y y x y = = 使用向后差商数值微分公式 1 1 ( ) ( ) ( ) n n n y x y x y x h + + − 得后退欧拉公式: 1 1 1 ( , ) n n n n y y h f x y + + + = + 局部截断误差 2 2 1 1 ( ) ( ), 2 n n n n n h R y O h x x + + = − = 对上述两种公式进行平均,得梯形公式(改进的欧拉公式): 1 1 1 [ ( , ) ( , )] 2 n n n n n n h y y f x y f x y + + + = + + 局部截断误差 3 3 1 1 ( ) ( ), 2 n n n n n h R y O h x x + + = − =
欧拉Euer)公式:yn=yn+h,f(x2,yn 显式法 后退欧拉Eue)公式:y=yn+h,f(x1,ym) h 梯形公式:yn1=yn+=[f(xn2y)+f(xn+,yn+) 隐式法 隐式法的求解方法(以梯形公式为例) n=yth f(n,yn) y4)=yn+=[f(xn2yn)+f(xm1,y)(k=0,12,…) 反复迭代,直至满足精度要求1-y1<E为止,将y 作为xn*1点的数值解
后退欧拉(Euler)公式: 1 1 1 ( , ) n n n n y y h f x y + + + = + 梯形公式: 1 1 1 [ ( , ) ( , )] 2 n n n n n n h y y f x y f x y + + + = + + 欧拉(Euler)公式: 1 ( , ) n n n n y y h f x y + = + ——显式法 隐 式 法 隐式法的求解方法(以梯形公式为例) ( 1) ( ) 1 1 1 [ ( , ) ( , )] ( 0,1,2, ) 2 k k n n n n n n h y y f x y f x y k + + + + = + + = (0) 1 ( , ) n n n n y y h f x y + = + 反复迭代,直至满足精度要求 为止,将 作为xn+1点的数值解。 ( 1) ( ) 1 1 k k n n y y + + + − ( 1) 1 k n y + +
§4龙格一库塔法( Runge-Kutta Method) 在泰勒级数法当中 h h ym=y(x,)+y(n)+ay(r,)+ 考虑用f(xy)在不同点的值的线性组合来代替其中的导数项。 以二阶龙格一库塔公式为例。二阶泰勒展式为 ym=y(,)+h f(n, y(n))++ffn() 假定上式等价于yn=yn+ck+c2k2 其中 k=h f (rn,yn) k2=h·f(xn+h,yn+k) 参数C,C21,A1待定,要求方法达到二阶精度
§4 龙格-库塔法(Runge-Kutta Method) 在泰勒级数法当中 考虑用f(x,y)在不同点的值的线性组合来代替其中的导数项。 以二阶龙格-库塔公式为例。二阶泰勒展式为 假定上式等价于 其中 2 ( ) 1 ( ) ( ) ( ) ( ) 1! 2! ! p p n n n n n h h h y y x y x y x y x p + = + + + + 2 1 ( ) ( , ( )) ( ) 2 ! (*) n n n n x y n h y y x h f x y x f f f + = + + + n n 1 1 1 2 2 y y c k c k + = + + 1 2 1 1 1 ( , ) ( , ) n n n n k h f x y k h f x h y k = = + + 参数 c c 1 2 1 1 , , , 待定,要求方法达到二阶精度