#include /* Ce programme calcule la racine d'une fonction d'une variable */ /* par la methode de Newton */ /* fonc(x) : fonction d'une variable, fournie par l'usager */ /* dfdx(x) : derivee de la precedente, fournie par l'usager */ /* epsilon : niveau de precision recherche */ /* nmax : nombre maximal d'iteration toleres */ main() { /* Declarations ---------------------------------------------------- */ float fonc(float), dfdx(float) ; /* Fonction et sa derivee */ int k=0 ; /* Compteur d'iterations */ int itermax=20 ; /* Nombre maximal d'iterations */ float xr ; /* Ceci sera notre racine */ float epsilon=1.e-6 ; /* Precision pour la racine */ float pi=3.1415926536 ; /* Valeur de pi */ float delta ; /* Variable locale */ /* Executable ------------------------------------------------------ */ xr = 1.5*pi ; /* Point de depart */ delta= 1. ; /* Nombre plus grand qu'epsilon */ while (fabs(delta) > epsilon && k <= itermax ) /* Boucle Newton */ { delta = -fonc(xr)/dfdx(xr) ; /* calcul de l'increment en x */ xr = xr+delta ; /* Nouvelle valeur de x */ k = k+1 ; } printf ("racine de la fonction = %f +/- %f\n", xr,delta) ; } /* Definition de la fonction dont on recherche la racine */ float fonc (float x) { float f ; /* Variable locale */ f = x * cos(x) - sin(x) ; /* La fonction qu'on calcule */ return f ; } /* Definition de la derivee de la fonction precedente */ float dfdx (float x) { float df ; /* Variable locale */ df = -x * sin(x) ; /* Derivee de la fonction fonc */ return df ; }