ここにあるように、Matlab で ode45 を使用してイベントが発生するまでの統合の問題を考えてい ます。
Matlab がイベントの場所を計算する精度を制御する方法はありますか? より具体的には、イベントはvalue
パラメーターのゼロが見つかるまで ODE を解くように指示しますが、 はどのくらい小さいのvalue
でしょうか? value
インテグレーションが終了したときにどれだけ小さくしたいかを指定する方法はありますか?
ここにあるように、Matlab で ode45 を使用してイベントが発生するまでの統合の問題を考えてい ます。
Matlab がイベントの場所を計算する精度を制御する方法はありますか? より具体的には、イベントはvalue
パラメーターのゼロが見つかるまで ODE を解くように指示しますが、 はどのくらい小さいのvalue
でしょうか? value
インテグレーションが終了したときにどれだけ小さくしたいかを指定する方法はありますか?
Matlab がイベントの場所を計算する精度を制御する方法はありますか?
短い答えは「いいえ、とにかく機械の精度です」のようです。Matlab (および 、 などのode45
残り) は、ODE インテグレータのゼロ イベントを計算する作業を行うという関数を呼び出します。許容値が設定されている関連行は次のとおりです。ode15s
ode23
odezero
odezero
tol = 128*max(eps(t),eps(tnew));
tol = min(tol, abs(tnew - t));
このことから、2 つのことがわかります。(1) ユーザー オプションに依存しないこと、(2) 許容範囲が 128*eps であるため、制御できたとしても、これ以上小さく設定することはできません。
統合が終了したときに値をどれだけ小さくしたいかを指定する方法はありますか?
Matlab の ODE イベント検出器はvalue
、ゼロに近づいたり、ゼロに近づいたりすることを探すのではなく、ゼロを横切ることを探します。特定の値を超える ODE の特定の値を探したい場合は、イベント関数で解と目的のしきい値との差を返すようにします。