La forma general del método de Newton para la búsqueda del cero es \begin{equation*} x_{k+1} := x_k - \frac{f(x_k)}{f'(x_k)} \end{equation*} El Raíz cuadrada recíproca Newton se obtiene estableciendo el algoritmo $f(x) = \frac{1}{x^2-a}$ y obtenemos \begin{equation*} x_{k+1} := x_k - \frac{f(x_k)}{f'(x_k)} = x_k - \frac{1/x_k^2-a}{-2/x_k^3}=x_k + \frac{1}{2}x_k(1-ax^2_k). \end{equation*} La secuencia $\{x_0,x_1, \ldots, x_k, \ldots\}$ converge cuadráticamente, para todo $x_0 >0$ a un punto fijo $x$ . Es decir \begin{equation*} x = x + \frac{1}{2}x(1-ax^2), \end{equation*} que tiene dos soluciones, $x = 0$ y $x = 1/\sqrt{a}$ .
Calculamos $x_{k+1}$ en dos pasos:
- $e_k := 1-a\star x_k\star x_k $
- $x_{k+1} := x_k + e_k\star x_k/2$
Aquí, $e_k$ es el error relativo en $x^2_k,$ es decir, $(1/a-x^2_k)/(1/a)=(1-ax^2_k),$ y $e_kx_k/2$ es el término de corrección.
El aspecto más importante de este algoritmo es que sin divisiones son necesarios. La división por 2 se puede hacer por desplazamiento de bits. Calculando $x_{k+1}$ requiere 3 Mults
y 2 Adds
. Una última multiplicación, $a\star x_k$ se hace para calcular $\sqrt{a}$ .
Si un valor inicial adecuado para $x_0$ se elige, entonces este algoritmo converge a la doble precisión IEEE completa en unas 5 iteraciones. Intel utiliza un algoritmo similar a éste en su procesador Itanium, cuya operación aritmética básica es la multiplicacion-adicion fusionada (FMA), $z = ax+y$ . Todas las demás operaciones se realizan con esta instrucción FMA. Por razones históricas, Intel evita la división larga.
Véase Peter Markstein, IA-64 y funciones elementales Prentice-Hall, 2000
Información adicional
El Newton recíproco se obtiene estableciendo el algoritmo $f(x) = \frac{1}{x-a}$ y obtenemos \begin{equation*} x_{k+1} := x_k - \frac{f(x_k)}{f'(x_k)} = x_k - \frac{1/x_k-a}{-1/x_k^2}=x_k + x_k(1-ax_k). \end{equation*}
Calculamos $x_{k+1}$ en dos pasos:
- $e_k := 1-a\star x_k $
- $x_{k+1} := x_k + e_k\star x_k/2$
Aquí, $e_k$ es el error relativo en $x^2_k,$ es decir, $(1/a-x_k)/(1/a)=(1-ax_k),$ y $e_kx_k/2$ es el término de corrección. Cada uno de estos dos pasos se calcula con una sola instrucción FMA. La división, $z = y/x$ se calcula como $y\star\frac{1}{x}$ . Nótese la similitud de este algoritmo con el de la raíz cuadrada recíproca.
Elegir un valor inicial $x_0$ para el Algoritmo Recíproco es un asunto delicado. Se puede demostrar que el dominio de convergencia es $ 0 < x_0 < \frac{2}{a}$ pero esto plantea la pregunta: ¿qué es $\frac{2}{a}$ ? Esto es entrar en aguas profundas, así que dejaré la respuesta a Peter Markstein más arriba.
7 votos
es.wikipedia.org/wiki/Métodos_de_computación_de_raíces_cuadradas
3 votos
Lo aprendí en la escuela, y el profesor incluso dijo que no necesitaríamos recordarlo gracias a las calculadoras. Y tenía razón. Ahora me pregunto si encontrar integrales es lo mismo hoy en día.
0 votos
Posible duplicado de ¿Existe algún método sencillo para calcular $\sqrt x$ sin utilizar el logaritmo
0 votos
Prueba con el algoritmo de la raíz cuadrada