2013-04-09 2 views
0

나는 ODE, y'=y^2+y을 가지고 있습니다. 그래서, 난 같은 스크립트를 작성 :ODE45 -Matlab에서 해결

[email protected](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

ode solver는 시간에 따라 변화하는 시스템을 처리 할 수 ​​있습니다. 즉, 미분은 "t"와 상태 "x"둘 다의 함수입니다. Eitan이 아래에서 보여 주듯이 파생 함수가 그것을 사용하지 않더라도 ** 반드시 "t"매개 변수를 전달해야합니다! – Stuart

+0

감사합니다. 도와 주셔서 감사합니다. – user2178841

답변

4

official documentation을 인용 : ty : 그것은이 동의해야하는 반면

All solvers solve systems of equations in the form y′ = f(t,y) or problems that involve a mass matrix, M(t,y)y′ = f(t,y).

함수는 하나의 변수 y을 받아들입니다.

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

을하고 그것을 작동합니다 : 당신의 ODE가 y′ = y2 + y 경우에 따라서, 다음과 같은 방식으로 foo을 정의합니다.