TOP

Cálculo de la raíz cuadrada


Cálculo de la raíz cuadrada

Identidad exponencial

Las calculadoras de bolsillo típicamente implementan buenas rutinas para calcular la función exponencial y el logaritmo natural, entonces calculan la raíz cuadrada de xutilizando la identidad
\sqrt{x} = e^{\frac{1}{2}\ln x} o \sqrt{x} = 10^{\frac{1}{2}\log x}
La misma identidad es usada cuando se calculan las raíces cuadradas con tablas de logaritmos o reglas de cálculo.

Estimación imprecisa

Muchos de los métodos de cálculo para raíces cuadradas requieren un valor inicial. Si el valor inicial está muy lejos de la raíz cuadrada real, el cálculo será muy lento. Por lo tanto es útil tener un cálculo aproximado, que puede ser muy inexacto pero fácil de calcular. Una forma de obtener tal estimación para \sqrt{x} está calculando 3^D, donde D es el número de dígitos (a la izquierda del punto decimal) de x. Si x < 1D es el negativo del número de ceros a la derecha inmediata del punto decimal.
Un mejor método de estimación es éste:
  • Si D es impar (D=2n+1), \sqrt{x} \approx 2 \cdot 10^n
  • Si D es par (D=2n+2), \sqrt{x} \approx 6 \cdot 10^n
Al trabajar en el sistema de numeración binario (como lo hacen las computadoras internamente), un método alternativo es utilizar 2^{\left\lfloor D/2\right\rfloor} (aquí D es el número de dígitos binarios).
lculaban raíces cuadradas aunque hay conjeturas informadas. (Raíz cuadrada de 2#Notas da un resumen y referencias.)</ref> se centra en el hecho de que cada lado de uncuadrado 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 "sustituya el valor de x por del de y", y devolver expresa el resultado del algoritmo y su terminación.

Implementación

double raiz(double x){
    double r = x, t = 0;
    while (t != r){
        t = r;
        r = (x/r + r)/2;
    }
    return r;
}
En lenguaje Gambas:
PUBLIC SUB raiz(x AS Float) AS Float
  
  DIM r AS Float = x
  DIM t AS Float = 0
  
  WHILE NOT (t = r)
    t = r
    r = (x / r + r) / 21
  WEND
  
  RETURN r
  
END
Puede notarse que el algoritmo se reduce al método de Newton sobre la función f(r)= r2-x.
Método recurrente
       double raiz2(double x, double r, double t)
       {
           if (t == r)
           {
               return (r);
           }
           else
           {
               t = r;
               r = (x / r + r) / 2;
               return(raiz2(x,r,t));
           }
       }
Este es el método recurrente que se elabora en C#, se ingresan parámetros como: Raiz2(25,25,0), donde 25 es el número del cual se va a obtener la raíz cuadrada. En este caso la respuesta seria 5

Fracciones continuas periódicas

Los irracionales cuadráticos (números de la forma \frac{a+\sqrt{b}}{c}, donde ab y c son enteros), y en particular, las raíces cuadradas de números enteros, tienen fracciones continuas periódicas. Podemos estar interesados a veces no en encontrar el valor numérico de una raíz cuadrada, sino por algo en su expansión como fracción continua. El algoritmo iterativo siguiente se puede utilizar para este propósito (S es cualquier número natural que no sea un cuadrado perfecto):
m_0 = 0\,\!
d_0 = 1\,\!
a_0 = \left\lfloor\sqrt{S}\right\rfloor\,\!
m_{n+1} = d_na_n-m_n\,\!
d_{n+1} = \frac{S-m_{n+1}^2}{d_n}\,\!
a_{n+1} = \left\lfloor\frac{\sqrt{S}+m_{n+1}}{d_{n+1}}\right\rfloor = \left\lfloor\frac{a_0+m_{n+1}}{d_{n+1}}\right\rfloor\!.
Hay que notar que mndn, y an son siempre enteros. El algoritmo termina cuando en este trío el resultado nuevo que obtenemos ya empieza a ser igual al anterior. La expansión se repetirá entonces. La secuencia [a0a1a2a3, …] es la expansión fracción continua:
\sqrt{S} = a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cfrac{1}{a_3+\,\cdots}}}

Ejemplo, raíz cuadrada de 114 como una fracción continua

Comenzamos con m0=0; d
Ahora de enlaza de nuevo con la segunda ecuación de arriba.
Por lo tanto, la fracción continua para la raíz cuadrada de 114 es: \sqrt{114} = [10;1,2,10,2,1,20,1,2,10,2,1,20,1,2,10,2,1,20,...].

Aproximación de Bakhshali

Este método para encontrar una aproximación a la raíz cuadrada fue descrito en un manuscrito antiguo llamado manuscrito de Bakhshali. Equivale a dos iteraciones del método babilónico comenzando con el número n tal que n^2 es el cuadrado más cercano a x.
\sqrt{x}\approx\frac{n^4 + 6n^2x + x^2}{4n^3 + 4nx}

Ejemplo con la raíz cuadrada de 10.5

Si queremos calcular \sqrt{10.5} con este método lo primero que hacemos es asignarle el número cuadrado perfecto cuyo cuadrado se acerque más a 10.5, ese número va a ser 3, ya que al dar 3^2\,\! como resultado 9 se acerca más a 10.5 que 4^2\,\! que da 16, con lo que ahora en la igualdad sustituimos:
\sqrt{10.5}\approx\frac{3^4 + 6 \times 3^2 \times 10.5 + 10.5^2}{4 \times 3^3 + 4 \times 3 \times 10.5}
\sqrt{10.5}\approx\frac{81 + 567 + 110.25}{108 + 126}
\sqrt{10.5}\approx\frac{758.25}{234}\approx 3.240384615
Siendo las cifras 384615 periódicas.
Este método da un valor bastante aproximado de la raíz cuadrada del número, se puede observar también que este método al dar el resultado mediante una fracción da un número racional, mientras que la raíz cuadrada real de un número es irracional siempre que este no sea un cuadrado perfecto (o el cociente de dos cuadrados perfectos).

Series de Taylor

Si N es una aproximación a \sqrt{S}, una aproximación mejor puede ser encontrada usando la serie de Taylor de la función de la raíz cuadrada:
\sqrt{N^2+d} = \sum_{n=0}^\infty \frac{(-1)^{n}(2n)!d^n}{(1-2n)n!^2 4^nN^{2n-1}} = N + \frac{d}{2N} - \frac{d^2}{8N^3} + \frac{d^3}{16N^5} - \frac{5d^4}{128N^7} + \cdots
Como método iterativo, el orden de convergencia es igual al número de los términos usados. Con 2 términos, es idéntica al método babilónico; con 3 términos, cada iteración toma casi tantas operaciones como la aproximación de Bakhshali, pero converge más lentamente. Por lo tanto, esta no es una manera particularmente eficiente de la operación.


Fuente
Wikipedia