[問題] if的語法已回收
我現在碰到的問題是要解六個聯立的ODE
用的是matlab裡頭ode45的solver
寫成兩個.m檔
1.
function dy = ODE(t,y)
dy = zeros(6,1);
dy(1) = y(4);
dy(2) = y(5);
dy(3) = y(6);
dy(4) = F(y(1),...,y(6));
dy(5) = G(y(1),...,y(6));
dy(6) = H(y(1),...,y(6));
F,G,H是一大串複雜的方程式
2.
option = odeset('RelTol',1e-4,'AbsTol',[1e-3 1e-3 1e-3 1e-4 1e-4 1e-4]);
[T,Y] = ode45(@ODE,[0 6],[0 -50 -50 1 0 0],option);
loglog(T,Y(:,1),'b-',T,Y(:,2),'r-',T,Y(:,3),'g-')
然後執行第二個讓matlab作圖,因為我的y(1)~y(6)都是以指數形式做圖
其中exp(y(2))會掉到很大的負數,無法再計算下去
我的想法是應該表示y(2)會變成負值,所以exp(y(2))做不下去
想加一個if的指令,讓y(2)一旦小於零就自動跳回正數
我的做法是在第二個.m檔plot前加入
if (y(2)<0)
y(2)=-y(2);
end
執行後會顯示
??? Undefined function or method 'y' for input arguments of type 'double'.
這樣的error訊息
想請問版上前輩,這種情況之下要如何修正呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.100.2