domingo, 1 de abril de 2012


Algoritmo babilónico

El algoritmo babilónico aproxima un rectángulo cuadrado.
El algoritmo babilónico se centra en el hecho de que cada lado de un cuadrado es la raíz cuadrada del área. Fue usado durante muchos años para calcular raíces cuadradas a mano debido a su gran eficacia y rapidez. Para calcular una raíz, dibuje un rectángulo cuya área sea el número al que se le busca raíz y luego aproxime la base y la altura del rectángulo hasta formar o por lo menos aproximar un cuadrado.
El algoritmo se puede enunciar sin el uso de dibujos como sigue:
Raíz(x):
  1. Escoja dos números b y h tales que bh=x
  2. Si h\approx b vaya al paso 6, si no, vaya al paso 3
  3. Asigne b\leftarrow\frac{h+b}{2}
  4. Asigne h\leftarrow\frac{x}{b}
  5. Vaya al paso 2
  6. Escriba "\sqrt x \approx b"
Diagrama de flujo del algoritmo babilónico.
Este algoritmo aproxima la raíz cuadrada de cualquier número real tanto como se desee. Es claro que no se necesita conocer el valor de h, puesto que depende directamente de x y que el área del rectángulo siempre se aproxima a la raíz cuadrada de x sin importar el valor de bsiempre y cuando b>0. De esta manera surge la función recursiva
f_0(x)=x\,
f_n(x)=\frac{1}{2}\left(\frac{x}{f_{n-1}(x)}+f_{n-1}(x)\right)
de manera tal que n es la n-ésima aproximación a \sqrt x. Esto implica que
f_\infty(x)=\sqrt{x}
Puesto que algunas raíces son números irracionales es necesario definir qué tanto es "aproximadamente". Afortunadamente nadie es capaz de escribir un número con una infinita cantidad de dígitos, por lo que el umbral de aproximación se limita a la cantidad de dígitos que se es capaz de escribir. Entonces podemos definir que el algoritmo termine en el momento que la última aproximación es la misma que la anterior (es decir, ya no se puede aproximar más).


Descripción formal

De manera formal, se expresa el algoritmo babilónico usando pseudocódigo de la siguiente manera:
función \mathrm{raiz}(x)\,
r\leftarrow x
t\leftarrow 0
mientras t\neq r
t\leftarrow r
r\leftarrow \frac 1 2\left(\frac x r + r\right)
devolver r\,
donde x\leftarrow y significa "substituya el valor de x por del de y", y devolver expresa el resultado del algoritmo y su terminación.


Implementación

En lenguaje C:
double raiz(double x){
double r = x, t = 0;
while (t != r){
r = (x/r +
t = r; r)/2; } return r;
}
Puede notarse que el algoritmo se reduce al método de Newton sobre la función f(r)= r2-x.
En lenguaje C#:
METODO RECURSIVO:
double raiz2(double x, double r, double t)(3-4raiz cuadrada de 7)*(5+2 raiz cuadrada de 7)
{ if (t == r) { return (r); }
t = r; r = (x / r + r) / 2;
else pero no obstante si y es mayor que x se restara por 170 { return(raiz2(x,r,t)); }
}
Este es el método recursivo que se elabora en C#, se ingresan parametros como: Raiz2(25,25,0), donde 25 es el número del cual se va a obtener la raiz Cuadrada. en este caso la respuesta seria 5.

No hay comentarios:

Publicar un comentario