【发布时间】:2014-03-04 00:03:57
【问题描述】:
我使用matlabFunction 定义了一个函数。这是代码:
matlabFunction([a16;-((1+x16^2)/(2*x16))*a16],'vars',{x16,[a16]},'file','DE_19')
这似乎奏效了。但是,当我尝试使用ode45 求解matlabFunction 定义的微分方程时,出现错误。代码如下:
[x,y] = ode45(@(x16,Y) DE_19(x16,Y),[1,11],[2,7,5]);
我得到的错误是
Error using odearguments (line 93)
@(X16,Y)DE_19(X16,Y) returns a vector
of length 6, but the length of
initial conditions vector is 3. The
vector returned by
@(X16,Y)DE_19(X16,Y) and the initial
conditions vector must have the same
number of elements.
Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0,
tfinal, tdir, y0, f0, odeArgs,
odeFcn, ...
所以,我尝试将初始条件从 [2,7,5] 更改为 [2,7,5,8,9,4]。当我这样做时,我得到了相同的消息,但不是说返回的向量长度为 6,并且我的初始条件向量的长度为 3,而是说返回的向量长度为 12,并且长度我的初始条件向量是 6。
为什么要这样做?这似乎很奇怪,返回的向量的长度会随着我改变初始条件向量的长度而变化。
【问题讨论】:
标签: matlab ode differential-equations