参考: パソコンで見る天体の動き, p.22
function rk(func, from, initVal, step) local f1 = func(from , initVal ) local f2 = func(from + step / 2, initVal + step * f1 / 2) local f3 = func(from + step / 2, initVal + step * f2 / 2) local f4 = func(from + step , initVal + step * f3 ) return initVal + (step / 6) * (f1 + 2 * (f2 + f3) + f4) end -- 確かめる。 -- この函数を微分方程式として t = 0 から 1 ステップ (1/8) だけ計算する。初期値は 0 とする。 function sute(t, x) return x^2 - t^2 - 2 * t + 2 end print(rk(sute, 0, 0, 1/8))
Nspire で検算する。1 行目が厳密解、2 行目が rk23() による近似解。