Not enough input arguments
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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
0 Commenti
Risposta accettata
Star Strider
il 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 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!