Back
En tenant compte des conditions initiales,
θ(0) = θ0
θ0(0) = 0
la solution exacte est :
θ(t) = θ0∗cos(pg/l ∗t)(3)
Pour l’instant, il n’y a pas d’algorithme particulier `
a d´
evelopper mais en faisant l’hypoth`
ese que
je n’ai jamais vu la courbe d’un cos j’aimerais l´
egitimement voir ce que donne cette r´
esolution.
1.1.2 Classiquement : C et Gnuplot
Ce que j’appelle ”classiquement”, c’est ”en utilisant un langage de programmation n’int´
egrant
pas de module de visualisation” : le langage C par exemple, ou Fortran ou Java ou . . .
Attention : Il ne s’agit absolument pas de discr´
editer un langage quelconque mais de mon-
trer que dans certaines situations avec un probl`
eme et des contraintes donn´
ees et particuli`
eres
certains outils sont plus ais´
es et performants que d’autres.
ãPr´
etendre faire de l’informatique, c’est aussi choisir les outils adapt´
es au probl`
eme !
Bref, en C par exemple, pour faire cela il faut commencer par faire calculer, en ´
echantillonnant
le temps, certains points de l’´
equation puis communiquer ces points `
a un outil externe.
ãLa fac¸on la plus simple (mais pas unique) de communiquer ´
etant d’utiliser un fichier, on
cr´
ee un code C qui produira des valeurs dans un fichier :
#include <s t d i o . h>
#include <math . h>
#define g 9.81 /∗Gravite */
int main (int argc ,char ∗argv []){
FILE ∗f;
double l= 1 . 0 ; /∗Lon gue ur de l a c o r d e ∗/
f=fopen ("datapendule.xyz" ,"w" ) ;
if (f!= NULL ){
double theta =M_PI /10.0 ; /∗t h e t a 0 ∗/
int N= 1 0 ; /∗S i m u l a t i o n de 10 s e c o n d e s ∗/
double t;
for (t=0 ; t<N;t+= 1 . 0 / N)/∗Te = 1 /N ∗/
fprintf (f,"%f %f\n" ,t,theta∗cos (sqrt (g/l)∗t));
fclose (f) ;
}
}
c
G.Menez 1.1 Un petit exemple 5