Le but de ce TD est de programmer deux intégrateurs numériques d'EDO et de comparer leur précision.
Nous allons traiter le mouvement d'un pendule rigide: une masse
m
est reliée à un pivot par une tige de longueur
l
, supposée rigide et de masse nulle. Le pendule se
trouve dans un champ de pesanteur homogène g
.
En remplacant le temps t
par T*t'
, où
T = sqrt(l/g)
est la periode d'oscillation à petite
amplitude et t'
un temps sans dimension, montrez que
l'équation sans dimension a la forme
(nous écrivons de nouveau t
à la place de
t'
dans la suite).
t
, la position theta
et la vitesse
omega
. Prenez comme conditions initiales une amplitude
nulle et une vitesse de 0.5. Simulez de t = 0
à t =
50
en pas de h = 0.01
. Si vous pouvez, faites en
sorte que le programme demande ces grandeurs à l'utilisateur.h = 0.1
. Qu'observez-vous ?omega = 3
. Qu'observez-vous ? Explorez d'autres
conditions initiales.(*) Voici un squelette de programme qui peut vous servir de point de départ, à compléter:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { float t, tfinal, h; float theta, omega, dtheta, domega; int i,npas; tfinal=5.0; // temps final h=0.01; // pas d'intégration theta=0.0; omega=0.5; npas = tfinal/h; // nombre de pas d'intégration // à compléter... return EXIT_SUCCESS; }