Not enough input arguments

Hi everyone, I'm trying to solve a system of 3 ODEs with intial conditions using ode45. I'm getting the error message of "Not enough input arguments". I've tried looking up what that means, but I'm still confused. If anyone could help me out with this, that would be great!
function dx=sae(t,x)
x(1) = x;
x(2)=y;
x(3) = z;
dx=zeros(3,1);
dx(1)=10*(x(2)-x(1));
dx(2)=(28*x(1))-x(2)-(x(1)*x(3));
dx(3)=(x(1)*x(2))-((8/3)*x(3));
[T,X]=ode45(@sae,[0 20],[0 1 0]);
plot(T,X(:,1),T,X(:,2),T,X(:,3))
legend('x','y','z')
end

 Accepted Answer

First, save your ‘sae’ function in its own function .m-file called sae.m.
Second, be sure the ode45 call is not within the ODE function, as it seems to be in the code you posted. That creates recursion problems.
Third, comment-out the references to the elements of ‘x’ in ‘sae’. Keep them for information, but be sure they don’t execute.
In sae.m:
function dx=sae(t,x)
% x(1) = x;
% x(2) = y;
% x(3) = z;
dx=zeros(3,1);
dx(1)=10*(x(2)-x(1));
dx(2)=(28*x(1))-x(2)-(x(1)*x(3));
dx(3)=(x(1)*x(2))-((8/3)*x(3));
end
In your script file:
[T,X]=ode45(@sae,[0 20],[0 1 0]);
plot(T,X(:,1),T,X(:,2),T,X(:,3))
legend('x','y','z')
This works, and produces an interesting plot.

4 Comments

OK I have the file saved as sae.m, but I'm unclear as to what you mean by saving the sae function in its own function? Is that like function-ception? (Sorry for the bad joke.) I'm pretty new to MATLAB, so please excuse what might seem like dumb questions.
If you saved your ‘sae’ function by itself (from the function statement to its own end statement) in sae.m as I listed it in my answer, you’re half way there.
All you need now is to create a script file (as its own separate .m-file) with your ode45 call in it, and run the script file. (You can name it anything you want.) Then run the script file. You should see your plot a few seconds later.
Thank you very much! You are a lifesaver!
My pleasure! Thank your for the compliment!

Sign in to comment.

More Answers (0)

Asked:

on 23 Nov 2014

Commented:

on 23 Nov 2014

Community Treasure Hunt

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

Start Hunting!