我正在用 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 上附加一个监控功能。(这里)。有谁知道如何做到这一点?谢谢