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 :

Taille
Rôle

A

multi
Intermédiaire

B

1 chiffre
Chiffre de la racine

C

2 chiffres
Tranche de nombre entré

D

multi
Racine

E

multiple
Reste pseudo-division

Comme toujours sur EL9600, le programme est extrêmement basique.