Effacer les filtres
Effacer les filtres

Not enough input arguments

1 vue (au cours des 30 derniers jours)
Stefan
Stefan le 23 Nov 2014
Commenté : Star Strider le 23 Nov 2014
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

Réponse acceptée

Star Strider
Star Strider le 23 Nov 2014
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 commentaires
Stefan
Stefan le 23 Nov 2014
Thank you very much! You are a lifesaver!
Star Strider
Star Strider le 23 Nov 2014
My pleasure! Thank your for the compliment!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by