在ODE45 -Matlab中求解

时间:2013-04-09 15:21:19

标签: matlab ode

我有一个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, ...

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

1 个答案:

答案 0 :(得分:4)

引用official documentation

  

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

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

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

它应该有用。