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