2Runge-Kutta方法
- 格式:ppt
- 大小:1.42 MB
- 文档页数:30
龙格库塔法解轨道参数引言龙格库塔法(Runge-Kutta method)是一种常用的数值计算方法,用于求解常微分方程的数值解。
在天体力学中,我们经常需要通过数值方法来计算天体的轨道参数,如轨道椭圆的长短轴、离心率、倾角等。
本文将介绍龙格库塔法在解轨道参数中的应用,并详细探讨该方法的原理和实现过程。
基本原理龙格库塔法是一种迭代求解的方法,在每个时间步长内利用当前的状态来估计下一个状态。
具体而言,龙格库塔法将微分方程的求解问题转化为一个迭代的求解问题,通过逐步迭代来逼近精确解。
在解轨道参数的问题中,我们通常需要根据已知的初始条件以及天体的质量和力学模型来求解天体的轨道参数。
常用的力学模型有开普勒模型和牛顿模型。
龙格库塔法可以根据力学模型的不同进行相应的求解。
开普勒模型下的轨道参数求解步骤一:确定初始条件在使用龙格库塔法求解轨道参数之前,我们需要确定一些初始条件。
这些初始条件包括天体的质量、位置和速度。
步骤二:选择时间步长在求解过程中,我们需要选择一个合适的时间步长。
时间步长越小,计算的精度会越高,但计算的时间会增加。
步骤三:迭代求解利用龙格库塔法进行迭代求解的具体步骤如下:1.根据当前时刻的位置和速度,计算天体在该时刻的加速度。
2.根据当前时刻的位置、速度和加速度,计算下一个时刻的位置和速度。
3.更新当前时刻的位置和速度为新的位置和速度。
4.重复上述步骤,直到达到指定的终止条件。
步骤四:计算轨道参数通过迭代求解,我们可以得到天体在不同时刻的位置和速度。
根据这些位置和速度,我们可以计算出轨道参数,如离心率、倾角、长短轴等。
常用的轨道参数计算公式如下:1.离心率:e=√1+2El2μ(GM⊕)2)2.倾角:i=arccos(ℎzℎ3.长轴:a=−μT22E4.短轴:b=a√1−e2其中,E表示能量,l表示轨道角动量,μ表示标准引力参数,G表示引力常数,M⊕表示地球的质量,ℎ和ℎz分别表示轨道角动量和轨道角动量在z轴上的分量。
龙格-库塔方法(Runge-Kutta)3.2 Runge-Kutta法3.2.1 显式Runge-Kutta法的一般形式上节已给出与初值问题(1.2.1)等价的积分形式(3.2.1)只要对右端积分用不同的数值求积公式近似就可得到不同的求解初值问题(1.2.1)的数值方法,若用显式单步法(3.2.2)当,即数值求积用左矩形公式,它就是Euler法(3.1.2),方法只有一阶精度,若取(3.2.3)就是改进Euler法,这时数值求积公式是梯形公式的一种近似,计算时要用二个右端函数f的值,但方法是二阶精度的.若要得到更高阶的公式,则求积分时必须用更多的f值,根据数值积分公式,可将(3.2.1)右端积分表示为注意,右端f中还不能直接得到,需要像改进Euler法(3.1.11)一样,用前面已算得的f值表示为(3.2.3),一般情况可将(3.2.2)的 表示为(3.2.4)其中这里均为待定常数,公式(3.2.2),(3.2.4)称为r级的显式Runge-Kutta法,简称R-K方法.它每步计算r个f值(即由前面(i-1)个已算出的表示,故公式是显式的.例),而ki如当r=2时,公式可表示为(3.2.5) 其中.改进Euler 法(3.1.11)就是一个二级显式R-K 方法.参数取不同的值,可得到不同公式.3.2.2 二、三级显式R-K 方法对r=2的显式R-K 方法(3.2.5),要求选择参数,使公式的精度阶p 尽量高,由局部截断误差定义11122211()()[(,())(,)]n n n n n n n T y x y x h c f x y x c f x a h y b hk ++=--+++ (3.2.6)令,对(3.2.6)式在处按Taylor 公式展开,由于将上述结果代入(3.2.6)得要使公式(3.2.5)具有的阶p=2,即,必须(3.2.7)即由此三式求的解不唯一.因r=2,由(3.2.5)式可知,于是有解(3.2.8)它表明使(3.2.5)具有二阶的方法很多,只要都可得到二阶精度R-K方法.若取,则,则得改进Euler法(3.1.11),若取,则得,此时(3.2.5)为(3.2.9)其中称为中点公式.改进的Euler法(3.1.11)及中点公式(3.2.9)是两个常用的二级R-K方法,注意二级R-K方法只能达到二阶,而不可能达到三阶.因为r=2只有4个参数,要达到p=3则在(3.2.6)的展开式中要增加3项,即增加三个方程,加上(3.2.7)的三个方程,共计六个方程求4个待定参数,验证得出是无解的.当然r=2,p=2的R-K方法(3.2.5)当取其他数时,也可得到其他公式,但系数较复杂,一般不再给出.对r=3的情形,要计算三个k值,即其中将按二元函数在处按Taylor公式展开,然后代入局部截断误差表达式,可得可得三阶方法,其系数共有8个,所应满足的方程为(3.2.10)这是8个未知数6个方程的方程组,解也是不唯一的,通常.一种常见的三级三阶R-K方法是下面的三级Kutta方法:(3.2.11)附:R-K 的三级Kutta 方法程序如下function y = DELGKT3_kuta(f, h,a,b,y0,varvec) format long; N = (b-a)/h;y = zeros(N+1,1); y(1) = y0; x = a:h:b;var = findsym(f); for i=2:N+1K1 = Funval(f,varvec,[x(i-1) y(i-1)]);K2 = Funval(f,varvec,[x(i-1)+h/2 y(i-1)+K1*h/2]); K3 = Funval(f,varvec,[x(i-1)+h y(i-1)-h*K1+K2*2*h]);y(i) = y(i-1)+h*(K1+4*K2+K3)/6; %满足c1+c2+c3=1,(1/6 4/6 1/6)endformat short; 3.2.3 四阶R-K 方法及步长的自动选择利用二元函数Taylor 展开式可以确定(3.2.4)中r=4,p=4的R-K 方法,其迭代公式为111223344()n n y y h c k c k c k c k +=++++其中1(,)n n k f x y =,2221(,(,))n n n n k f x a h y b hf x y =++,而33311322(,)n n k f x a h y b hk b hk =+++ 44411422433(,)n n k f x a h y b hk b hk b hk =++++共计13个参数待定,Taylor 展开分析局部截断误差,使得精度达到四阶,即误差为5()O h 。
2维的龙格库塔算法
二维龙格-库塔算法是一种数值计算方法,用于解决微分方程的数值解。
它使用龙格-库塔方法(Runge-Kutta methods)在二维空间中迭代地计算方程的解。
以下是二维龙格-库塔算法的基本步骤:
1.定义微分方程:给定一个微分方程 dy/dx = f(x, y),其中 y 是未知函数,x 是
自变量。
2.初始化参数:选择初始值 x0 和 y0,以及步长 h 和迭代的最大步数 n。
3.初始化状态向量:创建一个大小为 (n+1)×2 的数组,用于存储 x 和 y 的值。
4.迭代计算:
a. 计算 k1 = h f(x0, y0)
b. 计算 k2 = h f(x0 + h/2, y0 + k1/2)
c. 计算 k3 = h f(x0 + h/2, y0 + k2/2)
d. 计算 k4 = h f(x0 + h, y0 + k3)
e. 更新 y0 = y0 + (k1 + 2k2 + 2k3 + k4) / 6
f. 更新 x0 = x0 + h
g. 如果 x0 小于或等于 n*h,则跳转到步骤 4,否则算法结束。
5. 输出结果:输出 x 和 y 的值。
以上是二维龙格-库塔算法的基本步骤,具体的实现可能会根据不同的微分方程和需求而有所不同。
二阶runge-kutta法介数证明
二阶Runge-Kutta法是一种常用的数值解常微分方程的方法。
该方法基于以下假设:
1. 求解的常微分方程为一阶方程:dy/dt = f(t, y)。
2. 采用离散化的方式对时间轴进行分割,将时间区间[tn, tn+1]划分为n个子区间,每个子区间的长度为h = (tn+1 - tn)/n。
3. 求解的方程在每个子区间上取常值,即在子区间[tn, tn+1]上可以近似为:y(t) ≈ ytn。
4. 采用迭代的方式,首先将当前y的值初始化为y0,然后通过迭代得到下个时间点的近似值。
5. 第二次迭代的近似值将作为下个时间点的初始值。
基于以上假设,二阶Runge-Kutta法可以描述为以下步骤:
Step 1: 给定初始条件 y0 和迭代时间点 t0,设定步长 h。
Step 2: 计算 k1 = hf(t0, y0)。
Step 3: 计算 k2 = hf(t0 + h/2, y0 + k1/2)。
Step 4: 计算下个时间点的近似值 y1 = y0 + k2。
Step 5: 更新时间点和迭代值,即 t1 = t0 + h,并取 y0 = y1。
Step 6: 重复步骤2到步骤5,直到达到所需的时间点。
通过以上的步骤,二阶Runge-Kutta法可以较好地逼近求解的常微分方程。
其中,k1为在当前时间点t0处的斜率值,k2则是在下个时间点t0 + h/2处的斜率值。
该方法利用了斜率在当前时间点和下个时间点之间的平均变化率来逼近方程的解。
runge-kutta方法Runge-Kutta方法是求解常微分方程组的一种常用数值方法,它是由德国数学家卡尔·龙格和马丁·库塔(Martin Kutta)发明的。
该方法是一种高阶精度的方法,可以求解一阶或高阶的常微分方程组。
$$ y_{n+1} = y_n + \sum_{i=1}^s b_i k_i $$$y_n$表示第$n$个步骤中的输出,$y_{n+1}$是下一个步骤的输出。
$k_i$表示第$i$个中间变量,$b_i$是权值,它们是根据所采用的方法计算得出的。
我们将在下文中详细介绍这些变量和权值的计算方法。
在数值计算中,我们通常采用自适应步长的方法,这需要我们给出一个误差容限值$\epsilon$,根据误差限定步长大小。
如果当前步长不满足误差要求,我们会将步长缩小再进行计算,或者选择更高阶的方法进行计算,以提高精度。
接下来我们将详细介绍如何使用Runge-Kutta方法求解常微分方程组。
1. Runge-Kutta方法的中间变量$k_i$的计算我们需要计算中间变量$k_i$的值。
它们的计算公式如下:$$ k_1 = hf(t_n, y_n) $$$$ k_2 = hf(t_n + c_2 h, y_n + a_{21}k_1) $$$$ ... $$$$ k_s = hf(t_n + c_s h, y_n + \sum_{j=1}^{s-1}a_{sj}k_j) $$$h$表示步长大小,$t_n$和$y_n$分别表示当前时间和状态,$c_i$和$a_{ij}$是与所采用的方法相关的常数。
$$ c_2 = \frac{1}{2} , a_{21} = \frac{1}{2}$$- 改进的Runge-Kutta方法(RK4):根据具体选择的方法,我们可以计算出$k_i$的值。
$b_{ij}$也是与所采用的方法相关的常数,对于不同的方法而言,它们的计算公式不同。
根据计算出的中间变量$k_i$和权值$b_i$,我们可以进行Runge-Kutta方法的迭代,求解常微分方程组。