对Rnuge-Kutta算法的理解

龙格-库塔方法的特点

  • 每个龙格库塔算法都能从泰勒方法推导出来
  • 它走的是折中路线,即走每一个步长都会提前进行若干次的函数值计算
  • 最常用的是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)+xZx+yZy

详细说明

以二阶龙格库塔算法为例说明

第一点

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/2s1t,t+1/2t)
x ( t + △ t ) = x ( t ) + s 2 △ t x(t+\bigtriangleup t)=x(t)+s_2\bigtriangleup t x(t+t)=x(t)+s2t

第二点

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+21dt2d2xt2+...
其中二阶项展开:
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)=tff+tf

第三点

推导过程:
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/2s1t,t+1/2t)=f(x(t),t)+xf1/2f(x(t),t)t+tf1/2t
上 式 = 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/2t(xff(x(t),t)+tf)
上 式 = 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/2t(xff(x(t),t)+tf)
上 式 = 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/2tdt2d2x (龙格库塔的核心思想)

核心思想:

把二阶导数的表达式用一阶导数“表示”出来,这意味着计算量减少(默认二阶导数的计算量比一阶大)但同时精度并没有减少。

accuracy higher with less time
第四点

解释一下 s 2 s_2 s2的系数为什么有个1/2,注意这不是巧合!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值