2

ここにあるように、Matlab で ode45 を使用してイベントが発生するまでの統合の問題を考えてい ます。

Matlab がイベントの場所を計算する精度を制御する方法はありますか? より具体的には、イベントはvalueパラメーターのゼロが見つかるまで ODE を解くように指示しますが、 はどのくらい小さいのvalueでしょうか? valueインテグレーションが終了したときにどれだけ小さくしたいかを指定する方法はありますか?

4

1 に答える 1

1

Matlab がイベントの場所を計算する精度を制御する方法はありますか?

短い答えは「いいえ、とにかく機械の精度です」のようです。Matlab (および 、 などのode45残り) は、ODE インテグレータのゼロ イベントを計算する作業を行うという関数を呼び出します。許容値が設定されている関連行は次のとおりです。ode15sode23odezeroodezero

tol = 128*max(eps(t),eps(tnew));
tol = min(tol, abs(tnew - t));

このことから、2 つのことがわかります。(1) ユーザー オプションに依存しないこと、(2) 許容範囲が 128*eps であるため、制御できたとしても、これ以上小さく設定することはできません。

統合が終了したときに値をどれだけ小さくしたいかを指定する方法はありますか?

Matlab の ODE イベント検出器はvalue、ゼロに近づいたり、ゼロに近づいたりすることを探すのではなく、ゼロを横切ることを探します。特定の値を超える ODE の特定の値を探したい場合は、イベント関数で解と目的のしきい値との差を返すようにします。

于 2012-06-30T21:45:32.207 に答える