Problem while solving the problem ode45

3 views (last 30 days)
function dy=pair(t,y,a,b,c)
dy(1)= -a.*y(1)+b*exp(-t);
dy(2)=(-y(1).*y(2).^2)/c;
end
>> tspan=0:0.1:0.4;
>> a=2;
>> b=4;
>> c=3;
>> [t,y]=ode45(@pair,tspan,[2 4]);
ERROR
Error using pair (line 2)
Not enough input arguments.
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
I suspect I know a bit of what's going wrong, yet I'm at a loss for how to fix it. Any help is much appreciated!
  1 Comment
madhan ravi
madhan ravi on 22 Nov 2018
Edited: madhan ravi on 22 Nov 2018
upload pair function , ah didn't notice ,it was at the beginning XD

Sign in to comment.

Answers (1)

Torsten
Torsten on 22 Nov 2018
[t,y]=ode45(@(t,y)pair(t,y,a,b,c),tspan,[2 4]);
function dy=pair(t,y,a,b,c)
dy(1)= -a.*y(1)+b*exp(-t);
dy(2)=(-y(1).*y(2).^2)/c;
dy = dy.'
end
  3 Comments
Star Strider
Star Strider on 22 Nov 2018
ODE functions must return a column vector output. That assignment does a simple transpose operation to create ‘dy’ as a column vector.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!