Extraction de la racine n-ieme

Soyez le premier à donner votre avis sur cette source.

Vue 6 483 fois - Téléchargée 241 fois

Description

Voila un programme qui montre comment extraire un racine n-ieme par l'algorithme de Newton.
Celui-ci consiste en une suite qui convergne (normalement) vers 0.
La formule est dans le source.

Le programme permet de voir le convergence de la suite, et pour cela il calcule la valeur attendue grace aux fonctionx de math.h.
Cependant il faut au moin avoir une fonction d'elevation a la puissance entiere.
Ici j'ai permis de prendre des reel pour n, mais normalement c'est un entier, et donc la fonction pow de math.h n'est utilisee qu'avec des puissances entieres.

Donc le but est de resoudre : x^n=k

Source / Exemple :


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>

// extraction de la racine-n-ieme par l'iteration de Newton :
// si
//                 f'   /     // x    = x   -  ----- |   x   |
//  n+1    n       f    \   n /
// 
// 
// alors lim x  = a   tel que f(a) = 0  (en resume, une racine)
//       +oo  n
// 
// les criteres de convergences sont compliques ...
// ... pas etonnant qu'avec cet algorithme on fasse des fractales
double InputDouble(char *text)
{
char buf[256];
printf("%s",text);
gets(buf);
return atof(buf);
} // InputDouble()
int main(int argc,char **argv)
{
double  x,n,k;
double  resultat;
int     i;

printf("resoudre : x^n=k :\n");
n = InputDouble("n : ");
k = InputDouble("k : ");

// on calcul le vrai resultat pour comparer
// on ne devra pas s'en servir pour retrouver le resultat
resultat = pow(k,1./n);
printf("------------------------------\n");
printf("- valeur reelle : %lf\n",resultat);
printf("- valeurs de la suite avec l'ecart relatif :\n");

x = 1.;
for(i=0;i<16;i++) // on regarde la convergence sur 16 coups
  {
  printf("x(%2d) = %8.5lf (%07.4lf %%)\n",i,x,fabs(resultat-x)/resultat);
  x -= (pow(x,n)-k)/(n*pow(x,n-1)); // voila l'iteration
  }

printf("------------------------------\n");
getch();
return 0;
} // main()

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
Ha oui ok excuse moi.
en fait cet algorithme pour des fonctions generales fais converger la usite vers zero (vers une racine), mais les criteres de convergence sont compliqués, on ne sait pas vers quelles racine cela va converger, pour t'en persuader, regarde ma photo, c'est un fractale de Newton, les couleurs correspondes a une couleurs particuliere d'une racine d'un polynome. Donc c difficile.
Mais cosmobob me faisait remarquer que dans ce cas precis (fonction : x^n-k), les criteres de convergence sont plus simple.
En prenant 1 comme premier terme, la suite convergera.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
dans ta description: "Celui-ci consiste en une suite qui convergne (normalement) vers 0."
si je comprends bien j'ai mal interprété le mot 'normalement' :)
ici normalement à le sens de logiquement, c'est ca?
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
ou parle t on de convergence nomal ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu parle de convergence normale pour une suite, moi je connaissais seulement pour les séries de fonctions. Qu'est ce que la convergence normale pour les suites?
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
Merci pour les precisions, il est vrai que moi j'etais toujours dans le cas general.
Afficher les 6 commentaires

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.