La méthode d'Euler permet de résoudre numériquement des équations differentielles. Il est vrai que cette méthode est moins bonne que Runge Kutta car elle est moins précise.
Ici l'equation a resoudre est:
p''+w^2sin(p)=0
pour commencer il faut former un système autonome, c'est à dire:
on pose:
x'=y=f(x,y)
=> y'+w^2sin(x)=0 <=> y' = -w*w*sin(x)=g(x,y)
Théorème de Taylor: f(x+h)=f(x)+h*f '(x)+o(h²)
ou encore:
x(t+tau)=x(t)+tau*x'(t)+o(tau²) soit: xn+1=xn(t)+tau*xn'(t) et yn+1=yn+tau*yn'
Source / Exemple :
#include<stdio.h>
#include<math.h>
#define g 9.81
void main(void)
{
float tau,w,l;
int nit,i;
FILE *fichier;
fichier=fopen("resultat.txt","wt");
float x;
float y;
printf("\Entrer teta0:");
scanf("%f",&x);
y=0;
i=0;
printf("\nEntrer le nombre d'iterations:");
scanf("%i",&nit);
printf("\nEntrer le pas (valeur suggerée 0.01):");
scanf("%f",&tau);
printf("\Entrer la longueur du fil:");
scanf("%f",&l);
w=sqrt(g/l);
printf("\nLa pulsation w0=%f",w);
for(i=1;i<=nit;i++)
{
x=x+tau*y;
y=y+tau*((-w*w)*sin(x));
fprintf(fichier,"%f %f %f\n",i*tau,x,y);
}
fclose(fichier);
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.