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).

関数は 1 つの変数のみを受け入れますyが、 と の 2 つを受け入れる必要がtありyます。したがって、ODE が の場合、次のように定義します。y′ = y2 + yfoo

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

そしてそれはうまくいくはずです。

于 2013-04-09T15:37:00.597 に答える