err
とステップ幅
との関係を求めよう。
は(20)
(21)で計算されるから、
である。
err
は
の2乗の和の平方根で表されるので、同じく
である。
従って、
ステップ幅として
を使用した場合
となり、
を使用した場合
となったとき、
(26) |
最も効率的に計算するには、 の値を1にすれば良い。 従って、もし現在の誤差 が1より大きい場合は、 (27)式に従って 現在のステップ幅 をどのくらい小さくすれば良いかが分かり、 が1より小さい場合は 同じ式(27)を用いて、 次のステップにおいてステップ幅をどのくらい安全に大きく出来るかが分かる。
実際のNR3のルーチンでは、1よりもわずかに小さい安全項 を用いた下式:
StepperDopr5
では、1回のステップでステップ幅が10倍以上大きくなったり、
1/5以下に小さくなったりする更新を禁止している。