Resolution numerique d'une equation differentielle par la methode d'euler

Contenu du snippet

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

A voir également

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.