Resolution 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'

Il suffit ensuite d'ouvrir le fichier results.txt et de tracer les graphiques à l'aide d'un tableur de type Excel ou Gnuplot.
Par contre si quelqu'un sait comment tracer directement sous java x en fonction de i et y en fonction de x ça serait bien de me le faire savoir.
Je voudrais remercier Libeur pour son aide dans la gestion des fichiers.

Source / Exemple :


import java.io.*;
public class Euler {
public static void main(String args[] ) throws Exception {
double g;
double tau;
double w;
int nit,i;
double x;
double y;
double l;
g=9.81; // constante de gravitation.
y=0; // condition initiale sur y.
i=0;
nit=1000; // nombre d'itérations.
tau=0.01; // pas d'intégration.
l=0.05;  // longueur du fil. 
x=0.5; // condition initiale sur x.
w=Math.sqrt(g/l); // pulsation;
try
{
FileWriter fich = new FileWriter("results.txt"); // On sauvegardera dans results.txt.
for(i=1;i<=nit;i++)
{
x=x+tau*y;
y=y+tau*((-w*w)*Math.sin(x));
String s = i+ " "+x + " "+y + "\n";
fich.write(s); // On sauvegarde periodiquement i, x, y dans le fichier results.txt.
}
catch (Exception e) // bloc d'instructions exécutées en cas d'exception.
System.out.println("Fin d'execution");
}
}

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.