IUT Lannion-Université de Rennes 1
Page personnelle de philippe roux

Equations aux Différentielles Ordinaires et simulations avec Scilab


Principe de calcul d'une trajectoire

La trajectoire d'un objet dans la trajectoire d'un objet de masse m (ou plutôt son centre de gravité) est donnée par la suite des positions qu'il occupe au cours du temps : r(t)=(x(t),y(t)). Pour calculer les 2 coordonnées x et y de cette position on dispose en général d'une équation différentielle,le plus souvent obtenue par l'application de principes physiques simple (PFD, conservation del'énergie, ...), les dérivées premières de x et y correspondent aux coordonnées de la vitesse de l'objet et les dérivées secondes correspondent aux coordonnées de l'accélération de l'objet :

position r(t)=(x(t),y(t)), vitesse v(t)=(x'(t),y'(t)), accélération a(t)=(x''(t),y''(t)),
masse *accélération = somme des forces (forces qui dépendent du temps de la position et de la vitesse)
équation du mouvement m * a(t)= F(t, r(t), v(t))

En général il est impossible de résoudre exactement une équation diférentielle aussi générale que celle qu'on peut rencontrer même avec des systèmes très simples. On cherche alors seulement à calculer à partir des valeurs r(t) v(t) a(t) les valeurs pour un temps t+dt avec dt « petit ». . Pour calculer f(t+dt) à partir de f(t) et f'(t) on utilise la formule f(t+dt)=f(t) +dt*f'(t) qui correspond à l'approximation, pour dt « petit » ,de la dérivée de f :

f '(t)=df(t)/dt ~(f(t+dt)-f(t))/dt
Dans notre cas celà donne l'algorithme :

pour t=0 àT (avec pas de dt) faire
a(t+dt)=F(r(t),v(t))
v(t+dt)=v(t)+dt*a(t)
r(t+dt)=r(t)+dt*v(t)
fin_faire

Dans la suite nous allons appliquer cette méthode à la résolution de quelques cas simples .

Le pendule simple

Le mouvement d'un pendule simple (i.e. Formé d'une masse m suspendue à une tige rigide de longueur l ) est entièrement décrit par la connaissance (en fonction du temps t) de l'angle a(t) formé par la tige et la verticale. Si on lache sans vitesse le pendule à partir d'un angle a(0) la fonction a(t) vérifie l'équation :

d²a/dt²+w² * sin(a)=0 avec da(0)/dt=0, a(0) donné et avec w=(g/l)^(1/2)

la valeur de a(t) peut être calculée par la méthode décrite ci-dessus :

a:= valeur initiale de l'angle du pendule avec la verticale
da:=0 valeur initiale de la vitesse angulaire du pendule
dda:=0 valeur intiale de l'accélération angulaire du pendule
pour t=0 àT (avec pas de dt) faire
dda=-w^2*sin(a)
da=da+dt*dda
a=a+dt*da
fin_faire
Si, pour tout t, on a a(t) <<1 alors on peut faire l'approximation sin(a(t))~a(t) (ce qui revient à linéariser cette équation autour de la solution d'équilibre a(t)=0 pour tout t) ce qui conduit à la nouvelle équation :

d²a/dt²+w² * a=0 avec da(0)/dt=0, a(0) donné et avec w=(g/l)^(1/2)

Les simulations suivantes pendule1.gif et pendule2.gif montrent comment cette approximation est juste pour a(0)<10° et fausse pour des angles importants ( éxécuter le fichier pendule.sce pour vérifier avec d'autres angles).

Le pendule élastique

dans le cas d'un pendule accroché à un ressort (de raideur k) les équations du mouvement deviennent très compliquées car cette fois la longueur du pendule r=r(t) varie en fonction de t et cette variation est couplée à celle de a(t)! Voici d'ailleur les équations du mouvement :

rd²a/dt²+2dr/dt * da/dt=g*sin(a)
d²r/dt²-(k/m)*(r-r0)=r*(da/dt)²+g*cos(a)
dans ce cas on ne pourra pas exprimer a(t) et r(t) comme des fonctions ``simple'' en t, par contre il est facile d'adapter notre simulation pour rencontre compte du mouvement très complexe de ce pendule. Pour s'en rendre compte pendule_elastique.sce où a(0) et r(0)=r0 peuvent être choisies avec la souris dans la fenêtre graphique (cliquer sur l'image pour voir l'animation :
pendule suspendu à un ressort

Le plateau oscillant

Une masse est posée sur un plateau animé d'un mouvement vertical périodique : z_0(t)=sin(w*t) . La masse est donc soumise à 2 forces : son poids P= -m*g et la réaction du plateau R. La réaction est soumise à 2 contraintes :

ce qui donne :
z_0:= fonction donnant le mouvement du plateau
z:=z_0(0) position initiale de l'object
dz:= vitesse verticale de l'objet
ddz:=0 accélération verticale de l'objet
pour t=0 àT (avec pas de dt) faire
R=m*z''_0(t)+m*g
si R<0 alors R=0 fin_si
ddz= (R/m)-g
dz=dz+dt*ddz
z=z+dt*dz
si z < z_0(t) alors z:=z_0(t) fin_si
fin_faire

En calculant l'accélération du plateau il est facile de voir que pour que R puisse prendre (potentiellement au moins) des valeurs négatives il faut que :

-(w^2)*sin(w*t)+m*g<0 pour un certain t => w>(m*g)^(1/2)

Dans les deux simulations ci-dessous m=1 et g=9.81 ce qui donne une valeur critique pour l'oscillation w= 3.132092 . Dans la première simulation on a fixé w=3 et la masse ne décolle pas dans la seconde on prend w=5 et au bout d'un certain temps on voit la masse décoller nettement du plateau. La procédure de base simul.sceet les animations simul1.gif et simul2.gif

Balle rebondissant dans une boite

Pour modéliser la trajectoire d'une balle qui rebondit dans une boite on considère qu'elle est soumise à son poids(plus un éventuel frottement avec l'air) et que ponctuellement elle subit des chocs (avec les parois de la boites). Ces chocs se traduisent par deux changements instantanés :

En dehors des chocs la trajectoire (x(t),y(t)) de la balle peut être calculée en résolvant une équation de chute ``libre'' (accélération de la pesanteur g + c -> force de frotement proportionnelle à la vitesse ) :

x''(t)=-c x'(t) et m z''(t)=-g-c z'(t)
au moment des chocs sur une paroi (paroi verticale pour les bord ou horizontale pour le fond) la vitesse est modifié brutalement :
vitesse avant le choc v=(vx,vy)
choc sur un bord --> après le choc v'=(-vx,vy)
choc sur le sol --> après le choc v'=(vx,-vy)
Dans la pratique il faut aussi tenir compte d'une petite perte de vitesse à chaque choc (frotement). Une mise en oeuvre de cette petite simulation dans balle_rebond.sce . On choisit la position de départ de la balle avec la souris la vitesse initiale de la balle est générée aléatoirement, la trajectoire (en bleu) de la balle (en rouge) est calculée au fur et à mesure du mouvement :
balle rebondissant dans une boite balle rebondissant dans une boite

Voir aussi une animation de ce type avec plusieurs balles à l'adresse :

http://www.saphir-control.fr/articles/bouncing%20balls_lm29/article2.html

Sauf mention contraire, © Philippe Roux est l'auteur de tous les documents présents sur ce site.
dernière mise à jour : 03/12/07, email : remplacer *at* par @