Métodos para calcular raíces cuadradas
Métodos de cálculo de raíces cuadradas son algoritmos para aproximar la raíz cuadrada no negativa S{displaystyle {sqrt {S}} de un número real positivo S{displaystyle S.. Puesto que todas las raíces cuadradas de los números naturales, aparte de los cuadrados perfectos, son irracionales, Las raíces cuadradas solo pueden ser calculadas a cierta precisión finita: estos métodos suelen construir una serie de aproximaciones cada vez más precisas.
La mayoría de los métodos de cálculo de raíz cuadrada son iterativos: después de elegir una estimación inicial adecuada S{displaystyle {sqrt {S}}, un refinamiento iterativo se realiza hasta que se cumpla algún criterio de terminación. Un esquema de refinamiento es el método de Heron, un caso especial del método de Newton. Si la división es mucho más costosa que la multiplicación, puede ser preferible calcular la raíz cuadrada inversa en su lugar.
Hay otros métodos disponibles para calcular la raíz cuadrada dígito por dígito, o usando series de Taylor. Las aproximaciones racionales de raíces cuadradas se pueden calcular utilizando expansiones de fracciones continuas.
El método empleado depende de la precisión necesaria y de las herramientas y la potencia computacional disponibles. Los métodos pueden clasificarse a grandes rasgos como aquellos adecuados para el cálculo mental, aquellos que normalmente requieren al menos papel y lápiz, y aquellos que se implementan como programas para ejecutarse en una computadora electrónica digital u otro dispositivo informático. Los algoritmos pueden tener en cuenta la convergencia (cuántas iteraciones se requieren para lograr una precisión específica), la complejidad computacional de operaciones individuales (es decir, división) o iteraciones y la propagación de errores (la precisión del resultado final).
Algunos métodos, como la división sintética con lápiz y papel y la expansión de series, no requieren un valor inicial. En algunas aplicaciones, se requiere una raíz cuadrada entera, que es la raíz cuadrada redondeada o truncada al entero más cercano (en este caso se puede emplear un procedimiento modificado).
Historia
Los procedimientos para encontrar raíces cuadradas (particularmente la raíz cuadrada de 2) se conocen al menos desde el período de la antigua Babilonia en el siglo XVII a.C. Los matemáticos babilónicos calcularon la raíz cuadrada de 2 a tres "dígitos" sexagesimales. después del 1, pero no se sabe exactamente cómo. Sabían cómo aproximar una hipotenusa usando
Método de Heron desde el primer siglo Egipto fue el primer algoritmo verificable para computar la raíz cuadrada.
Los métodos analíticos modernos comenzaron a desarrollarse después de la introducción del sistema de numeración arábiga en Europa occidental a principios del Renacimiento.
Hoy en día, casi todos los dispositivos informáticos tienen una función de raíz cuadrada rápida y precisa, ya sea como una construcción de lenguaje de programación, una función intrínseca del compilador o de biblioteca, o como un operador de hardware, basado en uno de los procedimientos descritos.
Estimación inicial
Muchos algoritmos de raíz cuadrada iterativa requieren un valor inicial de semilla. La semilla debe ser un número no cero positivo; debe ser entre 1 y S{displaystyle S., el número cuya raíz cuadrada es deseada, porque la raíz cuadrada debe estar en ese rango. Si la semilla está lejos de la raíz, el algoritmo requerirá más iteraciones. Si uno inicializa con x0=1{displaystyle x_{0}=1} (o S{displaystyle S.), entonces aproximadamente 12Silenciolog2 SSilencio{displaystyle {tfrac {2}vert log _{2}Svert } las iteraciones se desperdiciarán sólo conseguir el orden de magnitud de la raíz. Por lo tanto, es útil tener una estimación aproximada, que puede tener una precisión limitada pero es fácil de calcular. En general, cuanto mejor sea la estimación inicial, más rápido será la convergencia. Para el método de Newton (también llamado método de Babylonian o Heron), una semilla algo más grande que la raíz convergerá ligeramente más rápido que una semilla algo más pequeña que la raíz.
En general, una estimación se ajusta a un intervalo arbitrario conocido para contener la raíz (como [x0,S/x0]{displaystyle [x_{0},S/x_{0}}). La estimación es un valor específico de una aproximación funcional a f()x)=x{displaystyle f(x)={sqrt {x}} sobre el intervalo. Obtener una mejor estimación implica obtener límites más ajustados en el intervalo, o encontrar una mejor aproximación funcional a f()x){displaystyle f(x)}. Este último normalmente significa utilizar un polinomio de orden superior en la aproximación, aunque no todas las aproximaciones son polinomio. Los métodos comunes de estimación incluyen escalar, linear, hiperbólico y logarítmico. Una base decimal se utiliza generalmente para la estimación mental o de papel y lápiz. Una base binaria es más adecuada para las estimaciones del ordenador. Al estimar, el exponente y la mantissa se tratan generalmente por separado, ya que el número se expresaría en la notación científica.
Estimaciones decimales
Típicamente el número S{displaystyle S. se expresa en la notación científica como a× × 102n{displaystyle atimes 10^{2n} Donde <math alttext="{displaystyle 1leq a1≤ ≤ ac)100{displaystyle 1leq a realizadas100}<img alt="{displaystyle 1leq a y n es un entero, y la gama de posibles raíces cuadradas es a× × 10n{displaystyle {sqrt {a}times 10^{n} Donde <math alttext="{displaystyle 1leq {sqrt {a}}1≤ ≤ ac)10{displaystyle 1leq {sqrt {a} {fn}<img alt="{displaystyle 1leq {sqrt {a}}.
Estimaciones de escalas
Los métodos de escalar dividen el rango en intervalos, y la estimación en cada intervalo está representada por un solo número de escalar. Si el rango es considerado como un solo intervalo, la media aritmética (5.5) o media geométrica (10. . 3.16{displaystyle {sqrt}approx 3.16}) veces 10n{displaystyle 10^{n} son estimaciones plausibles. El error absoluto y relativo de éstos difiere. En general, un solo escalar será muy inexacto. Mejores estimaciones dividen el rango en dos o más intervalos, pero las estimaciones de escalar tienen una precisión inherentemente baja.
Para dos intervalos, divididos geométricamente, la raíz cuadrada S=a× × 10n{displaystyle {sqrt {}={sqrt {a}times 10^{n} se puede estimar como
Esta estimación tiene el máximo error absoluto 4⋅ ⋅ 10n{displaystyle 4cdot 10^{n} a = 100, y error relativo máximo de 100% a = 1.
Por ejemplo, S=125348{displaystyle S=125348} factor considerado 12.5348× × 104{displaystyle 12.5348times 10^{4}, la estimación es S. . 6⋅ ⋅ 102=600{cdot 10}=600}. 125348=354.0{displaystyle {sqrt {125348}=354.0}, un error absoluto de 246 y error relativo de casi 70%.
Estimaciones lineales
Una estimación mejor, y el método estándar utilizado, es una aproximación lineal a la función Sí.=x2{displaystyle y=x^{2} sobre un pequeño arco. Si, como antecede, los poderes de la base se consideran fuera del número S{displaystyle S. y el intervalo reducido a [1,100]{displaystyle [1,100]}, una línea de secant que abarca el arco, o una línea tangente en algún lugar a lo largo del arco puede ser utilizado como la aproximación, pero una línea de regresión menos cuadrada que intersecte el arco será más precisa.
Una línea de regresión menos cuadrada minimiza la diferencia media entre la estimación y el valor de la función. Su ecuación es Sí.=8.7x− − 10{displaystyle y=8.7x-10}. Reordenando, x=0.115Sí.+1.15{displaystyle x=0.115y+1.15}. Redondear los coeficientes para facilitar el cálculo,
Esa es la mejor estimación promedio que se puede lograr con una sola pieza aproximación lineal de la función y=x2 en el intervalo [1,100]{displaystyle [1,100]}. Tiene un error absoluto máximo de 1.2 a=100 y un error relativo máximo de 30% a S=1 y 10.
Para dividir en 10, reste uno del exponente a{displaystyle a}, o figurativamente mover el punto decimal un dígito a la izquierda. Para esta formulación, cualquier constante aditiva 1 más un pequeño aumento hará una estimación satisfactoria para recordar el número exacto no es una carga. La aproximación (redondeada o no) utilizando una sola línea que abarca el rango [1,100]{displaystyle [1,100]} es menos de un dígito significativo de precisión; el error relativo es mayor de 1/22, por lo que se proporcionan menos de 2 bits de información. La precisión es severamente limitada porque el rango es dos órdenes de magnitud, bastante grande para este tipo de estimación.
Una estimación mucho mejor se puede obtener por una aproximación lineal de un lado: múltiples segmentos de líneas, cada uno aproximando un subarco del original. Cuantos más segmentos se utilizan, mejor es la aproximación. La forma más común es utilizar líneas tangentes; las opciones críticas son cómo dividir el arco y dónde colocar los puntos tangentes. Una manera eficaz de dividir el arco de Sí. = 1 a Sí. = 100 es geométricamente: para dos intervalos, los límites de los intervalos son la raíz cuadrada de los límites del intervalo original, 1×100, es decir. [1,2√100] y [2√100100. Para tres intervalos, los límites son las raíces del cubo de 100: [1,3√100]3√100,(3√100)2], y [3√100)2,100], etc. Para dos intervalos, 2√100 = 10, un número muy conveniente. Las líneas tangentes son fáciles de derivar, y se encuentran en x = √1*√10 y x = √10*√10. Sus ecuaciones son: Sí.=3.56x− − 3.16{displaystyle y=3.56x-3.16} y Sí.=11.2x− − 31.6{displaystyle y=11.2x-31.6}. Inversión, las raíces cuadradas son: x=0,28Sí.+0.89{displaystyle x=0,28y+0,89} y x=.089Sí.+2.8{displaystyle x=.089y+2.8}. Así pues, S=a⋅ ⋅ 102n{displaystyle S=acdot 10^{2n}:
Los errores absolutos máximos ocurren en los puntos altos de los intervalos, en a=10 y 100, y son 0,54 y 1,7 respectivamente. Los errores relativos máximos están en los puntos finales de los intervalos, a a=1, 10 y 100, y son 17% en ambos casos. 17% o 0.17 es mayor que 1/10, por lo que el método produce menos que un dígito decimal de precisión.
Estimaciones hiperbólicas
En algunos casos, las estimaciones hiperbólicas pueden ser eficaces, ya que una hiperbola es también una curva convexa y puede estar a lo largo de un arco de Y = x2 mejor que una línea. Las estimaciones hiperbólicas son más computacionalmente complejas, porque necesariamente requieren una división flotante. Una aproximación hiperbólica casi óptima a x2 en el intervalo [1,100]{displaystyle [1,100]} es y=190/(10-x)-20. Transpuesto, la raíz cuadrada es x = -190/(y+20)+10. Así pues, S=a⋅ ⋅ 102n{displaystyle S=acdot 10^{2n}:
La división flotante debe tener una precisión de solo un dígito decimal, porque la estimación general es solo esa precisión y se puede hacer mentalmente. Una estimación hiperbólica es mejor en promedio que una estimación escalar o lineal. Tiene un error absoluto máximo de 1,58 en 100 y un error relativo máximo de 16,0% en 10. Para el peor caso en a=10, la estimación es 3,67. Si se comienza con 10 y se aplican las iteraciones de Newton-Raphson de inmediato, se necesitarán dos iteraciones, lo que arrojará 3,66, antes de que se supere la precisión de la estimación hiperbólica. Para un caso más típico como 75, la estimación hiperbólica es 8,00 y se necesitarían 5 iteraciones de Newton-Raphson comenzando en 75 para obtener un resultado más preciso.
Estimaciones aritméticas
Un método análogo a la aproximación lineal por partes pero que utiliza sólo ecuaciones aritméticas en lugar de algebraicas, utiliza las tablas de multiplicar a la inversa: la raíz cuadrada de un número entre 1 y 100 está entre 1 y 10, por lo que si sabemos que 25 es un cuadrado perfecto (5 × 5), y 36 es un cuadrado perfecto (6 × 6), entonces la raíz cuadrada de un número mayor o igual a 25 pero menor que 36, comienza con un 5. Lo mismo ocurre con los números entre otros cuadrados . Este método producirá un primer dígito correcto, pero no es exacto a un dígito: el primer dígito de la raíz cuadrada de 35, por ejemplo, es 5, pero la raíz cuadrada de 35 es casi 6.
Una mejor manera es dividir el rango en intervalos a mitad de camino entre los cuadrados. Entonces, cualquier número entre 25 y la mitad de 36, que es 30,5, estima 5; cualquier número mayor que 30,5 hasta 36, estima 6. El procedimiento solo requiere un poco de aritmética para encontrar un número límite en medio de dos productos de la tabla de multiplicar. Aquí hay una tabla de referencia de esos límites:
a | plaza más cercana | k=a{displaystyle k={sqrt {a}} Est. |
---|---|---|
1 a 2,5 | 1 (= 12) | 1 |
2.5 a 6.5 | 4 (= 22) | 2 |
6,5 a 12,5 | 9 (= 32) | 3 |
12,5 a 20,5 | 16 (= 42) | 4 |
20,5 a 30,5 | 25 (= 52) | 5 |
30,5 a 42,5 | 36 (= 62) | 6 |
42,5 a 56,5 | 49 (= 72) | 7 |
56,5 a 72,5 | 64 (= 82) | 8 |
72,5 a 90,5 | 81 (= 92) | 9 |
90,5 a 100 | 100 (= 102) | 10 |
La operación final es multiplicar la estimación k por el poder de diez divididos por 2, así para S=a⋅ ⋅ 102n{displaystyle S=acdot 10^{2n},
El método produce implícitamente un dígito significativo de precisión, ya que redondea al mejor primer dígito.
El método puede ser extendido 3 dígitos significativos en la mayoría de los casos, interpolando entre las plazas más cercanas que atan el operand. Si <math alttext="{displaystyle k^{2}leq ak2≤ ≤ ac)()k+1)2{displaystyle k^{2}leq a won(k+1)}<img alt="{displaystyle k^{2}leq aEntonces a{displaystyle {sqrt {}} es aproximadamente k más una fracción, la diferencia entre a y k2 dividido por la diferencia entre los dos cuadrados:
La operación final, como arriba, es multiplicar el resultado por la potencia de diez dividido por 2;
k es un dígito decimal y R es una fracción que debe convertirse a decimal. Por lo general, tiene un solo dígito en el numerador y uno o dos dígitos en el denominador, por lo que la conversión a decimal se puede realizar mentalmente.
Ejemplo: halla la raíz cuadrada de 75. 75 = 75 × 102 · 0, entonces a es 75 y n es 0. De las tablas de multiplicar, la raíz cuadrada de la mantisa debe ser 8 punto algo porque 8 × 8 es 64, pero 9 × 9 es 81, demasiado grande, así que k es 8; algo es la representación decimal de R. La fracción R es 75 - k2 = 11, el numerador , y 81 - k2 = 17, el denominador. 17/11 es un poco menos que 18/12, que es 2/3 o 0,67, así que adivina 0,66 (aquí está bien adivinar, el error es muy pequeño). Entonces la estimación es 8 +.66 = 8.66. √75 a tres dígitos significativos es 8,66, por lo que la estimación es buena a 3 dígitos significativos. No todas las estimaciones que utilicen este método serán tan precisas, pero sí cercanas.
Estimaciones binarias
Al trabajar en el sistema de numeral binario (como las computadoras hacen internamente), expresando S{displaystyle S. como a× × 22n{displaystyle atimes 2^{2n} Donde <math alttext="{displaystyle 0.1_{2}leq a0.12≤ ≤ ac)102{displaystyle 0.1_{2}leq a won10_{2}<img alt="{displaystyle 0.1_{2}leq a, la raíz cuadrada S=a× × 2n{displaystyle {sqrt {}={sqrt {}times 2^{n}} se puede estimar como
que es la línea de regresión menos cuadrada a 3 coeficientes de dígitos significativos. a{displaystyle {sqrt {}} tiene el máximo error absoluto de 0.0408 a a{displaystyle a}=2, y error relativo máximo de 3.0% a a{displaystyle a}=1. Una estimación redondeada convenientemente conveniente (porque los coeficientes son poderes de 2) es:
- S. . ()0.5+0.5⋅ ⋅ a)⋅ ⋅ 2n{displaystyle {sqrt {S}approx (0.5+0.5cdot a)cdot 2^{n}}
que tiene un error absoluto máximo de 0,086 en 2 y un error relativo máximo de 6,1 % en a = 0,5 y a = 2,0.
Para S=125348=111101001Graben 19, 101001002=1.11101001Graben 19, 101001002× × 216{displaystyle S=125348=1;1110;1001;1010;0100_{2}=1.1110;1001;1010;0100_{2}times 2^{16},}, la aproximación binaria da S. . ()0.5+0.5⋅ ⋅ a)⋅ ⋅ 28=1.01110100110100102⋅ ⋅ 1000000002=1.456⋅ ⋅ 256=372.8{displaystyle {sqrt {S}approx (0.5+0.5cdot a)cdot 2^{8}=1.0111;0100;1101;0010_{2}cdot 1;0000;0000_{2}=1.456cdot 256=372.8}. 125348=354.0{displaystyle {sqrt {125348}=354.0}, por lo que la estimación tiene un error absoluto de 19 y un error relativo de 5.3%. El error relativo es un poco menos de 1/24, por lo que la estimación es buena a 4+ bits.
Estimación a{displaystyle a} bueno a 8 bits se puede obtener por la búsqueda de mesa en los 8 bits altos de a{displaystyle a}, recordando que la parte alta es implícita en la mayoría de las representaciones de puntos flotantes, y la parte inferior de los 8 debe ser redondeado. La tabla es de 256 bytes de valores de raíz cuadrados precomputados de 8 bits. Por ejemplo, para el índice 111011012 representación 1.851562510, la entrada es 101011102 1.35937510, la raíz cuadrada de 1.851562510 a 8 bits de precisión (2+ dígitos decimales).
Método de Herón
El primer algoritmo explícito para aproximarse S{displaystyle {sqrt {S}} es conocido como Heron método, después del primer siglo Héroe matemático griego de Alejandría que describió el método en su trabajo AD 60 Metrica. Este método también se llama Método babilónico (para no confundirse con el método babilónico para las hipotenuas aproximadas), aunque no hay evidencia de que el método era conocido por los babilonios.
Dado un número real positivo S{displaystyle S., vamos x0 ■ 0 ser cualquier estimación inicial positiva. El método de Heron consiste en calcular iterativamente
Esto equivale a usar el método de Newton para resolver x2− − S=0{displaystyle x^{2}-S=0}. Este algoritmo es cuantificadamente convergente: el número de dígitos correctos de xn{displaystyle x_{n} aproximadamente se dobla con cada iteración.
Derivación
La idea básica es que si x es una sobreestimación de la raíz cuadrada de un número real no negativo S luego S/x será una subestimación, y viceversa, por lo que se puede esperar razonablemente que el promedio de estos dos números proporcione una mejor aproximación (aunque la prueba formal de esa afirmación depende de la desigualdad de medias aritméticas y geométricas que muestra que este promedio es siempre una sobreestimación de la raíz cuadrada, como se señala en el artículo sobre raíces cuadradas, asegurando así la convergencia).
Más precisamente, si x es nuestra primera suposición de S{displaystyle {sqrt {S}} y ε es el error en nuestra estimación tal que S =x+ ε)2, entonces podemos expandir el binomio
- ε ε =S− − x22x+ε ε . . S− − x22x,{displaystyle varepsilon ={frac {S-x^{2}{2x+varepsilon }approx {frac {S-x^{2} {2x}}}} desde entonces ε ε ≪ ≪ x{displaystyle varepsilon ll x}.
Por lo tanto, podemos compensar el error y actualizar nuestra estimación anterior según corresponda.
Este algoritmo funciona igualmente bien en los números p-ádicos, pero no se puede utilizar para identificar raíces cuadradas reales con p- raíces cuadradas ádicas; uno puede, por ejemplo, construir una secuencia de números racionales mediante este método que converja a +3 en los reales, pero a −3 en los 2-ádicos.
Ejemplo
Para calcular √S , donde S = 125348, con seis cifras significativas, utilice la estimación aproximada método anterior para obtener
Por lo tanto, √125348 ≈ 354.045.
Convergencia

Supongamos que x0 " 0 " S ■ 0. Entonces para cualquier número natural n, xn ■ 0. Dejar el error relativo en xn se define por
Entonces se puede demostrar que
Y así eso
El peor caso para la convergencia
Si se utiliza la estimación aproximada anterior con el método babilónico, los casos menos precisos en orden ascendente son los siguientes:
Por lo tanto, en cualquier caso,
Los errores de redondeo ralentizarán la convergencia. Se recomienda mantener al menos un dígito adicional más allá de la precisión deseada del xn que se está calculando. para minimizar el error de redondeo.
Método Bakhshali
Este método para encontrar una aproximación a una raíz cuadrada fue descrito en un antiguo manuscrito indio, llamado el manuscrito Bakhshali. Es equivalente a dos iteraciones del método babilónico comenzando con x0. Por lo tanto, el algoritmo es quartically convergent, lo que significa que el número de dígitos correctos de la aproximación cuadruple aproximadamente con cada iteración. La presentación original, utilizando la notación moderna, es la siguiente: Para calcular S{displaystyle {sqrt {S}}, vamos x02{displaystyle # ser la aproximación inicial a S{displaystyle S.. Entonces, sucesivamente iterate como:
Esto se puede utilizar para construir una aproximación racional a la raíz cuadrada al principio con un entero. Si x0=N{displaystyle x_{0}=N} es un entero elegido así N2{displaystyle N^{2} está cerca S{displaystyle S., y d=S− − N2{displaystyle D=S-N^{2} es la diferencia cuyo valor absoluto se minimiza, entonces la primera iteración se puede escribir como:
El método Bakhshali se puede generalizar al cálculo de una raíz arbitraria, incluidas raíces fraccionarias.
Ejemplo
Usando el mismo ejemplo que se da con el método babilónico, S=125348.{displaystyle S=125348.} Entonces, la primera iteración da
Del mismo modo, la segunda iteración da
Cálculo de dígitos por dígitos
Este es un método para encontrar cada dígito de la raíz cuadrada en una secuencia. Este método se basa en el teorema binomio y básicamente en una solución de algoritmo inverso ()x+Sí.)2=x2+2xSí.+Sí.2{displaystyle (x+y)}=x^{2}+2xy+y^{2}. Es más lento que el método babilónico, pero tiene varias ventajas:
- Puede ser más fácil para los cálculos manuales.
- Cada dígito de la raíz encontrada se sabe que es correcto, es decir, no tiene que ser cambiado más adelante.
- Si la raíz cuadrada tiene una expansión que termina, el algoritmo termina después de encontrar el último dígito. Por lo tanto, se puede utilizar para comprobar si un entero dado es un número cuadrado.
- El algoritmo funciona para cualquier base, y naturalmente, la forma en que procede depende de la base elegida.
Las desventajas son:
- Se vuelve inmanejable para las raíces superiores.
- No tolera adivinaciones o subcalculaciones inexactas; tales errores conducen a cada dígito siguiente del resultado siendo incorrecto, a diferencia del método de Newton, que autocorrige cualquier error de aproximación.
- Aunque el cálculo de dígitos por dígitos es suficientemente eficiente en papel, es demasiado caro para las implementaciones de software. Cada iteración implica números mayores, que requieren más memoria, pero sólo avanza la respuesta por un dígito correcto. Así, el algoritmo toma más tiempo para cada dígito adicional.
Los huesos de Napier incluyen una ayuda para la ejecución de este algoritmo. El algoritmo de raíz n-ésima cambiante es una generalización de este método.
Principio básico
Primero, considere el caso de encontrar la raíz cuadrada de un número Z, es decir, el cuadrado de un número de dos dígitos XY, donde X es el dígito de las decenas y Y es el dígito de las unidades. Específicamente:
Ahora, usando el algoritmo dígito por dígito, primero determinamos el valor de X. X es el dígito más grande tal que X2 es menor o igual a Z del cual eliminamos los dos dígitos más a la derecha.
En la siguiente iteración, emparejamos los dígitos, multiplicamos X por 2 y lo colocamos en el lugar de las décimas mientras intente averiguar cuál es el valor de Y.
Dado que este es un caso simple donde la respuesta es una raíz cuadrada perfecta XY, el algoritmo se detiene aquí.
La misma idea se puede extender a cualquier cálculo arbitrario de raíz cuadrada a continuación. Supongamos que podemos encontrar la raíz cuadrada de N expresándola como una suma de n números positivos tales que
Aplicando repetidamente la identidad básica
Esta expresión nos permite encontrar la raíz cuadrada adivinando secuencialmente los valores de ai{displaystyle A_{i}s. Supongamos que los números a1,... ... ,am− − 1{displaystyle a_{1},ldotsa_{m-1} ya se han adivinado, entonces el m-el término del lado derecho de la suma anterior es dado por Ym=[2Pm− − 1+am]am,{displaystyle Y_{m}=left[2P_{m-1}+a_{m}a_{m}} Donde Pm− − 1=. . i=1m− − 1ai{fnMicrosoftstyle P_{m-1}=sum ¿Qué? es la raíz cuadrada aproximada encontrada hasta ahora. Ahora cada nueva suposición am{displaystyle A_{m} debe satisfacer la recursión
Por ejemplo, en el sistema numérico decimal tenemos
Aquí desde el valor del lugar Ym{displaystyle Y... es un poder uniforme de 10, sólo necesitamos trabajar con el par de dígitos más significativos del término restante Xm− − 1{displaystyle X_{m-1} en cualquier etapa m. La sección que figura a continuación codifica este procedimiento.
Es obvio que un método similar se puede utilizar para calcular la raíz cuadrada en sistemas de números distintos del sistema de número decimal. Por ejemplo, encontrar la raíz cuadrada dígitos por dígitos en el sistema de números binarios es bastante eficiente ya que el valor de ai{displaystyle A_{i} es buscado desde un pequeño conjunto de dígitos binarios {0,1}. Esto hace que el cálculo sea más rápido ya que en cada etapa el valor de Ym{displaystyle Y... o Ym=0{displaystyle Y_{m}=0} para am=0{displaystyle A_{m}=0} o Ym=2Pm− − 1+1{displaystyle Y_{m}=2P_{m-1}+1} para am=1{displaystyle A_{m}=1}. El hecho de que tengamos sólo dos opciones posibles am{displaystyle A_{m} hace también el proceso de decidir el valor de am{displaystyle A_{m} a m- la etapa de cálculo más fácil. Esto es porque sólo necesitamos comprobar si Ym≤ ≤ Xm− − 1{displaystyle Y... X_{m-1} para am=1.{displaystyle A_{m}=1. Si esta condición está satisfecha, entonces tomamos am=1{displaystyle A_{m}=1}; si no am=0.{displaystyle a_{m}=0.} Además, el hecho de que la multiplicación por 2 se realiza mediante cambios de bits izquierdos ayuda en el cálculo.
Decimal (base 10)
Escribe el número original en forma decimal. Los números se escriben de manera similar al algoritmo de división larga y, como en la división larga, la raíz se escribirá en la línea de arriba. Ahora separe los dígitos en pares, comenzando desde el punto decimal y yendo hacia la izquierda y hacia la derecha. El punto decimal de la raíz estará encima del punto decimal del cuadrado. Un dígito de la raíz aparecerá encima de cada par de dígitos del cuadrado.
Comenzando con el par de dígitos más a la izquierda, realice el siguiente procedimiento para cada par:
- A partir de la izquierda, derriba el par de dígitos más significativo (izquierda) aún no usado (si todos los dígitos se han utilizado, escriba "00") y escríbalos a la derecha del resto del paso anterior (en el primer paso, no habrá ningún resto). En otras palabras, multiplicar el resto por 100 y añadir los dos dígitos. Este será el valor actual c.
- Encontrar p, Sí. y x, como sigue:
- Vamos. p ser el parte de la raíz encontrada hasta ahora, ignorando cualquier punto decimal. (Para el primer paso, p = 0.)
- Determinar el mayor dígito x tales que x()20p+x)≤ ≤ c{displaystyle x(20p+x)leq c}. Usaremos una nueva variable Sí. = x(20)p + x).
- Nota: 20p + x es simplemente dos veces p, con el dígito x a la derecha.
- Nota: x se puede encontrar adivinando lo que c/(20·p) es y hacer un cálculo de prueba de Sí., luego ajuste x hacia arriba o hacia abajo, según sea necesario.
- Coloque el dígito x{displaystyle x} como el siguiente dígito de la raíz, es decir, sobre los dos dígitos de la plaza que acaba de bajar. Así, el siguiente p será el viejo p veces 10 más x.
- Subtract Sí. desde c para formar un nuevo resto.
- Si el resto es cero y no hay más dígitos para bajar, entonces el algoritmo ha terminado. De lo contrario, vuelve al paso 1 para otra iteración.
Ejemplos
Encuentra la raíz cuadrada de 152,2756.
1 2. 3 4 / / 01 52.27 56 01 1*1 0 0 0 0 0 0 2*2 x=1 01 y = x*x = 1*1 = 1 52 22*2 00 44 y = (20+x)*x = 22*2 = 44 08 27 243*3 07 29 y = (240+x)*x = 243*3 = 729 98 56 2464*4 98 56 y = (2460+x)*x = 2464*4 = 9856 00 El algoritmo termina: Answer=12.34
Sistema de numeración binario (base 2)
Esta sección utiliza el formalismo de la sección de cálculo dígitos por dígitos arriba, con la leve variación que dejamos N2=()an+⋯ ⋯ +a0)2{displaystyle No., con cada am=2m{displaystyle a_{m}=2^{m} o am=0{displaystyle A_{m}=0}.
Nosotros lo hacemos todo 2m{displaystyle 2^{m}, de 2n{displaystyle 2^{n} abajo 20{displaystyle 2^{0}, y construir una solución aproximada Pm=an+an− − 1+... ... +am{displaystyle P_{m}=a_{n}+a_{n-1}+ldots #, la suma de todo ai{displaystyle A_{i} por lo que hemos determinado el valor.
Para determinar si am{displaystyle A_{m} iguales 2m{displaystyle 2^{m} o 0{displaystyle 0}, lo dejamos Pm=Pm+1+2m{displaystyle P_{m}=P_{m+1}+2^{m}. Si Pm2≤ ≤ N2{displaystyle P_{m} {2}leq N^{2} (es decir, el cuadrado de nuestra solución aproximada incluyendo 2m{displaystyle 2^{m} no excede el cuadrado de destino) entonces am=2m{displaystyle a_{m}=2^{m}, de lo contrario am=0{displaystyle A_{m}=0} y Pm=Pm+1{displaystyle P_{m}=P_{m+1}.
Para evitar el escuadrón Pm{displaystyle P_{m} en cada paso, almacenamos la diferencia Xm=N2− − Pm2{displaystyle ¿Qué? y la actualización incremental por el ajuste Xm=Xm+1− − Ym{displaystyle X_{m}=X_{m+1}-Y_{m} con Ym=Pm2− − Pm+12=2Pm+1am+am2{displaystyle Y....
Inicialmente, nos fijamos an=Pn=2n{displaystyle A_{n}=P_{n}=2^ {n} para el más grande n{displaystyle n} con ()2n)2=4n≤ ≤ N2{displaystyle (2^{n}{2}=4^{n}leq N^{2}.
Como una optimización extra, almacenamos Pm+12m+1{displaystyle P_{m+1}2^{m+1} y ()2m)2{displaystyle (2^{m} {2}}, los dos términos Ym{displaystyle Y... en caso de que am{displaystyle A_{m} no es cero, en variables separadas cm{displaystyle C_{m}, dm{displaystyle ♪♪:
cm{displaystyle C_{m} y dm{displaystyle ♪♪ se puede actualizar eficientemente en cada paso:
Tenga en cuenta que:
Una implementación de este algoritmo en C:
int32_t isqrt()int32_t n) {} afirmación(()"La entrada sqrt debe ser no negativo", n ■ 0)); // X_(n+1) int32_t x = n; // c_n int32_t c = 0; // d_n que comienza a la potencia más alta de cuatro int32_t d = 1 c) c) 30; // La segunda parte está lista. // Lo mismo que (sin firmar) INT32_MAX + 1) / 2. mientras ()d ■ n) {} d > 2; } // para dn ... d0 mientras ()d ! 0) {} si ()x >= c + d) {} // si X_(m+1) ≥ Y_m entonces a_m = 2^m x -= c + d; // X_m = X_(m+1) - Y_m c = ()c " 1) + d; // c_(m-1) = c_m/2 + d_m (a_m es 2^m) } más {} c > 1; // c_(m-1) = c_m/2 (am es 0) } d > 2; // d_(m-1) = d_m/4 } Regreso c; // c_(-1)}
Se pueden lograr algoritmos más rápidos, en binario y decimal o cualquier otra base, utilizando tablas de búsqueda, lo que de hecho intercambia más espacio de almacenamiento por un tiempo de ejecución reducido.
Identidad exponencial
Las calculadoras de bolsillo normalmente implementan buenas rutinas para calcular la función exponencial y el logaritmo natural, y luego computar la raíz cuadrada S usando la identidad encontrada usando las propiedades de los logaritmos (In xn=nIn x{displaystyle ln x^{n}=nln x}) y exponenciales (eIn x=x{displaystyle e^{ln x}=x}):
Un método iterativo de dos variables
Este método es aplicable para encontrar la raíz cuadrada <math alttext="{displaystyle 0<S0c)Sc)3{displaystyle 0 realizadasS won3,!}<img alt="{displaystyle 0<S y converge mejor para S. . 1{displaystyle Sapprox 1}. Esto, sin embargo, no es una limitación real para un cálculo basado en la computadora, como en las representaciones de punto flotante y punto fijo base 2, es trivial multiplicarse S{displaystyle S,! por un poder entero de 4, y por tanto S{displaystyle {sqrt {S}} por el poder correspondiente de 2, cambiando el exponente o cambiando, respectivamente. Por lo tanto, S{displaystyle S,! se puede mover a la gama <math alttext="{textstyle {tfrac {1}{2}}leq S12≤ ≤ Sc)2{fnMicrosoft}}leq S.<img alt="{textstyle {tfrac {1}{2}}leq S. Además, el siguiente método no emplea divisiones generales, sino solamente adiciones, restas, multiplicaciones y divisiones por poderes de dos, que son otra vez triviales para implementar. Una desventaja del método es que los errores numéricos se acumulan, en contraste con métodos iterativos variables individuales como el babilónico.
El paso inicial de este método es
La convergencia de cn{displaystyle ¡No!, y por lo tanto también de an{displaystyle a_{n},!, es cuadrático.
La prueba del método es bastante fácil. Primero, reescribir la definición iterativa de cn{displaystyle c_{n} como
Este método fue desarrollado alrededor de 1950 por M. V. Wilkes, D. J. Wheeler y S. Gill para su uso en EDSAC, una de las primeras computadoras electrónicas. Posteriormente, el método se generalizó, permitiendo el cálculo de raíces no cuadradas.
Métodos iterativos para raíces cuadradas recíprocas
Los siguientes son métodos iterativos para encontrar la raíz cuadrada recíproca S que es 1/S{displaystyle 1/{sqrt {S}}. Una vez que se ha encontrado, encontrar S{displaystyle {sqrt {S}} por simple multiplicación: S=S⋅ ⋅ ()1/S){displaystyle {sqrt {S}=Scdot (1/{sqrt {S}}}}. Estas iteraciones implican solamente multiplicación, y no división. Por lo tanto, son más rápidos que el método babilónico. Sin embargo, no son estables. Si el valor inicial no está cerca de la raíz cuadrada recíproca, las iteraciones se apartarán de ella en lugar de converger con ella. Por lo tanto, puede ser ventajoso realizar una iteración del método babilónico en una estimación aproximada antes de comenzar a aplicar estos métodos.
- Aplicar el método de Newton a la ecuación ()1/x2)− − S=0{displaystyle (1/x^{2})-S=0} produce un método que converge cuadráticamente utilizando tres multiplicaciones por paso: xn+1=xn2⋅ ⋅ ()3− − S⋅ ⋅ xn2)=xn⋅ ⋅ ()32− − S2⋅ ⋅ xn2).{displaystyle x_{n+1}={frac {x_{n}{2}}cdot (3-Scdot x_{n}=x_{n}cdot left({frac {3}{2}-{2}cdot x_{2}derecha). }
- Otra iteración es obtenida por el método de Halley, que es el método del orden dos del titular. Esto converge cúbicamente, pero implica cinco multiplicaciones por iteración: ySí.n=S⋅ ⋅ xn2,{displaystyle Y...xn+1=xn8⋅ ⋅ ()15− − Sí.n⋅ ⋅ ()10− − 3⋅ ⋅ Sí.n))=xn⋅ ⋅ ()158− − Sí.n⋅ ⋅ ()108− − 38⋅ ⋅ Sí.n)).{displaystyle x_{n+1}={frac {x_{n} {8}}cdot (15-y_{n}cdot (10-3cdot y_{n})=x_{n}cdot left({frac {15}{8}-y_{n}cdot left({frac {}{8}-{frac {3}cdot y_{n}right)right).}
- Si hace aritmética de punto fijo, la multiplicación por 3 y división por 8 puede implementarse usando cambios y adiciones. Si utiliza el punto flotante, el método de Halley puede reducirse a cuatro multiplicaciones por iteración por precomputación 3/8S{fnfnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft}fnMicrosoft {\fnMicrosoft {\fnMicrosoft}\\\\fnMicrom}\\\\fnMicrom}\\\fnMicrom}\\\\fnMicrom\\\\\\\\\\\\\\\\\\\\\\\fnMicrom\fnMicrosoft\\\\\\\\\fnMicrom\\\\\\\\\fnMicro {3/8}S} y ajustando todas las otras constantes para compensar: ySí.n=38S⋅ ⋅ xn2,{displaystyle Y... - Sí.xn+1=xn⋅ ⋅ ()158− − Sí.n⋅ ⋅ ()256− − Sí.n)).{displaystyle x_{n+1}=x_{n}cdot left({frac {15}{8}-y_{n}cdot left({sqrt {frac {25}{6}}-y_{n}right)}}}}}}
Algoritmo de Goldschmidt
Algunos ordenadores utilizan el algoritmo de Goldschmidt para calcular simultáneamente S{displaystyle {sqrt {S}} y 1/S{displaystyle 1/{sqrt {S}}. El algoritmo de Goldschmidt encuentra S{displaystyle {sqrt {S}} más rápido que la iteración Newton-Raphson en un ordenador con una instrucción multiplicada fusionada y una unidad de punto flotante o dos unidades independientes de punto flotante.
Comienza la primera forma de escribir el algoritmo de Goldschmidt
- b0=S{displaystyle B_{0}=S}
- Y0. . 1/S{displaystyle Y... {S}} (típicamente usando una búsqueda de tabla)
- Sí.0=Y0{displaystyle Y...
- x0=SSí.0{displaystyle Sí.
e itera
Comienza una segunda forma, que utiliza operaciones fusionadas de suma múltiple
- Sí.0. . 1/S{displaystyle Y... (típicamente usando una búsqueda de tabla)
- x0=SSí.0{displaystyle Sí.
- h0=12Sí.0{displaystyle H_{0}={tfrac {1}{2}y_{0}
e itera
Serie Taylor
Si N es una aproximación a S{displaystyle {sqrt {S}}, una mejor aproximación se puede encontrar utilizando la serie Taylor de la función raíz cuadrada:
Como método iterativo, el orden de convergencia es igual al número de términos utilizados. Con dos términos, es idéntico al método babilónico. Con tres términos, cada iteración toma casi tantas operaciones como la aproximación Bakhshali, pero converge más lentamente. Por lo tanto, esta no es una forma de cálculo particularmente eficiente. Para maximizar la tasa de convergencia, elija N así SilenciodSilencioN2{fnMicroc} {fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif}} {fnMicrosoft Sans Serif} es lo más pequeño posible.
Expansión de fracción continua
La representación de fracción continua de un número real se puede utilizar en lugar de su expansión decimal o binaria y esta representación tiene la propiedad de que la raíz cuadrada de cualquier número racional (que aún no sea un cuadrado perfecto) tiene una expansión periódica y repetida. , similar a cómo los números racionales tienen expansiones repetidas en el sistema de notación decimal.
irracionales cuadráticos (números de la forma a+bc{displaystyle {frac {a+{sqrt {b}} {c}}} {}} {}}} {}}}} {}}}}} {}}}} {}}}} {}}} {}}}}}}}}}} {}} {}}}} {}}}}}} {}}}}}}}}} {}}}}}}}}}}}} {}}}}}}}}} {}}}}}} {}}}}}}}}}}}}}}}}}}}}}}}}}} {}}}}}}} {}}}}} {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, donde a, b y c son enteros), y en particular, raíces cuadradas de enteros, tienen fracciones continuas periódicas. A veces lo que se desea no es encontrar el valor numérico de una raíz cuadrada, sino más bien su continua expansión de la fracción, y por lo tanto su aproximación racional. Vamos. S ser el número positivo para el cual estamos obligados a encontrar la raíz cuadrada. Entonces suponiendo a ser un número que sirve como una conjetura inicial y r para ser el término restante, podemos escribir S=a2+r.{displaystyle S=a^{2}+r.} Desde que tenemos S− − a2=()S+a)()S− − a)=r{displaystyle S-a^{2}=({sqrt {S}+a)({sqrt {S}-a)=r}, podemos expresar la raíz cuadrada S como
Al aplicar esta expresión para S{displaystyle {sqrt {S}} al término denominador de la fracción, tenemos
La expansión del numerador/denominador para fracciones continuas (véase la izquierda) es engorrosa para escribir, así como para incrustar en sistemas de formato de texto. Así que los matemáticos han ideado varias notaciones alternativas, como
Cuando r=1{displaystyle r=1} una notación aún más compacta es:
Para √2, el valor de a{displaystyle a} es 1, por lo que su representación es:
Procediendo de esta manera, obtenemos una fracción continua generalizada para la raíz cuadrada como
El primer paso para evaluar tal fracción para obtener una raíz es hacer sustituciones numéricas para la raíz del número deseado, y el número de denominadores seleccionados. Por ejemplo, en forma canónica, r{displaystyle r} 1 y 1 √2, a{displaystyle a} es 1, por lo que la fracción continua numérica para 3 denominadores es:
El paso 2 es reducir la fracción continua de abajo hacia arriba, un denominador a la vez, para producir una fracción racional cuyo numerador y denominador son enteros. Así pues, la reducción procede (teniendo los tres primeros denominadores):
Finalmente (paso 3), divide el numerador por el denominador de la fracción racional para obtener el valor aproximado de la raíz:
El valor real de √2 es 1.41 a tres dígitos significativos. El error relativo es 0.17%, por lo que la fracción racional es buena a casi tres dígitos de precisión. Tomar más denominadores da sucesivamente mejores aproximaciones: cuatro denominadores produce la fracción 4129=1.4137{displaystyle {frac {41}{29}=1.4137}, bueno a casi 4 dígitos de precisión, etc.
Los siguientes son ejemplos de raíces cuadradas, sus fracciones continuas simples y sus primeros términos, llamados convergentes, hasta el denominador 99 inclusive:
√S | ~decimal | fracción continua | convergentes |
---|---|---|---|
√2 | 1.41421 | [1;2̄ ̄ ]{displaystyle [1;{overline {2}}} | 32,75,1712,4129,9970{displaystyle {frac {3}{2}},{frac {7}{5},{frac {17}{12}}}},{frac {41}{29}} {frac {}{} {f}}}} {f}}}} {f}}}}}} {f}}}} {f}}}}}} {f}}}}}} {f}}}}}}}}}} {f}}}}}}}}} {f}}}}} {f}}}}}}}}}}}}} {f}}}}}}}} {f}}}}}}}}}}}}}}}}}}}}}}} {f}}}}} {f}}}}}}}}} {f}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} |
√3 | 1.73205 | [1;1,2̄ ̄ ]{displaystyle [1;{overline {1,2}}} | 21,53,74,1911,2615,7141,9756{displaystyle {frac {2}{1}},{frac {5}{3},{frac {7}{4}}},{frac {19}{11}},{frac {26}} {frac {71}{41}}}}}{frac {} {}{56}}}}}}} {f}}} {f}}}}}}}} {f}} {f}}}}} {f}}}}}} {f}}}}}}} {f}}}}} {f}}}}}} {f}}}}}}}}}}}}}}}}} {f}} {f}}} {f}}} {f}f}}}}f}f}f}}}}}f}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} |
√5 | 2.23607 | [2;4̄ ̄ ]{displaystyle [2;{overline {4}}} | 94,3817,16172{displaystyle {frac {9}{4}},{frac {38}{17},{frac {161}{72}}} |
√6 | 2.44949 | [2;2,4̄ ̄ ]{displaystyle [2;{overline {2,4}}} | 52,229,4920,21889{displaystyle {frac {5}{2}},{frac {22}{9}},{frac {49}{20}}}} {frac {218}{89}} {f}} {f}}} {f}} |
√10 | 3.16228 | [3;6̄ ̄ ]{displaystyle [3;{overline {6}} | 196,11737{displaystyle {frac {19}{6}} {frac {117}{37}}} |
π π {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {\fnMicrosoft {\\fnMicrosoft {\\fnMicrosoft {fnMicrosoft {\fnMicrosoft {\fnMicrosoft {\\fnMicrosoft {\\\\\\\fnMicrosoft {\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ } | 1.77245 | [1;1,3,2,1,1,6...]{displaystyle [1;1,3,2,1,6...]} | 21,74,169,2313,3922{displaystyle {frac {2}{1}},{frac {7}{4}},{frac {16}{9}}} {frac {23}{13} {frac {39}{22}}}} {f}} {f}}} {f}}}}} {f}}}}}} {f}}}} {f}}}}}}}}}}}}} {f}}}}}}}}} {f}}} {f}}}}}} {f}}}}}}}}}}} {f}}}}}}}}}}}}}}}}}} {f}}}}}}}} {f}}}}}}}}}}}} {f}}}}}}}}} {f}}}}}}}}} {f}}}} {f}}}}}}}}}}}}}}}}}}} |
e{displaystyle {sqrt}} | 1.64872 | [1;1,1,1,5,1,1...]{displaystyle [1;1,1,1,5,1,1...]} | 21,32,53,2817,3320,6137{displaystyle {frac {2}{1}},{frac {3}{2}},{frac {5}{3}}} {frac {28}{17}},{frac {33}{20}}}{frac {frac {61}{37}}}}}}}}}} {f} {f}}}}} {f}}} {f}}}f}}}}}}f}}} {f} {f} {f} {f}}}}}f}}}}}}}}}}}f}f}}}}}}}f}}}}}} {f} {f} {f} {f} {f} {f}}f}f}f}f}f}f}f}}}}}}f}f}}}f}f}f}f}}}}}}}} |
φ φ {displaystyle {sqrt {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {\fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft {\\fnMicrosoft {\\fnMicrosoft {\\\\\\fnMicrosoft {\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ } | 1.27202 | [1;3,1,2,11,3,7...]{displaystyle [1;3,1,2,11,3,7...] | 43,54,1411{displaystyle {frac {4}{3}},{frac {5}{4}} {frac {14}{11}}}} |
En general, cuanto mayor sea el denominador de una fracción racional, mejor será la aproximación. También se puede demostrar que truncar una fracción continua produce una fracción racional que es la mejor aproximación a la raíz de cualquier fracción con denominador menor o igual al denominador de esa fracción; por ejemplo, ninguna fracción con un denominador menor o igual a 70 es una aproximación tan buena a √2 como 99/70.
Aproximaciones que dependen de la representación en coma flotante
Un número está representado en un formato de punto flotante como m× × bp{displaystyle mtimes b^{p} que también se llama notación científica. Su raíz cuadrada m× × bp/2{displaystyle {sqrt {m}times b^{p/2} y fórmulas similares solicitarían raíces de cubo y logaritmos. En la cara de ella, esto no es mejora en la simplicidad, pero supone que sólo se requiere una aproximación: entonces sólo bp/2{displaystyle B^{p/2} es bueno para un orden de magnitud. Siguiente, reconocer que algunos poderes, p, será extraño, por lo tanto para 3141.59 = 3.14159×103 en lugar de tratar con poderes fraccionados de la base, multiplicar el mantissa por la base y restar uno del poder para hacerlo uniforme. La representación ajustada se convertirá en el equivalente a 31.4159×102 para que la raíz cuadrada sea √31.4159×101.
Si se toma la parte entera de la mantisa ajustada, solo pueden existir los valores del 1 al 99, y eso podría usarse como índice en una tabla de 99 raíces cuadradas precalculadas para completar la estimación. Una computadora que use base dieciséis requeriría una tabla más grande, pero una que use base dos requeriría sólo tres entradas: los posibles bits de la parte entera de la mantisa ajustada son 01 (siendo la potencia aún así no hubo desplazamiento, recordando que una computadora normalizada número de coma flotante siempre tiene un dígito de orden superior distinto de cero) o si la potencia era impar, 10 u 11, siendo estos los primeros dos bits de la mantisa original. Por lo tanto, 6,25 = 110,01 en binario, normalizado a 1,1001 × 22 una potencia par, por lo que los bits emparejados de la mantisa son 01, mientras que .625 = 0,101 en binario se normaliza a 1,01 × 2− 1 es una potencia impar, por lo que el ajuste es 10,1 × 2−2 y los bits emparejados son 10. Observe que el bit de orden inferior de la potencia se repite en el bit de orden superior de la mantisa por pares. Una potencia par tiene su bit de orden inferior cero y la mantisa ajustada comenzará con 0, mientras que para una potencia impar ese bit es uno y la mantisa ajustada comenzará con 1. Así, cuando la potencia se reduce a la mitad, es como si El bit de orden inferior se desplaza para convertirse en el primer bit de la mantisa por pares.
Una tabla con sólo tres entradas podría ampliarse incorporando bits adicionales de la mantisa. Sin embargo, con las computadoras, en lugar de calcular una interpolación en una tabla, a menudo es mejor encontrar algún cálculo más simple que proporcione resultados equivalentes. Ahora todo depende de los detalles exactos del formato de la representación, además de qué operaciones están disponibles para acceder y manipular las partes del número. Por ejemplo, Fortran ofrece una función EXPONENT(x)
para obtener el poder. El esfuerzo invertido en diseñar una buena aproximación inicial debe recuperarse evitando así las iteraciones adicionales del proceso de refinamiento que habrían sido necesarias para una mala aproximación. Dado que son pocos (una iteración requiere dividir, sumar y reducir a la mitad), la restricción es severa.
Muchos ordenadores siguen la representación de IEEE (o lo suficientemente similar), y una aproximación muy rápida a la raíz cuadrada se puede obtener para iniciar el método de Newton. La técnica que sigue se basa en el hecho de que el formato de punto flotante (en la base dos) aproxima el logaritmo base-2. Eso es log2 ()m× × 2p)=p+log2 ()m){displaystyle log _{2}(mtimes 2^{p})=p+log _{2}(m)}
Así que para un número de punto flotante de precisión de 32 bits en formato IEEE (donde destaca, el poder tiene un sesgo de 127 añadido para la forma representada) se puede obtener el logaritmo aproximado interpretando su representación binaria como un entero de 32 bits, escalando por 2− − 23{displaystyle 2^{-23}, y quitar un sesgo de 127, es decir.
Por ejemplo, 1.0 está representado por un número hexadecimal 0x3F800000, que representaría 1065353216=127⋅ ⋅ 223{displaystyle 1065353216=127cdot 2^{23} si se toma como un entero. Usando la fórmula encima de usted consigue 1065353216⋅ ⋅ 2− − 23− − 127=0{displaystyle 1065353216cdot 2^{-23}-127=0}, como se esperaba de log2 ()1.0){displaystyle log _{2}(1.0)}. De forma similar obtienes 0,5 de 1,5 (0x3FC00000).
Para obtener la raíz cuadrada, dividir el logaritmo por 2 y convertir el valor de vuelta. El siguiente programa demuestra la idea. El bit más bajo del exponente se permite intencionadamente propagarse hacia el mantissa. Una manera de justificar los pasos de este programa es asumir b{displaystyle b} es el sesgo exponente y n{displaystyle n} es el número de bits explícitamente almacenados en el mantissa y luego mostrar que
/* Supone que flotar está en el formato de punto flotante de precisión única IEEE 754 */#include Identificado.hflotador sqrt_approx()flotador z){}sindicato {} flotador f; uint32_t i; } val = {}z};/* Convertir tipo, preservando el patrón de bits *//** Para justificar el siguiente código, probar que** ((((val.i / 2^m) - b) / 2) + b) * 2^m = ((val.i - 2^m) / 2) + (b + 1) / 2) * 2^m)** Donde** b = sesgo exponente* m = número de bits de mantissa*/val.i -= 1 c) c) 23;Subtract 2^m. */val.i > 1;/* Divide por 2. */val.i += 1 c) c) 29;/* Add ((b +1) / 2) * 2^m. */Regreso val.f;/* Interpretar de nuevo como flotante */}
Las tres operaciones matemáticas que forman el núcleo de la función anterior se pueden expresar en una sola línea. Se puede agregar un ajuste adicional para reducir el error relativo máximo. Entonces, las tres operaciones, no incluyendo el yeso, pueden ser reescritas como
val.i = ()1 c) c) 29) + ()val.i " 1) - ()1 c) c) 22) + a;
donde a es un sesgo para ajustar los errores de aproximación. Por ejemplo, con a = 0 los resultados son precisos para potencias pares de 2 (por ejemplo, 1,0), pero para otros números los resultados serán ligeramente demasiado grandes (por ejemplo, 1,5 para 2,0 en lugar de 1,414... con un 6% de error). Con a = −0x4B0D2, el error relativo máximo se minimiza a ±3,5%.
Si la aproximación se utilizará para una suposición inicial para el método de Newton a la ecuación ()1/x2)− − S=0{displaystyle (1/x^{2})-S=0}, entonces se prefiere la forma recíproca mostrada en la siguiente sección.
Recíproco de la raíz cuadrada
A continuación se incluye una variante de la rutina anterior, que puede utilizarse para calcular la reciproca de la raíz cuadrada, es decir, x− − 1/2{displaystyle x^{-1/2} En cambio, fue escrito por Greg Walsh. La aproximación integer-shift produjo un error relativo de menos del 4%, y el error cayó más allá del 0,15% con una iteración del método de Newton en la línea siguiente. En los gráficos de la computadora es una manera muy eficiente de normalizar un vector.
flotador invSqrt()flotador x) {} flotador xhalf = 0,5f * x; sindicato {} flotador x; int i; } u; u.x = x; u.i = 0x5f375a86 - ()u.i " 1); /* La siguiente línea se puede repetir cualquier número de veces para aumentar la precisión */ u.x = u.x * ()1,5f - xhalf * u.x * u.x); Regreso u.x;}
Algunos hardware VLSI implementan la raíz cuadrada inversa utilizando una estimación polinómica de segundo grado seguida de una iteración de Goldschmidt.
Cuadrado negativo o complejo
Si S < 0, entonces su raíz cuadrada principal es
Si S = a+bi donde a y b son reales y b ≠ 0, entonces su raíz cuadrada principal es
Esto se puede verificar elevando la raíz al cuadrado. Aquí
es el módulo de S. La raíz cuadrada principal de un número complejo se define como la raíz con la parte real no negativa.