how can I saturate the outputs of ODE45 using event functions with odeset ?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Dear friends; I have the differential equations given as follows:
x1'=x1*(1-x2^2)-x2
x2'=x1
I have created an m-file which contains these differential equations and I have constrained the variables x1 and x2 to their upper and lower limits (-limit and +limit)
function xdot=fun(t,x)
xdot=zeros(2,1);
xdot(1)=x(1)*(1-x(2)^2)-x(2);
xdot(2)=x(1);
end
then I have simulated the differential equation defined in the function fun over the interval 0<=t<=20;
x0=[0;0.25];
[t,x]=ode45('fun',[0:0.01:20],x0);
plot(t,x)
My problem consists in how to limit the state variable x because I have the condition
-2<=x(1)<=2
So, how can I simulate the differential equation over the interval 0<=t<=20 with satisfying this condition, I will be very grateful if someone can help me to solve this problem using event function with odeset.
Thanks
0 Commenti
Risposta accettata
Torsten
il 16 Apr 2015
Modificato: Jan
il 16 Apr 2015
Your question has already been answered under
Maybe you did not understand my answer ? Or I misunderstood your question ?
Best wishes
Torsten.
2 Commenti
Torsten
il 17 Apr 2015
No, I answered that your problem cannot be solved.
The solution of your differential equation is fixed by the equation itself and the initial conditions you impose - you can not limit the solution by introducing artificial constraints.
Best wishes
Torsten.
Più risposte (1)
Jan
il 16 Apr 2015
Limiting the values means a discontinuity of the function, which cannot be handled by the ODE integrators, see http://www.mathworks.com/matlabcentral/answers/59582#answer_72047 .
So use an event function to detect the time, when x(1) exceed the limits.
0 Commenti
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!