Matlab Help

  • MATLAB
  • Thread starter matlabphd
  • Start date
  • #1
2
0

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
 

Answers and Replies

  • #2
246
1
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.
 
  • #3
246
1
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.
 

Related Threads on Matlab Help

  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
7
Views
3K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
3
Views
2K
  • Last Post
Replies
3
Views
4K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
9
Views
3K
  • Last Post
Replies
6
Views
7K
  • Last Post
Replies
6
Views
2K
Top