La calcolatrice usa successioni basate su perfezionamenti del metodo di Newton (vedi Les Algorithmes, Bibliothèque Tangente 37, 2013, oppure Itération et Récurrence, Bibliothèque Tangente 76, 2021).
La funzione f utilizzata è definita da f (x) = x2 ‒ a.
Cerchiamo la soluzione di f (x) = 0, poiché la soluzione è proprio a la quantità che ci interessa. Implementiamo l’algoritmo.
La derivata di f è f ' (x) = 2 x, e si ha f(x)f′(x)=x2−a2x=x2−a2x.
Si ottiene così la successione di Erone:
un+1=un−f(un)f′(un)=un−un2+a2un=un2+a2un=12(un+aun).
Illustriamo ora il metodo con a = 163. Per inizializzare i calcoli, si può partire da a, oppure, dato che 163 è compreso tra 144 = 122 e 169 = 132, da 12.
Dopo appena tre iterazioni dell’algoritmo, il risultato è sorprendente, poiché 163=12,7671453348037…
Infatti, il numero di cifre decimali esatte raddoppia (come minimo) a ogni ciclo: è il fenomeno della convergenza quadratica.
A ogni iterazione occorrono un’addizione, una divisione e una divisione per 2, facile da programmare in binario: in tutto, appena tre operazioni.
L’astuzia di Schönhage ---------------------
Il principale svantaggio dell’uso della successione di Erone (vedi sopra) è la presenza di una divisione: un’operazione «gravosa» e «lenta», persino per un circuito elettronico. Tuttavia, la divisione « a / *un » può essere sostituita da una successione: ancora una volta si usa il metodo di Newton per calcolare l’inverso 1/b di un numero reale b > 0. Questa volta si usa la funzione g definita da g(x)=1x−b, che porta alla successione v definita da vn*+1 = *vn(2 ‒ bvn*).
Infatti: g(x)=1x−b, e g′(x)=−1x2, da cui g(x)g′(x)=1x−b−1x2=−x2(1x−b)=−x+bx2,
ossia vn+1=vn−g(un)g′(un)=vn+vn−bvn2=vn(2−bvn).
Si può fare ancora meglio! Il matematico tedesco Arnold Schönhage (nato nel 1934) ebbe l’idea di accoppiare le due successioni del metodo di Newton; questo accoppiamento si rivelò più efficiente dell’uso separato dei due metodi. Per calcolare un valore approssimato della radice quadrata di a > 0, ripartiamo dalla successione u, definita da
un+1=12(un+aun)=un+a−un22un.
Per calcolare 12un, si usa il metodo di Newton per calcolare gli inversi.
In questo contesto si usano due successioni, u e v:
{un+1=un+(a−un2)vn,\[0,7mm]vn+1=vn(2−2unvn)=vn+(1−2unvn)vn, con v0=12u0.