龙格-库塔方法的特点
- 每个龙格库塔算法都能从泰勒方法推导出来
- 它走的是折中路线,即走每一个步长都会提前进行若干次的函数值计算
- 最常用的是N=4的Runge-Kutta 法
- 需要微积分
Z ( x + △ x , y + △ y ) = Z ( x , y ) + ∂ Z ∂ x △ x + ∂ Z ∂ y △ y Z(x+\bigtriangleup x,y+\bigtriangleup y)=Z(x,y)+\frac{\partial Z}{\partial x}\bigtriangleup x+\frac{\partial Z}{\partial y}\bigtriangleup y Z(x+△x,y+△y)=Z(x,y)+∂x∂Z△x+∂y∂Z△y
详细说明
以二阶龙格库塔算法为例说明
第一点
s
1
=
f
(
x
(
t
)
,
t
)
s_1=f(x(t),t)
s1=f(x(t),t)
s
2
=
f
(
x
(
t
)
+
1
/
2
s
1
△
t
,
t
+
1
/
2
△
t
)
s_2=f(x(t)+1/2s_1\bigtriangleup t,t+1/2\bigtriangleup t)
s2=f(x(t)+1/2s1△t,t+1/2△t)
x
(
t
+
△
t
)
=
x
(
t
)
+
s
2
△
t
x(t+\bigtriangleup t)=x(t)+s_2\bigtriangleup t
x(t+△t)=x(t)+s2△t
第二点
记
f
(
x
,
t
)
=
d
d
t
x
(
t
)
f(x,t)=\frac{\mathrm{d}}{\mathrm{d}t}x(t)
f(x,t)=dtdx(t)
微分方程解的泰勒展开:
x
(
t
+
△
t
)
=
x
(
t
)
+
f
(
x
,
t
)
△
t
+
1
2
d
2
x
d
t
2
△
t
2
+
.
.
.
x(t+\bigtriangleup t)=x(t)+f(x,t)\bigtriangleup t+\frac{1}{2}\frac{\mathrm{d^2}x}{\mathrm{d}t^2}\bigtriangleup t^2+...
x(t+△t)=x(t)+f(x,t)△t+21dt2d2x△t2+...
其中二阶项展开:
d
2
x
d
t
2
=
d
d
t
f
(
x
,
t
)
=
∂
f
∂
t
f
+
∂
f
∂
t
\frac{\mathrm{d^2}x}{\mathrm{d}t^2}=\frac{\mathrm{d}}{\mathrm{d}t}f(x,t) =\frac{\partial f}{\partial t}f+\frac{\partial f}{\partial t}
dt2d2x=dtdf(x,t)=∂t∂ff+∂t∂f
第三点
推导过程:
f
(
x
(
t
)
+
1
/
2
s
1
△
t
,
t
+
1
/
2
△
t
)
=
f
(
x
(
t
)
,
t
)
+
∂
f
∂
x
1
/
2
f
(
x
(
t
)
,
t
)
△
t
+
∂
f
∂
t
1
/
2
△
t
f(x(t)+1/2s_1\bigtriangleup t,t+1/2\bigtriangleup t)=f(x(t),t)+\frac{\partial f}{\partial x}1/2f(x(t),t)\bigtriangleup t+\frac{\partial f}{\partial t}1/2\bigtriangleup t
f(x(t)+1/2s1△t,t+1/2△t)=f(x(t),t)+∂x∂f1/2f(x(t),t)△t+∂t∂f1/2△t
上
式
=
f
(
x
(
t
)
,
t
)
+
1
/
2
△
t
(
∂
f
∂
x
f
(
x
(
t
)
,
t
)
+
∂
f
∂
t
)
上式=f(x(t),t)+1/2\bigtriangleup t(\frac{\partial f}{\partial x}f(x(t),t)+\frac{\partial f}{\partial t})
上式=f(x(t),t)+1/2△t(∂x∂ff(x(t),t)+∂t∂f)
上
式
=
f
(
x
(
t
)
,
t
)
+
1
/
2
△
t
(
∂
f
∂
x
f
(
x
(
t
)
,
t
)
+
∂
f
∂
t
)
上式=f(x(t),t)+1/2\bigtriangleup t(\frac{\partial f}{\partial x}f(x(t),t)+\frac{\partial f}{\partial t})
上式=f(x(t),t)+1/2△t(∂x∂ff(x(t),t)+∂t∂f)
上
式
=
f
(
x
(
t
)
,
t
)
+
1
/
2
△
t
d
2
x
d
t
2
上式=\boldsymbol{f(x(t),t)+1/2\bigtriangleup t\frac{\mathrm{d^2}x}{\mathrm{d}t^2} }
上式=f(x(t),t)+1/2△tdt2d2x (龙格库塔的核心思想)
核心思想:
把二阶导数的表达式用一阶导数“表示”出来,这意味着计算量减少(默认二阶导数的计算量比一阶大)但同时精度并没有减少。
accuracy higher with less time
第四点
解释一下 s 2 s_2 s2的系数为什么有个1/2,注意这不是巧合!