常微分方程式系を統合できる Python 3 パッケージを作成しました。これを書いているときに、情報が見つからないように見える問題に遭遇しました。
問題:
基本的に、ローカルエラーに応じてステップサイズを調整する適応アルゴリズムがあります(実際の方法は、Cash-Karp係数を使用したRKFアルゴリズムの実装です)。特定のポイントの後、ステップサイズが十分に大きい場合、メソッド終了時刻をオーバーシュートします。
私の解決策:
現在のステップ サイズが積分の終了時間を超える場合、残り時間の値の半分にステップ サイズを設定するように設定しました。式の形式: dt = (t_end - t_current)/2
しかし、これは、適応アルゴリズムで使用される相対誤差の特定の要件により、時間ステップが非常に小さくなります。およそ 1e-15 のオーダーで、t_current はマシンの精度の制限により増加しないため、数値的な不安定性につながります。
私の質問:
このような数値的な不安定性を作成することなく、終了時間が予想される終了時間に対して小数点以下 15 桁まで正確になるように、統合アルゴリズムを実装するより効果的な方法があるかどうか疑問に思っていました。