Domaine donné pour les variables dépendantes des ODEs
Bonjour à tous,
Je suis occupé à résoudre des équations différentielles sous matlab (ode45).
J'ai une variable dépendante "x" qui évolue selon une loi telle que (ddot=dérivée seconde, dot=dérivée première) :
Code:
1 2
|
x_ddot=fonction(autres,x,xdot) |
Je me retrouve avec un code du type :
Code:
1 2 3
|
Y0=[x,xdot],
[tout,yout] = ode45(@(t,y)myfun(t,y,autres),[t0 tstop],Y0); |
et
Code:
1 2 3 4 5 6 7 8
|
function ydot=myfun(t,y,autres)
x=y(1);
xdot=y(2);
xddot=fonction(autres,x,xdot);
ydot=[xdot;xddot]; |
J'aimerais pouvoir faire en sorte que la varialbe dépendante x soit dans un domaine donné
$x\in[x0,xsup]$
avec x0=x(t=0) et xsup>x0.
Avez-vous une idée?
J'ai déjà essayé en faisant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
function ydot=myfun(t,y,autres)
x=y(1);
xdot=y(2);
xddot=fonction(autres,x,xdot);
if x>=xsup,
xdot=min(xdot,0);
elseif x<=x0,
xdot=max(xdot,0);
end;
ydot=[xdot;xddot]; |
Avez-vous une autre idée? Je ne suis pas tout à fait certain que mon idée soit la meilleure/donne de bons résultats.
Merci pour vos renseignements et bonne après-midi