驱动阻尼摆的四阶龙格-库塔法

计算科学 龙格库塔
2021-12-25 03:40:13

虽然我一直在到处寻找,但我一直无法找到我的问题的答案,所以就在这里。对于驱动阻尼摆,无量纲单位的运动方程为,

α(ω,θ,t)=c ωsinθ+F(t).

我的问题是获得我的下一步ω(t+Δt). 我知道时间该做什么tω, 但不是为了θ. 四阶 RK 方法几乎可以在任何地方找到

ω(t+Δt)=ω(t)+(k1+2k2+2k3+k4)Δt/6,

我对输入什么特别困惑θ在里面k1,k2. . . 计算。第一个很容易,但我不确定其余的:

k1=α(ω(t), θ(t), t)k2=α(ω(t)+k1Δt/2, θ(t)+ ???, t+Δt/2)k3=α(ω(t)+k2Δt/2, θ(t)+ ???, t+Δt/2)k4=α(ω(t)+k3Δt, θ(t)+ ???, t+Δt).

从这里解决下一个θ(t+Δt)很简单,我只需要帮助知道如何执行上述等式。似乎我见过的所有示例都仅显示了两个变量而不是三个变量的示例。

1个回答

让我们定义那么要求解的微分方程组可以表示为:u=[θ,ω]T=[u1,u2]T

u˙=f(t,u)=[u2cu2sin(u1)+F(t)]

因此,得到的龙格-库塔公式为:

k1=f(tk,uk)k2=f(tk+Δt2,uk+Δt2k1)k3=f(tk+Δt2,uk+Δt2k2)k4=f(tk+Δt,uk+Δtk3)uk+1=uk+Δt6(k1+2k2+2k3+k4)

其中正如nicoguaro所指出的,这只是 Runge-Kutta 方程的向量形式。它假设你的函数为你正在积分的状态接受一个向量输入。tj=t0+jΔtuj=u(tj)f(,)