Questa voce è dedicata ai molti metodi che sono stati utilizzati per calcolare radici quadrate di numeri reali positivi, o per meglio dire, per calcolare le radici quadrate principali di numeri razionali.

Storia

I primi ad occuparsi del problema dell'estrazione di radice quadrata di un numero sono stati i babilonesi. Essi, tra i primi ad utilizzare un sistema di numerazione posizionale, avevano elaborato un procedimento per l'estrazione di radice quadrata che spesso viene attribuito a matematici posteriori, come Archita (428 - 365 a.C.) oppure ad Erone di Alessandria (vissuto tra il I e II secolo d.C.) oppure a Newton.

I babilonesi avevano ricavato un valore di pari a 1,414222 con un errore di circa 0,000008 dal valore vero. Di Erone di Alessandria, matematico e scienziato greco, si hanno poche notizie biografiche. Si occupò di meccanica, matematica e fisica. A lui si deve la formula (detta appunto formula di Erone) mediante la quale calcolare l'area di un triangolo qualsiasi, noti i suoi lati. Studiò metodi approssimati per risolvere problemi di misurazione, sia in geometria che in geodesia e inventò un metodo per approssimare le radici quadrate e cubiche di numeri che non siano quadrati o cubi perfetti e proprio del metodo di approssimazione delle radici quadrate di cui vogliamo occuparci.

Metodo babilonese Il metodo babilonese (noto anche come metodo di Erone) è un algoritmo per l'approssimazione della radice quadrata di un numero reale positivo . Si basa sull'interpretazione geometrica del concetto di radice: dato un quadrato di area , il suo lato è pari a .

I babilonesi osservarono che, dato un rettangolo di area fissata , i suoi lati e sono legati da una relazione di proporzionalità inversa:

Affinché l'area rimanga costante, al crescere di un lato l'altro deve contrarsi. Se i due lati sono diversi, la radice quadrata di (che rappresenta il lato del quadrato avente la stessa area) sarà compresa tra i due valori. Un'approssimazione migliore del lato del quadrato si può ottenere calcolando la media aritmetica tra i due lati:

Sostituendo , si ottiene la formula ricorsiva:

Questo metodo è un caso particolare del metodo di Newton e si caratterizza per una convergenza molto rapida (quadratica).

L'algoritmo Per approssimare con : Si scelga un valore iniziale positivo (un'approssimazione arbitraria, tanto più vicina alla radice quanto più si desidera una convergenza rapida). Si calcoli il valore successivo della successione mediante la formula:

Si ripeta il passaggio precedente fino a ottenere il grado di precisione desiderato.

La successione così definita gode della proprietà:

Interpretazione geometrica Dato un numero positivo , la sua radice quadrata è il lato di un quadrato la cui area è . L'algoritmo trasforma iterativamente un rettangolo di area in rettangoli equiestesi i cui lati sono via via più vicini tra loro, tendendo alla forma di un quadrato.

Immaginiamo di partire con un rettangolo di area e base . L'altezza sarà necessariamente . Se , allora e abbiamo trovato il lato del quadrato. Se , il rettangolo non è un quadrato. Si definisce allora una nuova base pari alla media aritmetica tra base e altezza del rettangolo precedente.

Ad ogni passo, la differenza tra i due lati diminuisce drasticamente. Il metodo converge sempre (per qualunque valore iniziale ) e, nel caso in cui sia un quadrato perfetto e si operi con numeri razionali, la successione si avvicina indefinitamente al valore intero della radice (diventando stazionaria in caso di arrotondamento alla precisione di macchina).

Dimostrazione della convergenza Per dimostrare la correttezza di questo metodo, prendiamo la successione cercando di valutare la grandezza dell'elemento in termini di : quello che si può subito dire è che sia i termini della successione che sono numeri reali positivi. Il termine -esimo della successione è:

Il secondo fattore della seconda uguaglianza è del tipo

funzione che ha un punto di minimo assoluto nel primo quadrante per in cui essa vale 2. In particolare, il valore 2 è assunto dalla funzione soltanto quando , mentre è sempre maggiore altrove. Da quanto detto segue che

e questo significa che, preso un valore iniziale , tutti gli altri valori da compreso in poi non potranno essere inferiori a . Dalla stessa formula si ricava che

Quindi, riprendendo la formula per , si ottiene

Questo implica che la successione è decrescente e compresa fra i valori e , quindi è limitata. Poiché una successione monotona converge se e solo se è limitata, esiste un valore a cui la nostra successione converge.

Valutiamo ora lo scarto dell'-esimo termine da :

Applicando in modo ricorsivo la seguente disuguaglianza:

si ottiene che per ogni esiste un valore tale che per ogni

e con ciò è dimostrata la convergenza della successione a . Questo ci suggerisce anche che la convergenza è molto veloce: per ogni passo la distanza dal valore effettivo è almeno dimezzata, rendendo la decrescita esponenziale.

Rapidità di convergenza Al fine di capire meglio la rapidità di convergenza di questo metodo di calcolo, poniamo . Sfruttando la relazione ricorsiva fornita dal metodo stesso, abbiamo:

Poiché si è dimostrato che per ogni termine della successione vale , allora

Adesso, applicando la relazione di ricorrenza a ritroso e ponendo per semplicità di notazione , si può ottenere

dove è un intero compreso fra 2 e . Quando, in particolare, si ha , segue che

Quest'ultima relazione dimostra che il metodo babilonese è ottimo per il calcolo della radice quadrata in quanto la sua convergenza è molto veloce. Infatti è sufficiente prendere come un valore tale che

per rendere il valore fra parentesi tonde minore di 1 e fare decrescere il tutto con estrema rapidità (esponenziale di un esponenziale). Questa scelta di può sempre essere fatta perché ci troviamo a lavorare con una successione decrescente.

Esempio d'uso Ad esempio, poiché la radice quadrata di 2 deve essere compresa tra 1 e 2, stimiamo che sia circa 1,5. Applicando ripetutamente la formula otteniamo i seguenti valori:

in tal modo al quarto passaggio si ha il valore della radice quadrata di 2 corretto alla sesta cifra decimale.

Questo algoritmo funziona ugualmente bene per i numeri p-adici, ma non può essere usato per identificare radici quadrate reali con indice di radice -esimo. Riferendosi a questo metodo è facile per esempio costruire una sequenza di numeri razionali che converge a nei reali, ma a nei 2-adici.

Approssimazione Bakhshali Il metodo Bakhshali è un altro modo per trovare un'approssimazione della radice quadrata di un numero che fu descritto in un antico manoscritto col nome di Manoscritto Bakhshali perché fu scoperto nel 1881 vicino al villaggio di Bakhshali (o Bakhshalai) nella frazione Yusufzai del distretto di Peshawar (ora parte del Pakistan). Il testo era scritto in lingua sarada su corteccia di betulla.

L'approssimazione Bakhshali della radice quadrata si ottiene applicando due volte l'approssimazione semplice.

Con le notazioni precedenti introduciamo e e quindi si ha

Sviluppando l'equazione diventa:

Esempio di approssimazione Bakhshali Trova

Usiamo

Calcolo della radice quadrata di un intero: algoritmo di Bombelli In estrema sintesi questo metodo di calcolo usa una serie di moltiplicazioni e sottrazioni per trovare il risultato della radice quadrata, il vantaggio di questo metodo di calcolo è che si può applicare anche ad altre basi numeriche oltre la base 10, nello specifico è estremamente più veloce di altri metodi in caso di numeri binari.

Il primo passaggio sarà quello di dividere il numero di cui dobbiamo trovare la radice in coppie di cifre, per esempio il numero 5362451 diventerà 05.36.24.51, da queste prendiamo la coppia più a sinistra , 05, e utilizzeremo l'algoritmo di Bombelli ovvero dobbiamo trovare il numero x tale per cui x sia il più grande numero che sia inferiore a 5, l'algoritmo è:

Dove b è la base numerica in cui svolgiamo il calcolo, r è il risultato della radice quadrata ottenuto finora e d è una variabile appartenente ai numeri interi che ci darà la prossima cifra della radice quadrata.

Nelle numerazioni a base 10 diventa:

Risolviamo ora il numero di esempio, essendo la prima coppia di numeri il risultato parziale della radice quadrata r è naturalmente 0 per cui risolviamo l'algoritmo per i vari valori di d (1,2,3,...):

9 è superiore a 5 quindi il valore di d che ci interessa è 2 che sarà la prima cifra del risultato parziale della radice quadrata. Ora sottraiamo a 5 il valore di x, 5 - 4 = 1.

Abbiamo un resto che aggiungeremo alla prossime due cifre, il prossimo valore a cui applicare l'algoritmo è 136, ricordo che il risultato parziale della radice ora è 2, applico l'algoritmo:

Chiaramente d è pari a 3 quindi il risultato parziale della radice quadrata r diventa 23, sottraiamo 129 a 136 ed abbiamo un resto di 7, abbassiamo la prossima coppia di numeri e otteniamo 724, applichiamo di nuovo l'algoritmo:

d è pari a 1 e il risultato parziale della radice quadrata r diventa 231, sottraiamo 461 a 724 ed abbiamo un resto di 263, abbassiamo l'ultima coppia di numeri e otteniamo 26351, applichiamo di nuovo l'algoritmo:

d è pari a 5 quindi il risultato della radice quadrata r diventa 2315, volendo proseguire con i decimali, basterà ricavare il resto della differenza tra 26351 e 23125 che è pari a 3226, non avendo altre cifre da portare giù aggiungiamo semplicemente due zeri facendolo diventare 322600 e applicheremo di nuovo l'algoritmo fino ad avere l'approssimazione desiderata.

Usando la base binaria, l'algoritmo si semplifica molto, perché in base 2, per trovare la più grande cifra binaria tale che , si deve provare solo con , se la disuguaglianza è verificata, allora la nuova cifra del risultato è 1, altrimenti 0. Stima asintotica del tempo impiegato dall'algoritmo Per trovare ogni cifra del risultato (in base binaria) sono necessarie le seguenti operazioni: moltiplicare per 1002 e aggiungere 1 (equivale ad accodare 01 alla scrittura binaria); un confronto, cioè verificare se la disuguaglianza è soddisfatta; una differenza tra numeri che hanno al massimo un numero di cifre pari a quello del risultato. Quindi per trovare la parte intera della radice di un intero , è necessario un tempo .

Implementazione con una funzione nel linguaggio C++

int intsqrt(int a, int* pr) // Dato l'intero positivo a, calcola la parte intera della // sua radice quadrata principale e il relativo resto; // pone il resto in *pr e ritorna la radice { int x, r, dp1, L, g, j, y,yn; // separa coppie di cifre e calcola numero delle cifre della radice L=0; while(a>0)

g[L++]=a%100; a /= 100;

// corsa per individuare le successive cifre della radice x=r=0; for(j=L-1;j>=0;j--)

r=r*100+g[j]; //somma al resto precedente moltiplicato per 100 il nuovo gruppo di 2 cifre y=0; // determina cifra for(dp1=1;dp1<10;dp1++)

yn=dp1*(20*x+dp1); if(yn<=r) y=yn; else break;

x=x*10+dp1-1; r -= y;

*pr=r; return(x);

Calcolo della radice quadrata con qualsivoglia precisione Il precedente algoritmo può essere adattato per ottenere la radice di un numero dato da una scrittura decimale (o posizionale in qualsiasi base) con qualsivoglia precisione. Si voglia ad esempio la radice del numero con cifre decimali. Innanzitutto si considera il numero intero quindi con l'algoritmo precedente si trova la radice di trovando la parte intera 1234288 e il resto 2134056. Dividendo la parte intera per cioè per la radice del precedente fattore moltiplicativo, si ottiene 12,34288 come valore per difetto. Si può quindi concludere che il valore cercato è 12,3429 e che costituisce un arrotondamento per eccesso.