braincell.quad.heun3_step#
- braincell.quad.heun3_step(target, *args)[source]#
Advance one step with Heun’s third-order Runge-Kutta method.
Heun’s three-stage third-order Runge-Kutta scheme:
\[\begin{split}k_1 &= f(t_n, y_n), \\ k_2 &= f\!\left(t_n + \tfrac{1}{3}\Delta t,\ y_n + \tfrac{1}{3}\Delta t \, k_1\right), \\ k_3 &= f\!\left(t_n + \tfrac{2}{3}\Delta t,\ y_n + \tfrac{2}{3}\Delta t \, k_2\right), \\ y_{n+1} &= y_n + \tfrac{\Delta t}{4}\left(k_1 + 3 k_3\right).\end{split}\]Local truncation error is \(O(\Delta t^4)\); global error is \(O(\Delta t^3)\).
- Parameters:
target (
DiffEqModule) – Differential-equation module to advance.*args – Extra positional arguments forwarded to
target’s integration hooks.
- Returns:
Updates target’s state in place.
- Return type:
None
See also
Notes
Butcher tableau (
heun3_tableau):\[\begin{split}\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \tfrac{1}{3} & \tfrac{1}{3} & 0 & 0 \\ \tfrac{2}{3} & 0 & \tfrac{2}{3} & 0 \\ \hline & \tfrac{1}{4} & 0 & \tfrac{3}{4} \end{array}\end{split}\]Examples
>>> import brainstate >>> import brainunit as u >>> from braincell.quad import heun3_step >>> with brainstate.environ.context(t=0. * u.ms, dt=0.01 * u.ms): ... heun3_step(my_neuron)