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) :
Je me retrouve avec un code du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 x_ddot=fonction(autres,x,xdot)
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Y0=[x,xdot], [tout,yout] = ode45(@(t,y)myfun(t,y,autres),[t0 tstop],Y0);
J'aimerais pouvoir faire en sorte que la varialbe dépendante x soit dans un domaine donné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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];
$x\in[x0,xsup]$
avec x0=x(t=0) et xsup>x0.
Avez-vous une idée?
J'ai déjà essayé en faisant
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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];
Merci pour vos renseignements et bonne après-midi
Partager