一、待解问题
讨论常微分方程的初值问题,边值问题的数值解法,最常用的基本方法就是龙格-库塔法使一些物理方程的计算简便,所得结果的精确提高。
下面是利用龙格-库塔法求解一个质点运动的常微分方程 以初速v08km/s自地球表面(半径R6000km)竖直向上发射一质量为 m 的火箭,如图所示。若不计空气阻力,火箭所受引力 F 大小与它到地心距离的平方成反比,求火箭所能到达的最大高度H。
火箭为我们分析的对象,对其做受力分析,火箭在任意位置 x 处仅受地球引力F 作用。由题意知,F 的大小与 x2 成反比,设为比例系数,则有:
F2 (1)
x当火箭处于地面时,即xR时F = m g ,由式(1)可得mgR2,于
mgR2是火箭在任意位置 x 处所受地球引力 F 的大小为 F2
x由于火箭作直线运动,火箭的直线运动微分方程式为:
d2xmgR2m22dtx分离变量积分
d2xdvdvdxdvv2dtdxdxdt dt2dvmgR
mv
dxx2dvgR22dxvx
二、物理机理
1.龙格-库塔法的基本思想及一般形式
设初值问题yy(x)[a,b],由微分中值定理可知,必存在[xn,xn1],使
y(xn1)y(xn)hy()y(xn)hf(,y())设yny(xn),并记K*f(,y()),则
y(xn1)ynhK*
其中K*称为y(x)在[xn,xn1]上的平均斜率,只要对平均斜率K*提供一种算法,上式就给出了一种数值解公式,例如,用K1f(xn,yn)代替K*,就得到欧拉公式,用K2f(xn1,yn1)代替K*,就得到向后欧拉公式,如果用K1,K2的平均值来代替K*,则可得到二阶精度的梯形公式。可以设想,如果在[xn,xn1]上能多预测几个点的斜率值,用它们的加权平均值代替K*,就有望的到具有较高精度的数值解公式,这就是龙格-库塔(Runge-Kutta)法的基本思想。 龙格-库塔公式的一般形式:
yn1ynhcikii1r
K1f(xn,yn)Kif(xnih,ynhijKj)j1i1 (1)
其中Ki是yy(x)在xnih(0i1)点的斜率预测值;ci,i,ij均为常数,选取这些常数的原则是使(1)式有尽可能高的精度。 2. 二阶龙格-库塔法
r2的龙格-库塔公式为:
yn1ynh(c1K1c2K2)K1f(xn,yn)K2f(xn2h,ynh21K1) (2)
式中c1,c2,2,21均为待定常数,我们希望适当的选取这些系数使公式的精度尽可能高,先将K2按照二元函数泰勒级数:
1f(xn2h,ynh21K1)(2hh21)kf(xn,yn)...
xyk0k!n展开得到:
K2f(xn,yn)2hfx(xn,yn)21hfy(xn,yn)f(xn,yn)122[2hfxx(xn,yn)2221h2fxy(xn,yn)f(xn,yn)2!2221hfyy(xn,yn)f2(xn,yn)]...
为了叙述方便,把f(xn,yn)和偏导数里面的xn,yn省略不写,将K2代入(2)式的第一式,得:
yn1ynh(c1c2)fh2c2(2fx21fyf)c222h(2fxx2221fxyf21fyyf2)23再用泰勒公式将y(xn1)展开,先计算得到以下各式:
yf(x,y)yfxfyfyfxx2fxyffyyf2fy(fxfyf)再代入泰勒公式中:
h2h3y(xn1)y(xn)hy(xn)y(xn)y(xn)...2!3!h2h3ynhf(fxfyf)(fxx2fxyffyyf2
26fxfyfyf)...得到局部阶段误差为:
Rn1y(xn1)yn111h(1c1c2)fh2[(c22)fx(c221)fyf]2211231 h[(c22)fxx(c2221)fxyf623112(c221)fyyf2fy(fxfyf)]...62要使局部截断误差为O(h3),f,fx,fyf的系数需为零,于是
c1c211 21c2212c22该方程组有4个未知数3个方程,所以有无穷多个解,它的每组解代入(2)式得到的近似公式都为二阶龙格-库塔方法。例如,取
1c1c2,2211,得到近似公式为:
2
hyn1yn(K1K2)2K1f(xn,yn)K2f(xnh,ynhK1)此处参数还有许多种不同的值,这里不再举例说明。
3、四阶龙格-库塔法
四阶龙格-库塔法的表达形式如下:
yn1ynh(c1K1c2K2c3K3c4K4)K1f(xn,yn)K2f(xna1h,ynb1K1)K3f(xna2h,ynb2K1b3K2)K4f(xna3h,ynb4K1b5K2b6K3)仿照二阶龙格-库塔法的解法,通过N=4阶的泰勒级数的系数匹配,使局部截断误差为O(h5),
b1a1b2b3a2b4b5b6a3w1w2w3w4112122w2a12w3a2w4a33133w2a13w3a2w4a34w2a1w3a2w4a3w3a1b3w4(a1b5a2b6)1618
w3a1a2b3w4a3(a1b5a2b6)1wabw4(abab)121w4a1b3b6242313215226得到11个方程和13个未知量,因此需要补充两个条件
1a1,b20,求解得到。
2
111a2,a31,b1,b3,b40,b50,2221111b61,w1,w2,w3,w46336最后得出经典的四阶龙格-库塔公式:
hyn1yn(K12K22K3K4)6K1f(xn,yn)hhK2f(xn,ynK1)22hhK3f(xn,ynK2)22K4f(xnh,ynhK3)
三、数值计算方案
微分方程用积分可以解得火箭达到的高度,但是如果用数值方法解微分方程,所得的结果要精确得多。所以对于模型中的微分方程,用四阶龙格-库塔法对其求解所得结果精度更高,该方法还可以应用更为复杂的微分方程,如布朗动力学运动方程,但是对于高阶的微分方程,需对其降阶再。
上述模型中v08km/s,地球半径取x0R6000km千米,火箭到达最大高度处的速度为0,设当vi0时所对应的火箭距离地球球心的高度为xi,那么HxiR即为火箭能达到的最大高度。
对于以下微分方程及其初值
dvgR236107 2dxvxvx2,RxRHv8,xR6000 0 0
73610可知 f ( x , v ) ,利用上述所求的四阶龙格-库塔公式得到vx2该模型的龙格-库塔式子:
hvn1vn(K12K22K3K4)6K1f(xn,vn)hhK2f(xn,vnK1)22hhK3f(xn,vnK2)22K4f(xnh,vnhK3)
根据题目,有初值v06,x06000, 即可求解. 取h=0.4
36107K1f(x0,v0)1.25 28(6000)K2f(6000.2,7.75)1.2902
K3f(6000.2,7.74196)1.2905
K4f(6000.4,7.4838)1.3360
0.4v18(1.2521.290221.29051.3360)7.48351
6......
vn0
代入四阶龙格-库塔公式计算,直至vn0。步长选取为h0.4,
相应的xix0h,vi对应的值,直到vi0时,取到相应的xi,则最大高度HxiR.
四、流程图
初始值v08,x06000,h0.4求出vi0将vi,xi再次代入 K1,K2,vi,xi vi0得出HxiR
因篇幅问题不能全部显示,请点此查看更多更全内容