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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 562 fois - Téléchargée 35 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

Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
Salut,
J'ai utilisé devcpp pour compiler mon code. Quelles sont tes problèmes lors de la compilation?
Messages postés
1
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
23 octobre 2007

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..
Messages postés
239
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
17 janvier 2013
5
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.
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
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.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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.