Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Radice quadrata secondo Erone
Forum - Algoritmi - Radice quadrata secondo Erone

Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 16:14
Lunedì, 14/05/2007
Posto la descrizione dell'algoritmo di calcolo della radice quadrata di un numero n per chi si scervella e si è scervellato come me per fare un programma veloce che calcoli la benedetta radice quadrata.

SQRT(n)
h=n/2;
i;
FOR(i=0;i<NUM_CICLI;i++)
h->(h+(n/h))/2;
END FOR
RETURN h;
END SQRT

La funzione in pseudocodice sopra riporta il metodo di calcolo della radice quadrata come ce la vuole far calcolare Erone, essa si basa su una semplicissima osservazione geometrica in quanto calcola l'area di una figura di cui conosce il lato e via via approssima sinché non trova la radice, una forma più corretta ma che potrebbe a seconda dell'approssimazione della variabile rallentare il calcolo (o accelerarlo) è

SQRT(n)
h=n/2;
FOR(;(h*h)!=n; )
h->(h+(n/h))/2;
END FOR
RETURN h;
END SQRT

Ma se la macchina non approssima mai per eccesso, come spesso succede, allora si fermerebbe solo in caso di quadrato perfetto, per cui sarebbe meglio usare la prima versione.

Ultima modifica effettuata da lorelapo il 17/05/2007 alle 17:20
PM Quote
Avatar
CGiuseppe (Normal User)
Rookie


Messaggi: 54
Iscritto: 29/09/2006

Segnala al moderatore
Postato alle 20:24
Venerdì, 28/12/2007
Testo quotato

Postato originariamente da lorelapo:

Posto la descrizione dell'algoritmo di calcolo della radice quadrata di un numero n per chi si scervella e si è scervellato come me per fare un programma veloce che calcoli la benedetta radice quadrata.

SQRT(n)
h=n/2;
i;
FOR(i=0;i<NUM_CICLI;i++)
h->(h+(n/h))/2;
END FOR
RETURN h;
END SQRT

La funzione in pseudocodice sopra riporta il metodo di calcolo della radice quadrata come ce la vuole far calcolare Erone, essa si basa su una semplicissima osservazione geometrica in quanto calcola l'area di una figura di cui conosce il lato e via via approssima sinché non trova la radice, una forma più corretta ma che potrebbe a seconda dell'approssimazione della variabile rallentare il calcolo (o accelerarlo) è

SQRT(n)
h=n/2;
FOR(;(h*h)!=n; )
h->(h+(n/h))/2;
END FOR
RETURN h;
END SQRT

Ma se la macchina non approssima mai per eccesso, come spesso succede, allora si fermerebbe solo in caso di quadrato perfetto, per cui sarebbe meglio usare la prima versione.



Bene, ma non ho capito bene il fatto geometrico... :)

PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 19:56
Sabato, 29/12/2007
bhe, se potessi disegnare un rettangolo che ha per lati ha e (area/h) ti accorgeresti che man mano quel rettangolo assomiglia sempre di più al quadrato

Ultima modifica effettuata da lorelapo il 06/01/2008 alle 21:17
PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 12:37
Mercoledì, 19/03/2008

PM Quote