多くの異なるパラメーター (これらのパラメーターは微分方程式の係数) に対して ode45 を使用して ODE 系を解いており、解が特定の値よりも小さい (大きくない) パラメーターを見つけたいと考えています。
ode45 に条件を設定して、システムの解決中に (これらのパラメーターの一部の) 解がその (指定された) 値よりも大きくなった場合に自動的に「検出」し、それ以降のステップの解決を停止するにはどうすればよいですか?
Jan は、入力関数の定義に次の条件を入れることを提案したので、int. 私はこれを試しましたが、うまくいきません: いくつかのステップの後 (条件はまだ正しくありませんが)、反復はすぐに終了し、出力はある数値で一定に保たれます。(誤った出力)
( qm 、 U 、 V などは定数で、 X には 4 つの列があります)
[T,X]=ode45(@acceleration,tspan,x0);
function xprime=acceleration(T,X)
size_X=length(X);
xprime=zeros (4,1);
if X(size_X,1)>threshold
xprime(1)=0;
xprime(2)=0;
xprime(3)=0;
xprime(4)=0;
else
xprime(1)=X(3);
xprime(2)=X(4);
xprime(3)=X(1)*X(4)^2 - 2*qm*(U+V*(cos(w*T)))*F1(num,X(1),X(2));
xprime(4)= -2*X(3)*X(4)/X(1) - qm*((U+V*(cos(w*T)))/(X(1)))*F2(num,X(1),X(2));
end
end
- 上記のコードの問題は何ですか?
- ode45 に監視機能を追加することを誰かが提案しました。(ここ) . 誰もこれを行う方法を知っていますか? ありがとう