domingo, 3 de mayo de 2015

Algoritmo babilónico para calcular una raiz cuadrada. ( Artículo escrito en catalán )

Hi ha diversos algorismes per calcular l'arrel quadrada d'un nombre real positiu; un d'ells, és el conegut com algorisme babilònic. L'algorisme babilònic és especialment interessant perquè es fonamenta en una noció geomètrica senzilla: la longitud del costat d'un quadrat és igual a l'arrel quadrada del valor de l'àrea del quadrat. [ Observació: en aquest article parlarem tan sols del valor positiu de l'arrel quadrada ].

Per exemple, és clar que l'arrel quadrada d'un nombre quadrat, com ara 4 (valor de l'àrea), és igual a 2 (valor de lna longitud del costat), perquè 2·2=4 ('àrea d'un quadrat es calcula multiplicant la longitud del costat per si mateixa).

Si el radicand r no és un nombre quadrat, llavors caldrà imaginar un rectangle l'àrea, de costats a i b, l'àrea del qual sigui igual a r, és a dir, a·b=r. Evidentment, hi ha vàries possibilitats per escollir a i b, això és evident, però no és rellevant com s'escull a i b. Fet això, cal redefinir les dimensions d'aquest rectangle per tal que, conservant l'àrea, s'apropi a un quadrat , de tal manera que les la diferència entre les longituds dels dos costats desiguals sigui més petita; això ho farem de la manera següent:
$a \leftarrow \dfrac{a+b}{2}$
i
$b \leftarrow \dfrac{r}{a}$
Continuarem aquest procés fins que la diferència entre els valors de $a$ i de $b$ sigui tan petit com vulguem, d'acord amb la precisió amb què desitgem fer el càlcul de l'arrel quadrada. Llavors, complirà
$\sqrt{r}\approx a$

Exemple:
Considerem el radical $\sqrt{13}$. Com que $13$ no és un nombre quadrat, cal anar fent el que hem exposat:
--------------------------------------------------------
Iteració número 1: $a =4 \quad \text{i} \quad b=13/4=3,25$
--------------------------------------------------------
Iteració número 2: $a=\dfrac{4+3,25}{2}=3,625 \quad \text{i} \quad b=\dfrac{13}{3,625}\approx 3,5862$
--------------------------------------------------------
Iteració número 3: $a=\dfrac{4+3,25}{2}=3,625 \quad \text{i} \quad b=\dfrac{13}{3,625}\approx 3,5862$
--------------------------------------------------------
Iteració número 4: $a=\dfrac{3,625+3,5862}{2}=3,6056 \quad \text{i} \quad b=\dfrac{13}{3,6056}\approx 3,6055$
--------------------------------------------------------
Iteració número 5: $a=\dfrac{3,6056+3,6055}{2}\approx 3,6056 \quad \text{i} \quad b=\dfrac{13}{3,6056}\approx 3,6056$
(...)

Resultat:
Com podem veure a dalt, les longituds dels dos costats s'igualen a partir de la cinquena iteració, coincidint amb tres xifres decimals exactes pel cap baix; és a dir,
                        $\sqrt{13}\approx 3,6056$

Si desitgem més precisió, caldrà fer els càlculs prenent més xifres significatives; fent, és clar, més interacions.

$\square$


Aquest algorisme es pot implementar fent ús d'un ordinador o bé d'una calculadora programable, escrivint un programa. Hi ha molts llenguatges de programació adequats (C, Java, el llenguatge que incorpora MAXIMA, etcètera; per això, a continuació, donarem un esbós del programa, escrivint-lo en una mena de pseudocodi:

        // Càlcul de $\sqrt{r}$
  COMENÇA
        // entrada de dades
    radicand:=r // entrada del valor del radicand (volem calcular l'arrel quadrada d'aquest nombre)
    a:=a_0; // entrada de la longitud d'un dels costats del rectangle (a_0 < r)     b:=r/a; // longitud d'un dels costats del rectangle
    precisió:=p; // valor més petit de la diferència (en valor absolut) entre a i b
        // càlcul iteratiu
    FES MENTRE abs(a-b)>precisió
        a:=(a+b)/2;
        b:=r/a;
    FI DE FES
        // sortida
    ESCRIU "arrel de r=",a
  ACABA

$\square$


[nota del autor]