Formule de Héron d’Alexandrie
La suite finale permet de calculer la racine carrée en fonction d’une valeur initiale arbitraire x 0 . En principe, on utilise
la valeur entière approchée de la racine carrée, la formule permettant initialement d’obtenir rapidement les nombres
situés après la virgule. Donc si vous cherchez la racine carrée de 40, sachant que 6x6 vaut 36 et que 7*7 vaut 49, la
racine carrée est comprise entre les deux, vous devriez mettre 6. Cependant dans la pratique, n’importe quelle valeur
peut convenir, avec un nombre important d’itérations vous obtiendriez toujours le résultat attendu, autant en plaçant
1 que 10000.
Il est cependant très intéressant de pouvoir optimiser le calcul en récupérant l’entier le plus proche. Du coup
l’algorithme sera extrêmement précis. Celuici contiendra deux boucles. La première de type "Tant Que", chargée de
calculer l’entier x le plus proche de la racine carrée de a. La seconde de type "Pour" calculera les décimales. Le
nombre d’itérations permettra de déterminer une précision. D’ailleurs, inutile d’exécuter cette seconde boucle si le
résultat de la première correspond à la racine recherchée.
Variables i,x,a,cpt en Numérique
Début
x←1
α←39
cpt←5
Tant Que (x*x) x←x+1
Fin Tant Que
Si (x*x) !=a Alors
x←x-1
Pour i de 1 à cpt Faire
x←0.5*(x+a/x)
Fin Pour
FinSi
Ecrire "La racine de ",a," est ",x
Fin
Vous allez être étonné de la pertinence et de la précision des résultats. Ainsi en seulement trois ou quatre itérations,
la précision est suffisante pour la plupart des applications. Malheureusement, et vous le verrez dans la suite de
l’ouvrage, c’est beaucoup de travail pour pas grand chose : les langages sont fournis avec des instructions
particulières permettant d’effectuer ces calculs, d’autant plus que les fameux FPU (coprocesseurs arithmétiques)
disposent d’une instruction en dur rien que pour ça (FSQRT par exemple sur un vieux Motorola MC68881).
En attendant, voici la transcription de ce calcul avancé en Java :
class chap4_racine {
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
92
La suite finale permet de calculer la racine carrée en fonction d’une valeur initiale arbitraire x 0 . En principe, on utilise
la valeur entière approchée de la racine carrée, la formule permettant initialement d’obtenir rapidement les nombres
situés après la virgule. Donc si vous cherchez la racine carrée de 40, sachant que 6x6 vaut 36 et que 7*7 vaut 49, la
racine carrée est comprise entre les deux, vous devriez mettre 6. Cependant dans la pratique, n’importe quelle valeur
peut convenir, avec un nombre important d’itérations vous obtiendriez toujours le résultat attendu, autant en plaçant
1 que 10000.
Il est cependant très intéressant de pouvoir optimiser le calcul en récupérant l’entier le plus proche. Du coup
l’algorithme sera extrêmement précis. Celuici contiendra deux boucles. La première de type "Tant Que", chargée de
calculer l’entier x le plus proche de la racine carrée de a. La seconde de type "Pour" calculera les décimales. Le
nombre d’itérations permettra de déterminer une précision. D’ailleurs, inutile d’exécuter cette seconde boucle si le
résultat de la première correspond à la racine recherchée.
Variables i,x,a,cpt en Numérique
Début
x←1
α←39
cpt←5
Tant Que (x*x) x←x+1
Fin Tant Que
Si (x*x) !=a Alors
x←x-1
Pour i de 1 à cpt Faire
x←0.5*(x+a/x)
Fin Pour
FinSi
Ecrire "La racine de ",a," est ",x
Fin
Vous allez être étonné de la pertinence et de la précision des résultats. Ainsi en seulement trois ou quatre itérations,
la précision est suffisante pour la plupart des applications. Malheureusement, et vous le verrez dans la suite de
l’ouvrage, c’est beaucoup de travail pour pas grand chose : les langages sont fournis avec des instructions
particulières permettant d’effectuer ces calculs, d’autant plus que les fameux FPU (coprocesseurs arithmétiques)
disposent d’une instruction en dur rien que pour ça (FSQRT par exemple sur un vieux Motorola MC68881).
En attendant, voici la transcription de ce calcul avancé en Java :
class chap4_racine {
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
92
