Matlabのode45における "イベント"の精度

I'm consider a problem of integrating until an event occurs using ode45 in Matlab, as in here: http://www.mathworks.com/help/techdoc/math/f1-662913.html#f1-670140

Matlabがイベントの位置をどれだけ正確に計算するかを制御する方法はありますか?具体的には、イベントは value パラメータがゼロになるまでODEで解決するように指示しますが、 value はどれくらい小さいのでしょうか?統合が終了したときに value をどのくらい小さくしたいのかを指定する方法はありますか?

2

1 答え

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

短い答えは「いいえ、でもマシンの精度にはとにかくです」と思われます。 Matlabの ode45 (および ode15sode23 などの残りの部分)は、 odezero という関数を呼び出します。 ODEインテグレータのゼロイベントを計算する作業を行います。次は、公差が設定されている odezero の関連する行です:

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

これから2つのことが分かります。(1)ユーザーオプションに依存しないこと、(2)制御権を持っていても、許容値が128 * epsであるため、それを小さくすることはできません。

私が価値を望む方法を指定する方法はありますか?   統合は終了しますか?

MatlabのODEイベントディテクタは、 value が0に近づくかゼロに近づくかを調べることなく、 crossing 0を探します。特定の値を超えるODEの特定の値を探したい場合は、イベント関数に解と望ましいしきい値の差を返します。

1
追加された