dimanche 26 mai 2013

Algorithme de la méthode de la bissection en langage C

Algorithme de la méthode de la bissection en langage C :

Le but est de trouver la solution de l’équation Ln(x) = 0 (i.e. vérifier que x = 1.0 comme solution).

L’intervalle est [0,5].

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define A 0.0 // Borne Inférieure
#define B 5.0 // Borne Supérieure
#define N 100 // Nombre d'itérations
#define EPS 1.0e-15 // Précision demandée
double f(double x)
{
return log(x); // fonction à tester Ln(x) = 0 dans [0, 5]
}
void main()
{
double *a, *b, *x;
a = (double *)calloc(N,sizeof(double));
b = (double *)calloc(N,sizeof(double));
x = (double *)calloc(N,sizeof(double));
a[0] = A; // Initialisation du pointeur *a
b[0] = B; // Initialisation du pointeur *b
x[0] = (a[0]+b[0])/2.0; // Initialisation du pointeur *x
int k=0;
while( k>=0 &&fabs(b[k] - a[k]) > EPS ) // Arrêt si un des deux critères est faux
{
if( f(x[k])*f(a[k]) < 0 )
{
a[k+1] = a[k];
b[k+1] = x[k];
}
if( f(x[k])*f(b[k]) < 0 )
{
a[k+1] = x[k];
b[k+1] = b[k];
}
x[k+1] = (a[k+1]+b[k+1])/2.0;
printf("K = %d \t X = %18.16g\n", k, x[k]);
// Impression du nombre d'itérations, et la solution à Ln(x) = 0
k++;
}
delete [] a; // Libération de la mémoire
delete [] b; // Libération de la mémoire
delete [] x; // Libération de la mémoire
}

Aucun commentaire:

Enregistrer un commentaire