0

我有一个 ODE y'=y^2+y,; 所以,我写了一个脚本:

foo=@(y)(y.^2+y);
[x y]=ode45(foo,[1 4],1);

但它返回以下错误:

Error using @(y)(y.^2+y)
Too many input arguments.

Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1}
to yp0.

Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0,
odeArgs, odeFcn, ...

我在定义函数时一定犯了一些错误。我感谢任何意见和建议。

4

1 回答 1

4

引用官方文档

所有求解器都以y′ = f(t,y)涉及质量矩阵的形式或问题求解方程组,M(t,y)y′ = f(t,y).

您的函数只接受一个变量y,而它必须接受两个:ty。因此,如果您的 ODE 是,请按以下方式定义:y′ = y2 + yfoo

foo = @(t, y)(y .^ 2 + y);

它应该可以工作。

于 2013-04-09T15:37:00.597 回答