我有一个象征性的ODE:
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-by-1元素,即使我已将v定义为[t2,xx,...]
,其中xx
是1 x 2元素。我该如何解决这个问题?
答案 0 :(得分:1)
这样可行,但您还需要为其他参数指定值(cs
,ks
和ms
)
v=matlabFunction(fun_sym,'vars', [t2,x1,x2,cs,ks,ms]);
[T,x]= ode15s(@(t2,xx) v(t2,xx(1),xx(2),cs,ks,ms),t,[1 0]);