我有一個小問題。我有2個運動方程'ph'和'ph2'我不知道如何在x(1)> 0.111時設置ODE來停止計算'ph',然後開始再次計算'ph2'到0.111,之後在一張圖上繪製'ph'+'ph2'取決於時間'w',我認爲我必須設置一些時間限制,但不知道如何去做。我使用幫助但對我沒有好處。MatLab ODE啓動/停止條件
[t,y] = ode45(@ph,[0,w_max],[0,0]);
function dx = ph(tt,x)
global F1 c m_c Ff p w s ln f_t sig dstr Ren pn Fex Fzmax xz xn l Fz mn
Fpp = F1 + c*x(1);
if pn<0
pn=abs(pn);
end
if x(1)<ln
pn=spline(w,p,tt)-((2*sig)/dstr*Ren);
Fex=3.1416.*f_t.*pn.*(ln-x(1));
end
if x(1)<42e-5
Fz = Fzmax*(1-(1/xz)*(x(1)+l));
end
if x(1)>44e-3
m_c=m_c-mn;
end
dx=[x(2);((spline(w,p,tt)*s)-Fpp-Ff-Fex-Fz)./m_c];
[t2,y2] = ode45(@ph2,[0,w_max],[0,0]);
function dx=ph2(tt,x)
global Fv m_c g f alfa Fzp c m_nbp
Ft=m_c*g*f;
Fv = 2*f*(Fzp/cos(alfa));
if x(1)>0.44
m_c=m_c+m_nbp
end
dx = [x(2);((x(1)*c)-Ft-Fv)/m_c];
你的意思是說你真的想建立一個分段函數作爲ODE嗎? – wakjah
我不知道更好的解決方案:o/ – user2401142