作爲一個組項目的一部分,我們有一個2個非線性微分方程組,我們必須使用中點法繪製S = S(t),I = I(t)圖形。關於MATLAB中的inlineeval的錯誤
而我得到試圖插入與相應的微分方程的矩陣時以下錯誤:在內嵌表達式==>矩陣([[
「錯誤 - (I S)/ 1000], [(I S)/ 1000 - (3 * I)/ 10]。]),用於類型 '雙重' 的輸入參數在內嵌/的subsref
誤差(第23行) 未定義的函數 '矩陣' INLINE_OUT_ = inlineeval(INLINE_INPUTS_,INLINE_OBJ_.inputExpr,INLINE_OBJ_.expr);「
我做的代碼如下:
syms I S
u=[S;I];
F=[-0.001*S*I;0.001*S*I-0.3*I];
F1=inline(char(F),'I','S');
h=100; %Valores aleatórios
T=100000;
ni=(T/h);
u0=[799;1];
f=zeros(1,2);
k=zeros(1,2);
i=1;
while i<=ni
f(1)=F1(u0(1));
f(2)=F1(u0(2));
dx=h*f;
k(1)=F1((u0(1)+h*(1/2)),(u0(2)+h*(1/2)));
k(2)=F1((u0(1)+h*(1/2)),(u0(2)+h*(1/2)));
u1=u0+h*k;
disp('i:'),disp(i)
disp('u= '),disp(u1)
u0=u1;
i=i+1;
end
我是新來這個所以它很可能是錯誤的算法,但如果有人可以幫助我的錯誤我會apreciate它。謝謝!
'F1'是一個內聯函數,它將調用函數'matrix'。函數'matrix'對Matlab來說是可見的,也就是說,它是在你的代碼的本地文件夾還是在路徑中? –
使用「哪個矩陣」它說沒有找到,但我沒有創建任何矩陣函數 –
嗯,經過一些更多的研究,我認爲我以前的評論有點誤導。我對「sym」不是很瞭解,但是你得到的錯誤應該與[this]相關。(http://www.mathworks.com/matlabcentral/answers/25281-error-in-inline-expression-matrix )。我認爲你應該嘗試從那裏出發。祝你好運! –