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