Voilà une version améliorée du programme de 'obasileus' qui sert à calculer des racines... Cette version est largement améliorée,plus précise,plus rapide et plus souple...
Source / Exemple :
/**************************************\
- Root Calculator *
- Version 1.00 *
- Started The 11th March 2002 *
- By Nicolas BENOIT, ndj55@free.fr *
- http://www.ndj55.fr.fm *
\**************************************/
/*
Ce programme est basé sur le programme 'Racine' créé par obasileus.
//--------------------------------------------------------------------------------
//||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//--------------------------------------------------------------------------------
#include <stdio.h>
//--------------------------------------------------------------------------------
//||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//--------------------------------------------------------------------------------
int main(void)
{
unsigned long int nombre = 0;
unsigned long int iteration = 0;
unsigned long int diviseur = 2;
double temp;
double root;
printf("Carre de la racine recherchee : ");
scanf("%i",&nombre);
printf("Precision : ");
scanf("%i",&iteration);
temp = nombre / 2.0;
root = temp;
while (iteration != 0)
{
if (((root * root) > nombre) && (root > 0))
{
root -= (temp / diviseur);
}
else
{
root += (temp / diviseur);
}
if ((root * root) == nombre)
{
break;
}
diviseur += 2;
--iteration;
}
printf("\a\n\nRacine Approximative =\t%.10f\nCarre Approximatif =\t%f\n",root,root*root);
getchar();
while (getchar() == 0)
{
getchar();
}
return 0;
}
//--------------------------------------------------------------------------------
//||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//--------------------------------------------------------------------------------
Conclusion :
Une précision de 32000 permet d'obtenir un résultat exact presque à tous les coups....
4 sept. 2002 à 10:14
pour calculer une approximation de racine carré, il existe un algorithme simple et très rapide : l'algorithme d'héron.
En 8 itérations, on a deja une très bonne précision ! (l'algo utilise les suites)
J'en ai codé une version ici :
http://www.cppfrance.com/article.aspx?Val=874
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.