我有一个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, ...
我一定在定义功能时犯了一些错误。 我感谢任何意见和建议。
答案 0 :(得分:4)
所有求解器以
y′ = f(t,y)
形式求解方程组或涉及质量矩阵的问题M(t,y)y′ = f(t,y).
您的函数只接受一个变量y
,而它必须接受两个:t
和y
。因此,如果您的ODE为y′ = y2 + y
,请按以下方式定义foo
:
foo = @(t, y)(y .^ 2 + y);
它应该有用。