0
我有個符號ODE:矢量輸入[Matlab的]
syms x1 x2 cs ks ms t2 real
xx=[x1 x2];
fun_sym=[xx(2); (cs/ms)*(xx(1)^2-1)*xx(2) - (ks/ms)*xx(1)];
我要解決使用ODE功能,但首先我需要將其轉換成函數處理器:
v=matlabFunction(fun_sym,'vars', [t2,xx,cs,ks,ms]);
[T,x]= ode15s(@(t2,xx) v,t,[1 0]);
其中t=[0:0.1:1]
。 MATLAB給出了一個錯誤:
@(T2,XX)V returns a vector of length 1, but the length of initial conditions vector is 2.
我想這是因爲它解釋V作爲:@(t2,x1,x2,cs,ks,ms)
,因此預計第二個參數是x1
,這是一個1×1元,即使我已經設定V如[t2,xx,...]
,其中xx
是1×2元素。我該如何解決這個問題?
完美。有什麼辦法可以傳遞矢量而不是有x1,x2?這不起作用: 'v = matlabFunction(f,'vars',{t2,xx,cs,ks}); ['t,x] = ode15s(@(t2,xx)v(t2,xx,1,1),t,[1 0]);' – student1 2014-11-09 04:05:52
不,我不認爲有什麼辦法可以做到這一點Matlab,由於處理符號數組的方式。但我看不出有什麼理由可能會成爲一個不能做到的問題。 – David 2014-11-09 04:43:10