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;
}