【问题标题】:RK4 - Runge-Kutta Algorithm for ODEs of a single variableRK4 - 单变量 ODE 的龙格-库塔算法
【发布时间】:2016-12-07 17:56:59
【问题描述】:

如果这是一个简单/愚蠢的问题,请提前道歉。

我见过的每一个关于 RK4 的解释都使用两个变量的函数;例如。 f' = f(u, t),初始条件为 t0 和 u0=u(t0),步长值为 Δt .

这导致以下近似方法:

k1 = Δt * f'(tn,yn)

k2 = Δt * f'(tn + (1/2) *Δt, yn + (1/2 ) * k1)

k3 = Δt * f'(tn + (1/2) *Δt, yn + (1/2 ) * k2)

k4 = Δt * f'(tn + Δt,yn + k3)

屈服:

un+1 = un + (1/6)*(k1 + 2*k2 + 2* k3 + k4)

tn+1 = tn + Δt

单个变量如何发挥作用,例如。 u' = u(t) 初始条件 t0 和 u0=u(t0) 和 Δt 的步长值改变方法的实现?

【问题讨论】:

  • 函数应该是f'=f(t,u)(时间是第一个变量)
  • @Aziz 这只是一个约定。每个人都明白他们在这里写的方式。
  • 你的函数只是没有明确的依赖于 t。所以,它和你已经写的一样,只需将 t 替换为 0。
  • @jojo 不,我指的不是约定。该问题在顶部有 f(u,t),但在 RK4 方程中使用 f(t,u)。我确定这是一个错字,但必须澄清。
  • @Aziz 很公平,这确实是一个不一致的地方。

标签: algorithm numerical-methods differential-equations


【解决方案1】:

实现根本不需要改变。您的函数只是 f(t, u) = 2 u - 1 (也就是说,没有明确的f 中对 t 的依赖;只是一个隐含的依赖,因为 u 本身就是 t 的函数)。只需应用该方法并进行相应操作即可。

【讨论】:

    【解决方案2】:

    你的 ODE

    不是明确的时间函数t。因此,在 RK4 方程中,您有:

    在替换 u' 之后,将是:

    然后你可以简单地计算 un+1.

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      相关资源
      最近更新 更多