• Aucun résultat trouvé

double dy_heun (double dx, double x, double y)

N/A
N/A
Protected

Academic year: 2022

Partager "double dy_heun (double dx, double x, double y)"

Copied!
1
0
0

Texte intégral

(1)

// =============================================================================

// Ce programme resoud l'equation differentielle ordinaire y'+y=0 avec commme // condition initiale y(0)=1 pour un nombre de pas d'integration donné.

// =============================================================================

#include<stdio.h>

#include<math.h>

// Fonction f telle que y'=f(y,x) (ici y'+y=0) double f(double y,double x){return -y;}

// Conditions initiales (les * permettent de changer la valeur de x et y) void init(double *x, double *y){*x=0; *y=1;}

// Fonctions qui avancent d'un pas la valeur de y avec chacune des 3 methodes double dy_euler(double dx, double x, double y);

double dy_heun (double dx, double x, double y);

double dy_rk4 (double dx, double x, double y);

// =============================================================================

// Programme principal

// =============================================================================

main(){

int i;

// Fichier pour stocker les résultats FILE *fichier;

fichier = fopen("edo.dat","w");

// Conditions initiales

double x; // valeur courante

double y1,y2,y4; // valeur courante par chacune des 3 méthodes init(&x,&y1);

init(&x,&y2);

init(&x,&y4);

fprintf(fichier,"%10.6f %10.6f %10.6f %10.6f %10.6f \n"

,x,y1,y2,y4,exp(-x)) ; // Choix du pas d'integration

double xmax=10.; // valeur finale

int n=25 ; // nombre de pas d'intégation double dx=(xmax-x)/n; // pas d'intégration

// Boucle pour integrer de proche en proche depuis x0 et jusqu'a xmax for(i=0;i<n;i++){

// On calcule la nouvelle valeur de y

y1 += dy_euler(dx,x,y1); // Methode de Euler (ordre 1) y2 += dy_heun (dx,x,y2); // Methode de Heun (ordre 2) y4 += dy_rk4 (dx,x,y4); // Methode de RK4 (ordre 4)

// On calcule la nouvelle valeur de x x += dx ;

// On enregistre les résultats dans le fichier

fprintf(fichier,"%10.6f %10.6f %10.6f %10.6f %10.6f \n"

,x,y1,y2,y4,exp(-x)) ; }

}

// =============================================================================

// Fin du programme principal

// =============================================================================

// =============================================================================

// Fonctions auxiliaires

// =============================================================================

double dy_euler(double dx, double x, double y){

double k1 ; k1 = dx*f(y,x) ; return k1;

}

double dy_heun(double dx, double x, double y){

double k1,k2;

k1 = dx*f(y ,x );

k2 = dx*f(y+k1,x+dx);

return 0.5*(k1+k2);

}

double dy_rk4(double dx, double x, double y){

double k1,k2,k3,k4,dy;

k1 = dx*f(y ,x ) ; k2 = dx*f(y+0.5*k1,x+0.5*dx) ; k3 = dx*f(y+0.5*k2,x+0.5*dx) ; k4 = dx*f(y+ k3,x+ dx) ; return (k1+2.*k2+2*k3+k4)/6.;

}

// =============================================================================

// =============================================================================

Références

Documents relatifs

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

We start by discussing some properties of MCs based on our previous best attempts to find MCs by visual inspection, in the WIND magnetic field and plasma data (see a descrip- tion

Subcellular cadmium (Cd) partitioning was investigated in the liver of two marine fish species, the European sea bass Dicentrarchus labrax and the Senegalese sole

A novel Thermotoga strain TFO isolated from a Californian petroleum reservoir phylogenetically related to Thermotoga petrophila and T.. naphthophila, two thermophilic anaerobic

Fais les exercices suivants sur ton cahier du jour. Commence par écrire la date, calcul et

Le juge constitutionnel a ainsi estimé que le grief tiré de « l’incompé- tence négative » pouvait être invoqué à l’appui d’un recours dans le cadre de

L'autre, qui n'avait pas l'idée de demander quoi que ce soit, va se sentir pris à contre-pied sans savoir exactement pourquoi : il se promettra alors de ne jamais demander

In (Art) Gallery (2016), the two channels show Logue in a plank position on the floor, straining in one to push the body up with the arms and in the other, holding the body