《计算机数学基础(2)》辅导―第14章 常微分方程的数值解法(2002级(春)用) 中央电大 冯 泰第14章 常微分方程的数值解法一、重点内容 欧拉公式:),...,,,(),()(1-210=⎩⎨⎧+=+=≈01+1+n k kh x x y x hf y y x y kk k k k k局部截断误差是O (h 2). 改进欧拉公式:梯形公式: y (x k +1)≈y k +1=y k +2h [f (x k ,y k )+f (x k +1,y k +1)](k =0,1,2,…,n -1)预报-校正公式:⎪⎩⎪⎨⎧++=+=++++)],(),([2),(1111k k k k k k k k k k y x f y x f h y y y x hf y y 校正值预报值即 ))],(,(),([211k k k k k k k k y x hf y x f y x f h y y +++=++平均的形式公式:⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=1+1+)(),(),(c p k p k k c k k k p y y y y x hf y y y x hf y y改进欧拉法的局部截断误差是O (h 3)。
龙格-库塔法二阶龙格-库塔法的局部截断误差是O (h 3) 三阶龙格-库塔法的局部截断误差是O (h 4) 四阶龙格−库塔法公式: )22(643211κκκκ++++=+h y y k k其中 κ1=f (x k ,y k );κ2=f (x n +12h ,y k +21h κ1);κ3=f (x k +12h ,y n +21h κ2);κ4=f (x k +h ,y k +h κ3) 四阶龙格-库塔法的局部截断误差是O (h 5).二、实例例1 用欧拉法解初值问题⎩⎨⎧1=060≤≤0--='2)().(y x xy y y ,取步长h =0.2.计算过程保留4位小数.解h =0.2, f (x )=-y -xy 2.首先建立欧拉迭代公式)2,1,0)(4(2.0),(21=-=--=+=+k y x y y hx hy y y x hf y y k k k kk k k k k k k当k =0,x 1=0.2时,已知x 0=0,y 0=1,有y (0.2)≈y 1=0.2×1(4-0×1)=0.800 0 当k =1,x 2=0.4时,已知x 1=0.2, y 1=0.8,有y (0.4)≈y 2=0.2×0.8×(4-0.2×0.8)=0.614 4 当k =2,x 3=0.6时,已知x 2=0.4,y 2=0.614 4,有y (0.6)≈y 3=0.2×0.614 4×(4-0.4×0.4613)=0.800 0例2 用欧拉预报-校正公式求解初值问题⎩⎨⎧1=10=++'2)(sin y x y y y ,取步长h =0.2,计算y (0.2),y (0.4)的近似值,计算过程保留5位小数.l解 步长h =0.2, 此时f (x ,y )=-y -y 2sin x .欧拉预报-校正公式为:⎪⎩⎪⎨⎧++=+=++++)],(),([2),(1111k k k k k k k k k k y x f y x f h y y y x hf y y 校正值预报值有迭代公式:⎪⎪⎪⎩⎪⎪⎪⎨⎧+--=--+--+=-=--+=++++++++)s i n (1.0)s i n 1.09.0()]sin ()sin [(2)sin 2.08.0()sin (121112112121k k k k k k k k k k k k k k k k k k k k k k x y y x y y x y y x y y h y y x y y x y y h y y 校正值预报值当k =0,x 0=1, y 0=1时,x 1=1.2,有631710=11⨯02-80⨯1=20-80=0001.)sin .()sin ..(x y y y715490=21631710+63171010-1⨯1⨯10-90⨯1=≈2121.).s i n ..(.)s i n ..().(y y 当k =1,x 1=1.2, y 1=0.71549时,x 2=1.4,有476970=21715490⨯02-80⨯715490=20-80=1112.).sin ..(.)sin ..(x y y y).s i n ..(.).s i n ...(.).(41476970+47697010-21⨯715490⨯10-90⨯715490=≈4122y y=0.52608 例3 用改进的欧拉法平均公式,取步长h =0.1,求解初值问题⎩⎨⎧=≤≤+='1)0()2.00(y x y x y计算过程保留4位小数.解 首先建立迭代格式:⎪⎪⎪⎩⎪⎪⎪⎨⎧+++++=+=++++=+=++=+=++++k k k c p k kk k p k k c k k k k k p y h h hx x h h y y y x h hx h h y y x hf y y h y hx y x hf y y )21(])1([21][21)1(),()1(),(2112121 (7分)当k =0时,x 0=0,y 0=1,x 1=0.1,有11.11)21.01.01(]1.01.00)1.01(1.0[2121=⨯+++⨯+⨯+⨯=y (11分)当k =1时,x 1=0.1, y 1=1.11, x 2=0.2,有1242.111.1)21.01.01(]2.01.01.0)1.01(1.0[2122=⨯+++⨯+⨯+⨯=y所求y (0.1)≈1.11; y (0.2)≈1.242 1例4 写出用四阶龙格-库塔法求解初值问题⎩⎨⎧2=03-8=')(y y y 的计算公式,取步长h =0.2计算y (0.4)的近似值.计算过程保留4位小数.解 此处f (x ,y )=8-3y , 四阶龙格-库塔法公式为)22(643211κκκκ++++=+h y y k k其中 κ1=f (x k ,y k );κ2=f (x n +12h ,y k +21h κ1);κ3=f (x k +12h ,y n +21h κ2);κ4=f (x k +h ,y k +h κ3)本例计算公式为: )(.43211++2+2+620+=κκκκk k y y其中 κ1=8-3 y k ;κ2=5.6-2.1 y k ;κ3=6.32-2.37y k ; κ4=4.208+1.578y k )1,...,2,1,0(5494.02016.1))578.1208.4()37.232.6(2)1.26.5(238(62.01-=+=-+-+-+-+=+n k y y y y y y y k k k k k k k当x 0=0,y 0==2,46542=30042⨯54940+20161=54940+20161=≈4030042=2⨯54940+20161=54940+20161=≈201201......).(.....).(y y y y y y例5 选择填空题:1. 取步长h =0.1, 用欧拉法求解初值问题⎪⎩⎪⎨⎧1=1+='2)(y yxy y 的计算公式是 答案:1,1,...,2,1,0],)1.01(1.01.1[021=-=++=+y n k k y y k k解答:欧拉法的公式),...,,,(),()(1-210=⎩⎨⎧+=+=≈01+1+n k kh x x y x hf y y x y kk k k k k 此处y xyy x f +=2),(,迭代公式为1=210=10+110+11=+10+110+=0221+y k k y y k y y y k k k k k ,...,,,),).(..()).((. 2. 改进欧拉法的平均形式公式是( ).(A)⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=1+)(),(),(c p k p k k c k k k p y y y y x hf y y y x hf y y (B)⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=1+1+1+)(),(),(c p k p k k c k k k p y y y y x hf y y y x hf y y(C)⎪⎪⎪⎩⎪⎪⎪⎨⎧+2=+=+=1+1+)(),(),(c p k p k k c k k k p y y h y y x hf y y y x hf y y (D)⎪⎪⎪⎩⎪⎪⎪⎨⎧+21=+=+=1+1+)(),(),(c p k p k k c k k k p y y y y x hf y y y x hf y y答案:(D)解答:见改进欧拉法平均形式公式.3. 解微分方程初值问题的方法,( )的局部截断误差为O (h 3).(A) 欧拉法 (B)改进欧拉法 (C)三阶龙格-库塔法 (D) 四阶龙格-库塔法答案:(B)解答:改进欧拉法的局部截断误差是二阶精度,O(h 3)。