adminv15
(30 punti)
6' di lettura
5 / 5 (1)
In quest'appunto di matematica si troverà un esempio di algoritmo in grado di calcolare la radice quadrata di numeri interi grandi. In allegato è presente un file in cui sono forniti ulteriori spiegazioni ed esempi riguardanti l'algoritmo.

Cos'è la radice quadrata e a cosa serve

Effettuare la radice di un numero è un'operazione molto utilizzata in matematica: essa, infatti, serve per ricavare il numero che, moltiplicato tante volte quante suggerite dall'indice, dà come risultato il valore sotto radice, ossia il radicando.
Nel caso della radice quadrata, l'indice corrisponde al numero 2.
Un esempio di radice quadrata è:
[math]\sqrt(144)=12[/math]
, dove in questo caso 2 è l'indice, 144 è il radicando e 12 è il risultato della radice quadrata.

Per comprendere l'importanza di quest'operazione basta pensare alle equazioni di secondo grado: in quel caso, la radice del discriminante permette di ricavarne la soluzione. La radice quadrata è molto utilizzata anche in geometria e in particolare nelle formule inverse. Ad esempio:

  • nel quadrato
    [math]A=l^2[/math]
    e quindi per calcolare il lato
    [math]\sqrt(A)=l[/math]
  • nel cerchio
    [math] A=\frac{ \pi d^2}{4}[/math]
    , e quindi per calcolare il diametro
    [math]d=\sqrt\frac{4A}{ \pi }[/math]

Come effettuare il calcolo della radice quadrata con un algoritmo

Calcolare il valore della radice quadrata manualmente non è semplice: per questo motivo è opportuno svolgerle utilizzando una calcolatrice o un algoritmo.
Quando si vuole fare quest'operazione, la prima cosa da fare è trovare un modo per scomporre in numeri primi il radicando. Tra i più utilizzati vi sono il metodo di Fermat, il metodo di Gauss, il metodo di Tchebichef, il metodo di Kraitchik e i più recenti metodi di Shank, Morrison, Brillhart e QS.

L'algoritmo presentato all'interno di questo appunto è stato realizzato con il linguaggio Qbasic e sfruttando il metodo iterativo di Newton-Raphson.
Il metodo di Newton-Raphson (anche chiamato metodo delle tangenti) consente, dopo aver definito un intervallo chiuso di riferimento, di effettuare il calcolo approssimativo di un'equazione del tipo

[math]f(x)=0[/math]
.
La formula iterativa utilizzata è:
[math]x_{m+1=}\frac{1}{2}(x_m+\frac{N}{x_m}[/math]
, con
[math]m=0,1,2,3...[/math]
e per il quale vale che
[math]\lim_{m\to \inf}x_m=\sqrt N[/math]
.

E' necessario scrivere due algoritmi differenti per valutare la radice quadrata di numeri con ordini di grandezza minori e maggiori di 15, a causa di alcuni limiti legati alle capacità operative. In particolare, il primo algoritmo sarà piuttosto semplice e può essere realizzato in poche stringhe mentre il secondo necessita di un approccio più approfondito.

Gli step principali per calcolare la radice quadrata di un numero cui ordine di grandezza è inferiore a 15

Per calcolare la radice quadrata di un numero con ordine di grandezza inferiore a 15 si utilizza la formula precedentemente citata, ossia
[math]x_(m+1)=\frac{1}{2}(x_m+\frac{N}{x_m}[/math]
. Il codice contiene un ciclo iterativo, che terminerà quando il valore calcolato della parte numerica della radice sarà lo stesso per due iterazioni. Attenzione: l'iterazione deve partire da un numero simile al risultato da ottenere se si desidera effettuare il calcolo con poche iterazioni.
Il codice è:

CLS: DEF DBL A-Z
INPUT "N", N: B=LOG(N)/LOG(10): C=INT(B/2)+1
Xo=0.5*10^C: X=Xo
WHILE INT(X)INT(Y)
X=X1:Y=1/2*(X+N/X):X1=INT(Y)
WEND
PRINT"Radice interna di N:"; X
END

Gli step principali per calcolare la radice quadrata di un numero cui ordine di grandezza è superiore a 15

Il codice precedentemente mostrato non può essere utilizzato per ricavare radici quadrate di numeri con ordine di grandezza più grande di 15 poiché l'approssimazione legata all'arrotondamento sarebbe troppo alta. L'algoritmo, in questo caso, deve effettuare i seguenti step logici:
  • Introdurre il numero
    [math]N[/math]
    come input, presentandolo come stringa alfanumerica
  • Valutare la lunghezza
    [math]ln[/math]
    della stringa, cioè contare il numero di caratteri e cifre che compongono il numero
  • Scegliere una base opportuna di numerazione, del tipo
    [math]pr=10^g[/math]
  • Suddividere la stringa partengo da destra in gruppi di
    [math]g[/math]
    cifre
  • Convertire la stringa in valore numerico
  • Memorizzare i valori in un vettore formato da
    [math]g[/math]
    cifre elementari

Una volta realizzato il codice, per valutare quale sia il valore iniziale più opportuno (Xo) si deve partire dal valore approssimato di radice ottenuto dal primo codice, così da individuare una base di partenza che abbia lo stesso ordine di grandezza del risultato e poi trasformarlo in una stringa per renderlo utilizzabile nel secondo codice.

Le operazioni aritmetiche da effettuare per ogni operazione sono:

  • il calcolo del quoziente
    [math]\frac{N}{X}[/math]
  • La somma tra il quoziente e il valore iniziale Xo
  • La divisione per due del precedente risultato

Puoi trovare ulteriori commenti sul codice, il listato del programma e due esempi di calcolo nel file in allegato.

Per ulteriori approfondimenti sul calcolo della radice quadrata vedi anche qua