# Matlab Help

• MATLAB

## Main Question or Discussion Point

Dear all. I am trying to solve an ODE in MATLAB using ODE45 solver. But the programe keep saying

??? Input argument "y" is undefined.

Error in ==> lvv at 4
yprime=[a*y(1)-b*y(1)*y(2);-r*y(2)+c*y(1)*y(2)];

Can anybody be of help? Please.

The complete code is this:
function yprime=lvv(t,y)
%LV: Contains Lotka-Volterra equations
a=.5471;b=.0281;c=.0266;r=.8439;
yprime=[a*y(1)-b*y(1)*y(2);-r*y(2)+c*y(1)*y(2)];
[t,y]=ode45(@lvv,[0 20],[30;4])
plot(t,y(:,1))
Thanks

Related MATLAB, Maple, Mathematica, LaTeX News on Phys.org
make on m-file called whatever you want an place:

[t,y]=ode45(@lvv,[0 20],[30;4])
plot(t,y(:,1))

this in that. Then make another m-file called lvv and place

function yprime=lvv(t,y)
%LV: Contains Lotka-Volterra equations
a=.5471;b=.0281;c=.0266;r=.8439;
yprime=[a*y(1)-b*y(1)*y(2);-r*y(2)+c*y(1)*y(2)];

this in that, then it works, have tested it. You should always place functions in their own m-file, there are ways to put them in the same, but if you place it in another, then you never get problems.

a way I sometimes use, is to trick matlab to think of the lvv function as a nested function by making your m-file into a function that doesn't do anything then it works, that is writing

function idontdoanything=LaLaLa

[t,y]=ode45(@lvv,[0 20],[30;4])
plot(t,y(:,1))

function yprime=lvv(t,y)
%LV: Contains Lotka-Volterra equations
a=.5471;b=.0281;c=.0266;r=.8439;
yprime=[a*y(1)-b*y(1)*y(2);-r*y(2)+c*y(1)*y(2)];

that is start you m-file with a dummy function.