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

0/5 (5 avis)

Snippet vu 22 374 fois - Téléchargée 37 fois

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

Ajouter un commentaire Commentaires
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
24 oct. 2007 à 12:57
Salut,
J'ai utilisé devcpp pour compiler mon code. Quelles sont tes problèmes lors de la compilation?
lumierk Messages postés 1 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 23 octobre 2007
23 oct. 2007 à 15:05
j'ai bien apprécier votre resonnement , mais j'ai un pétit problème dans la compilation , si vous pouvez me dire le logiciel utilisé pour la compilation,...
envoyer le à l'e-mail: lumierk@yahoo.fr
merci..
PascalCmoa Messages postés 239 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 17 janvier 2013 5
22 avril 2005 à 14:56
Juste une question, de quelle méthode d'Euler t'es tu servi. La méthode implicite ou explicite. Car il existe une différence assez flagrante entre les dux méthode. L'une anticipe sur les résultats à venir, alors que l'autre utilise les résultats précédent pour calculer son prochain résultat.
De plus, Euler n'est qu'une représentation approchée d'une résoltion d'équa-diff.
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
21 nov. 2004 à 19:54
vecchio56, il faut ouvrir le fichier resultat.txt qui a été généré par le programme avec un tableur de type excel. Ensuite il suffit de tracer les courbes.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
21 nov. 2004 à 18:43
Je crois que l'image n'est pas une capture de ton programme. Tu nous fais de fausses joies...

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.