Home |
Logithèque |
EL9600
Calcul de racine carrée d'un entier
Code
0->D
0->E
Label 1
Input C
100*E+C->E
0->B
Label 2
20*D+2*B+1->A
If A>E Goto 3
B+1->B
E-A->E
Goto 2
Label 3
10*D+B->D
Print D
If D<e9 Goto 1
Attention à la dernière ligne le signe "e" est le signe d'exposant de la puissance de 10 de la notation scientifique.
Mode d'emploi
Découper le nombre entier en tranches de 2 chiffres en partant de la droite.
Lancer le programme.
Saisir une tranche de 2 chiffres à chaque arrêt, en commençant par celle de gauche.
La racine s'affiche progressivement, un chiffre de plus à chaque fois.
Le programme s'arrête lorsque 10 chiffres ont été produits.
Exemple
On utilise tout simplement l'algorithme de "pseudo-division" que l'on utilisait lorsque les racines carrées se calculaient encore à la main...
Notez que ce programme est utile pour toute racine carrée, car on peut toujours se ramener au calcul sur un entier. Par exemple, la racine carrée de 2 est égale à celle de 2 00 00 00 00 divisée par 1 0 0 0 0.
Un exemple d'utilisation : racine carrée de 5721340 ? Le nombre est découpé en tranches : 5 72 13 40.
On lance le programme, et on tape la première tranche, soit 5.
Le programme affiche 2, on continue et on tape la tranche suivante : 72.
Le programme affiche 23, on tape la tranche suivante : 13.
Le programme affiche 239, on tape la tranche suivante : 40.
Le programme affiche 2391. Pour avoir la première décimale on ajoute une tranche "vide" en saisissant 00.
Le programme affiche 23919, on rajoute encore une tranche à 00.
Le programme affiche 239191 et on choisit de ne pas continuer.
Nous en déduisons que la racine carrée de 5721340 est approximativement 2391,91 .
Si on avait continué de saisir des tranches à 00, le programme se serait arrêté après production de 10 chiffres, car au-delà on n'a plus la précision nécessaire au calcul.
Mathématiques à l'oeuvre
Voici comment on retrouve l'algorithme de "pseudo-division".
Supposons que An soit la collection des n premières tranches (en partant de la gauche) de 2 chiffres du nombre original, et Dn les n premiers chiffres de la racine carrée. Soient aussi les suites Bn et Cn telles que :
A(n+1) = 100.An + C(n+1)
D(n+1) = 10.Dn + B(n+1)
Et posons : En = An - Dn^2 (En est positif ou nul)
On connaît la suite des Cn et on cherche donc celle des Bn.
Or D(n+1)^2 <= A(n+1), ce qui donne :
100.Dn^2 + 20.Dn.B(n+1) + B(n+1)^2 <= 100 An + C(n+1)
Soit : B(n+1) . [20.Dn + B(n+1)] <= (100.En + C(n+1) )
Or on connaît le terme de droite, appellons-le : F(n+1) = 100.En + C(n+1)
Et appellons : G(n+1) = B(n+1) . [20.Dn + B(n+1)]
La seule difficulté est de déterminer B(n+1) par tâtonnements dans l'expression de G de façon que G(n+1) <= F(n+1).
Finalement les suites se calculent successivement dans l'ordre suivant :
Cn+1 -> Fn+1 -> { Bn+1, Gn+1 } -> Dn+1 et En+1
C'est tout !
Fonctionnement du programme
Les variables utilisées sont les suivantes :
|
Rôle | |
|
|
Intermédiaire |
|
|
Chiffre de la racine |
|
|
Tranche de nombre entré |
|
|
Racine |
|
|
Reste pseudo-division |
Comme toujours sur EL9600, le programme est extrêmement basique.