"Not Enough Arguments" Error in ode23 - code is perfect as far as I know...
Afficher commentaires plus anciens
function kinetics=examquestion1(t,Y)
kinetics=zeros(3,1);
kinetics(1)=-Y(1)*Y(2)+0.1*Y(3);
kinetics(2)=-Y(1)*Y(2)+0.1*Y(3);
kinetics(3)=Y(1)*Y(2)-0.1*Y(3);
[tv,Yv]=ode45(@examquestion1,[0 10],[1;1;0],t);
plot(tv,Yv(:,1),'+',tv,Yv(:,2),'x',tv,Yv(:,3),'o')
hold on
grid
title('Solutions w/k1=1 and k-1=0.1')
text(0.3,14,'-+- A(t)')
text(0.3,10,'-x- B(t)')
text(0.3,-12,'-o- P(t)')
xlabel('time')
hold off
end
Above is my code, error is in line 4 "kinetics(1)=......." I have no clue what to do!! Please help, time is of the essence. Thank you :)
Code is for solving a system of 3 differential equations, representing the kinetics of an A + B = C reaction.
Réponse acceptée
Plus de réponses (1)
Star Strider
le 27 Fév 2014
Modifié(e) : Star Strider
le 27 Fév 2014
You can only put a function file inside another function file. If you want your ODE to run in your file, you have to code it as an anonymous function.
You also made a simple typographical error:
[tv,Yv]=ode45(@examquestion1,[0 10],[1;1;0],t);
It will throw an error because of the t.
I reformatted your ODE as an anonymous function (for my convenience only) and this ran without problems:
examquestion1 = @(t,Y) [-Y(1)*Y(2)+0.1*Y(3); -Y(1)*Y(2)+0.1*Y(3); Y(1)*Y(2)-0.1*Y(3)];
[tv,Yv]=ode45(examquestion1,[0 10],[1;1;0]);
Also, with respect to your text statements, see the legend command. It may make what you’re doing easier.
Catégories
En savoir plus sur Ordinary Differential Equations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!