我正在用ode45解決許多不同參數(這些參數是微分方程的係數)的ODE系統,我想找到解決方案更小的參數(不大於)給定值。在MATLAB ode45輸出設置條件(運行時)
如何設置的條件上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。 (here)。有誰知道如何做到這一點? 謝謝
感謝您的幫助。我之前在scicomp.stackexchange上問過這個問題,並且有人建議將監視函數附加到ode45。這裏:[鏈接](http://scicomp.stackexchange.com/questions/5383/setting-a-condition-on-matlab-ode45-output?noredirect=1#comment10331_5383)。你現在該怎麼做? –
我試過你的建議(就像我在問題中寫的那樣)。但它不起作用(如上所述)那有什麼問題? –
行爲如預期。也許你的切換條件不對。你想檢查第四個組件嗎?嘗試檢查size_X是否符合你的要求... – Jan