viernes, 30 de octubre de 2015

Algoritmos

Algoritmos de búsqueda de raíces

calcular la raíz cuadrada de un número real positivo, siendo el más conocido el método de resolución.

Método de resolución

Partes de la Raiz Cuadrada.PNG
En la imagen podemos ver cinco partes esenciales de la raíz cuadrada en el método de resolución:
  • 1- Radical, no es más que el símbolo que indica que es una raíz cuadrada.
  • 2- Radicando, es el número al que se le obtendrá la raíz cuadrada.
  • 3- Renglón de la raíz cuadrada, ahí se distinguirá el resultado.
  • 4- Renglones auxiliares, nos ayudarán a resolver la raíz cuadrada.
  • 5- Residuo, es el resto que queda luego de resolver la raíz cuadrada.
Los pasos a seguir son estos:
Paso 1.
  • Paso 1: Se separa el número del radicado (en el ejemplo, 5836.3690) en grupos de dos cifras. La separación se hace desde el signo de decimal (si lo hubiera) hacia la derecha y hacia la izquierda. Si del lado de los decimales (a la derecha del punto, es decir 369) no hay un número par de cifras, es evidente que quedaría una suelta: en ese caso, se le añadiría un cero. Si del lado de los enteros (a la izquierda del punto, es decir, 5836) quedara un número suelto, se quedaría así. En la imagen de la derecha podemos ver el número 5836.369 dividido en grupos de dos cifras; después del número 9 se ha agregado un cero (en azul) pues en el lado decimal no puede haber un grupo de una cifra (en el ejemplo, esta separación quedaría así: 58/36.36/90)

Paso 2.
  • Paso 2: Se busca un número que multiplicando por sí mismo (es decir, elevado al cuadrado) dé como resultado el número que coincida o que más se aproxime por debajo al primer grupo de números de la izquierda (en el ejemplo, 58). El resultado no puede ser mayor que 58. Una vez encontrado el número se agrega a la parte de la raíz. En este caso el número sería el 7, porque 7 x 7 es 49. Otra posibilidad sería 6 x 6, pero daría 36 (lo que quedaría más alejado de 58) y 8 x 8, pero daría 64 (lo que excedería a 58)

Paso 3.
  • Paso 3: El número obtenido (7) es el primer resultado de la raíz cuadrada. En el paso anterior lo escribíamos en el cajetín de la derecha. Ahora lo multiplicamos por sí mismo. El resultado (49) se escribe debajo del primer grupo de cifras de la izquierda (58), y se procede a restarlo. El resultado de la resta (58-49) es 9. Una vez obtenido el resultado de la resta, se baja el siguiente grupo de dos cifras (36), con lo que la siguiente cifra de la raíz es ahora la unión del resultado de la resta anterior con las nuevas cifras bajadas (es decir, 936).Para continuar la extracción de la raíz cuadrada multiplicamos por 2 el primer resultado (7) y lo escribimos justo debajo de éste, en el siguiente renglón auxiliar (en la imagen, el 14 está escrito justo debajo del 7, ya que 7 x 2 es 14).

Paso 4.
  • Paso 4: En este paso hay que encontrar un número n que, añadido a 14, y multiplicado por ese mismo n, de como resultado un número igual o inferior a 936. Es decir, podría ser 141 x 1, 142 x 2, 143 x 3... y así hasta 149 x 9. Muchas veces se utiliza el procedimiento de tanteo para hallar ese número, si bien se puede emplear el método de dividir las primeras dos cifras del residuo (93) entre el número del renglón auxiliar (14). La primera cifra del resultado que no sea cero, aunque sea un decimal, es, generalmente, la que buscamos. El resultado se agrega al número de la raíz y al del renglón auxiliar. En este caso 93 dividido entre 14 es 6. De manera que la operación buscada es 146 x 6 = 876 (operación que añadimos en el renglón auxiliar). El siguiente resultado de la raíz cuadrada es 6. También procedemos a anotarlo en el radicando.

Paso 5.
  • Paso 5: El procedimiento es el mismo que anteriormente. El resultado de la operación anterior (876) se coloca debajo del número procedente de la resta anterior (936) y se restan. Al resultado de la resta (60) se le añade el siguiente grupo de cifras del radical (en este caso, 36). Si el siguiente grupo está después del punto decimal se agrega un punto decimal al número de la raíz. El nuevo número obtenido es 6036.

Paso 6.
  • Paso 6: Se retoma el procedimiento del paso 3. La cifra de la raíz (76) se multiplica por dos (resultando 152). Buscamos un número que añadido a 152 y multiplicado por ese mismo número nos dé una cantidad aproximada a 6036. Sería, por tanto, 1521 x 1, 1522 x2, 1523 x 3, etc. Se puede hacer por tanteo, o por el procedimiento de dividir en este caso, las tres primeras cifras de la raíz por lastres primeras cifras de la línea auxiliar (nótese que antes eran las dos primeras cifras), es decir, 603/152 (el número buscado es 3, ya que el resultado es 3.9 y se ha dicho que la cifra que se debe tomar es la primera). La operación a realizar es, por tanto, 1523 x 3. El resultado (4569) se coloca bajo el último resto y se procede a hallar la diferencia, que es 1467. Una vez realizada la resta se baja el siguiente grupo de cifras y se continúa el proceso. Obsérvese que el número a dividir entre renglón auxiliar y residuo va aumentado.

Paso 7.
  • Paso 7: Se continúa el mismo proceso, la raíz se vuelve a multiplicar por dos (ignorando el punto de los decimales)(763 x 2 = 1526). El resultado de la multiplicación se agrega al tercer renglón auxiliar, se vuelven a dividir los primeros cuatro números del residuo (1467) entre el resultado de la multiplicación (1526),(nótese que son las primeras cuatro cifras, cuando antes eran las tres primeras), lo que nos da un resultado de 0.9 (como decíamos antes, se toma el primer número que no sea cero aunque sea decimal, por lo tanto, la cifra buscada es 9). El nueve se agrega en el renglón de la raíz y el tercer renglón auxiliar, y se multiplica 9 por 15269, lo que da un resultado de 137421, esta cifra se le resta a 146790 y nos da un resultado de 9369.
La raíz cuadrada de 5836.369 es 76.39, con un residuo de 0.9369. Recordemos que el cero es sólo un auxiliar. Es también que la operación anterior utilizada como ejemplo no está completa. Si la continuáramos daría como resultado 76.396132101 (con nueve decimales).

Los pasos se pueden resumir en ciclos de cuatro después de separar en grupos de dos cifras y teniendo en cuenta cuando se coloca el punto decimal en la raíz:
  • 1) Hallar una nueva raíz.
  • 2) Realizar la resta correspondiente.
  • 3) Bajar un nuevo par del radicando.
  • 4) Multiplicar raíz actual por dos.

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.)
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 b siempre 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.

Método de cálculo de la raíz cuadrada

Partes de la raíz cuadrada
Partes raíz cuadrada
En la imagen podemos ver cinco partes esenciales de la raíz cuadrada en el método de resolución:
1- Radical, no es más que el símbolo que indica que es una raíz cuadrada.
2- Radicando, es el número al que se le obtendrá la raíz cuadrada.
3- Renglón de la raíz cuadrada, ahí se distinguirá el resultado.
4- Renglones auxiliares, nos ayudaran a resolver la raíz cuadrada.
5- Residuo, es el número final del proceso para resolver la raíz cuadrada.
Los pasos a seguir son estos:

Como hacer la raíz cuadrada paso a paso

Raíz Cuadrada – Paso 1

Se separa el número del radicado (en el ejemplo, 5836.369) en grupos de dos cifras. La separación se hace desde el signo de decimal (si lo hubiera) hacia la derecha y hacia la izquierda. Si del lado de los decimales (a la derecha del punto, es decir 369) no hay un número par de cifras, es evidente que quedaría una suelta: en ese caso, se le añadiría un cero. Si del lado de los enteros (a la izquierda del punto, es decir, 5836) quedara un número suelto, se quedaría así. En la imagen de la derecha podemos ver el número 5836.369 dividido en grupos de dos cifras; después del número 9 se ha agregado un cero (en azul) pues en el lado decimal no puede haber un grupo de una cifra (en el ejemplo, esta separación quedaría así: 58/36.36/90)

Raíz Cuadrada – Paso 2

Se busca un número que multiplicando por sí mismo (es decir, elevado al cuadrado) dé como resultado el número que coincida o que más se aproxime por debajo al primer grupo de números de la izquierda (en el ejemplo, 58). El resultado no puede ser mayor que 58. Una vez encontrado el número se agrega a la parte de la raíz. En este caso el número sería el 7, porque 7×7 es 49. Otra posibilidad sería 6×6, pero daría 36 (lo que quedaría más alejado de 58) y 8×8, pero daría 64 (lo que excedería a 58)

Raíz Cuadrada – Paso 3

El número obtenido (7) es el primer resultado de la raíz cuadrada. En el paso anterior lo escribíamos en el cajetín de la derecha. Ahora lo multiplicamos por sí mismo. El resultado (49) se escribe debajo del primer grupo de cifras de la izquierda (58), y se procede a restarlo. El resultado de la resta (58-49) es 9. Una vez obtenido el resultado de la resta, se baja el siguiente grupo de dos cifras (36), con lo que la siguiente cifra de la raíz es ahora la unión del resultado de la resta anterior con las nuevas cifras bajadas (es decir, 936).Para continuar la extracción de la raíz cuadrada multiplicamos por 2 el primer resultado (7) y lo escribimos justo debajo de éste, en el siguiente renglón auxiliar (en la imagen, el 14 está escrito justo debajo del 7, ya que 7×2 es 14).

Raíz Cuadrada – Paso 4

En este paso hay que encontrar un número n que, añadido a 14, y multiplicado por ese mismo n, de como resultado un número igual o inferior a 936. Es decir, podría ser 141×1, 142×2, 143×3… y así hasta 149×9. Muchas veces se utiliza el procedimiento de tanteo para hallar ese número, si bien se puede emplear el método de dividir las primeras dos cifras del residuo (93) entre el número del renglón auxiliar (14). La primera cifra del resultado que no sea cero, aunque sea un decimal, es, generalmente, la que buscamos. El resultado se agrega al número de la raíz y al del renglón auxiliar. En este caso 93 dividido entre 14 es 6. De manera que la operación buscada es 146×6= 876 (operación que añadimos en el renglón auxiliar). El siguiente resultado de la raíz cuadrada es 6. También procedemos a anotarlo en el radicando.

Raíz Cuadrada – Paso 5

El procedimiento es el mismo que anteriormente. El resultado de la operación anterior (876) se coloca debajo del número procedente de la resta anterior (936) y se restan. Al resultado de la resta (60) se le añade el siguiente grupo de cifras del radical (en este caso, 36). Si el siguiente grupo está después del punto decimal se agrega un punto decimal al número de la raíz. El nuevo número obtenido es 6036.

Raíz Cuadrada – Paso 6

Retomamos el procedimiento del paso 3. La cifra de la raíz (76) se multiplica por dos (resultando 152). Buscamos un número que añadido a 152 y multiplicado por ese mismo número nos dé una cantidad aproximada a 6036. Sería, por tanto, 1521×1, 1522×2, 1523×3, etc. Lo podemos hacer por tanteo, o por el procedimiento de dividir en este caso, las tres primeras cifras de la raíz por las tres primeras cifras de la línea auxiliar (nótese que antes eran las dos primeras cifras), es decir, 603/152 (el número buscado es 3, ya que el resultado es 3.9 y hemos dicho que la cifra que debemos tomar es la primera). La operación a realizar es, por tanto, 1523×3. El resultado (4569) se coloca bajo el último resto y se procede a hallar la diferencia (que es 1467). Una vez realizada la resta se baja el siguiente grupo de cifras y se continúa el proceso. Obsérvese que el número a dividir entre renglón auxiliar y residuo va aumentado.

Raíz Cuadrada – Paso 7

Se continúa el mismo proceso, la raíz se vuelve a multiplicar por dos (ignorando el punto de los decimales)(763 x 2 = 1526). El resultado de la multiplicación se agrega al tercer renglón auxiliar, se vuelven a dividir los primeros cuatro números del residuo (1467) entre el resultado de la multiplicación (1526),(nótese que son las primeras cuatro cifras, cuando antes eran las tres primeras), lo que nos da un resultado de 0.9 (como decíamos antes, se toma el primer número que no sea cero aunque sea decimal, por lo tanto, la cifra buscada es 9). El nueve se agrega en el renglón de la raíz y el tercer renglón auxiliar, y se multiplica 9 por 15269, lo que da un resultado de 137421, esta cifra se le resta a 146790 y nos da un resultado de 9369.

No hay comentarios:

Publicar un comentario