1

MAtlab で使用しようとしていますode45が、MAtlab が使用するポイント数 (タイム ステップ数) を修正したいと考えています。'refine'オプションを使用してode45も役に立たないようです。たとえば、10 に設定すると'refine'、Matlab は 101 の配列を返します。asと書けば解決することはわかっていますが、オプションで点数を固定したいです。'RelTol''AbsTol'tspan[0,t1,t2,t3,...,tn]'refine'

4

1 に答える 1

2

'Refine'オプションが実際に何をするかを誤解しているかもしれません。のドキュメントからodeset:

Refine — Refine が 1 の場合、ソルバーは各タイム ステップの最後にのみ解を返します。Refine が n >1 の場合、ソルバーは各タイム ステップを n 個の小さな間隔に分割し、各時点で解を返します。length(tspan)>2 の場合、または ODE ソルバーが解を構造体として返す場合、調整は適用されません。

つまり、10 に設定'Refine'しても、10 個の出力ポイントが得られることは保証されませんが、積分時間ステップごとに 10 個の出力ポイントが得られることが保証されます。のような適応ステップ サイズ法の場合ode45、ソルバーは多くの基準に基づいてステップの大きさを選択します。特定の数の出力ポイントが必要な場合は、 で既に行ったように、固定時間ステップを指定する必要がありますtspan。このlinspace機能はあなたに役立つかもしれません。

もう 1 つの可能性は、オプションを実際に適用していないことです。電話をかけるだけでodesetは不十分です。出力を に渡すことも忘れないでくださいode45

于 2014-01-03T10:04:59.767 に答える