El algoritmo de Jenkins-Traub para la búsqueda de raíces de polinomios es un método iterativo rápido y globalmente convergente para la búsqueda de raíces de polinomios, publicado en 1970 por Michael A. Jenkins y Joseph F. Traub . Presentaron dos variantes: una para polinomios generales con coeficientes complejos, conocida comúnmente como el algoritmo "CPOLY", y una variante más compleja para el caso especial de polinomios con coeficientes reales, conocida comúnmente como el algoritmo "RPOLY". Esta última es prácticamente un estándar en los algoritmos de búsqueda de raíces de polinomios de caja negra. [ 1 ]
Este artículo describe la variante compleja. Dado un polinomio P , Con coeficientes complejos, calcula aproximaciones a los n ceros.de P ( z ), una a una en orden de magnitud aproximadamente creciente. Después de calcular cada raíz, se elimina su factor lineal del polinomio. El uso de esta deflación garantiza que cada raíz se calcule solo una vez y que se encuentren todas.
La variante real sigue el mismo patrón, pero calcula dos raíces a la vez: dos raíces reales o un par de raíces complejas conjugadas. Al evitar la aritmética compleja, la variante real puede ser cuatro veces más rápida que la variante compleja. El algoritmo de Jenkins-Traub ha impulsado una considerable investigación sobre la teoría y el software para métodos de este tipo.
Descripción general
El algoritmo de Jenkins-Traub calcula todas las raíces de un polinomio con coeficientes complejos. El algoritmo comienza comprobando si el polinomio tiene raíces muy grandes o muy pequeñas. Si es necesario, los coeficientes se reescalan mediante un reescalado de la variable. En el algoritmo, las raíces propias se encuentran una a una y, generalmente, en orden creciente. Después de encontrar cada raíz, el polinomio se reduce dividiendo por el factor lineal correspondiente. De hecho, la factorización del polinomio en el factor lineal y el polinomio reducido restante es ya un resultado del procedimiento de búsqueda de raíces. El procedimiento de búsqueda de raíces tiene tres etapas que corresponden a diferentes variantes de la iteración de potencia inversa . Véase Jenkins y Traub . [ 2 ] También se puede encontrar una descripción en Ralston y Rabinowitz [ 3 ] pág. 383. El algoritmo es similar en esencia al algoritmo de dos etapas estudiado por Traub. [ 4 ]
Procedimiento de localización de raíces
Partiendo del polinomio actual P ( X ) de grado n , el objetivo es calcular la raíz más pequeña.de P(x) . El polinomio se puede entonces dividir en un factor lineal y el factor polinómico restante.Otros métodos de búsqueda de raíces se centran principalmente en mejorar la raíz y, por lo tanto, el primer factor. La idea principal del método Jenkins-Traub es mejorar gradualmente el segundo factor.
Para ello, se construye una secuencia de los llamados polinomios H. Estos polinomios son todos de grado n − 1 y se supone que convergen al factor de P ( X ) que contiene (los factores lineales de) todas las raíces restantes. La secuencia de polinomios H aparece en dos variantes, una variante no normalizada que permite una comprensión teórica sencilla y una variante normalizada depolinomios que mantienen los coeficientes en un rango numéricamente razonable. La construcción de los polinomios Hestá guiado por una secuencia de números complejosdenominados desplazamientos. Estos desplazamientos dependen, al menos en la tercera etapa, de los polinomios H anteriores. Los polinomios H se definen como la solución a la recursión implícita. y Una solución directa a esta ecuación implícita es donde la división polinómica es exacta.
Algorítmicamente, se usaría la división larga por el factor lineal como en el esquema de Horner o la regla de Ruffini para evaluar los polinomios eny obtener los cocientes al mismo tiempo. Con los cocientes resultantes p ( X ) y h ( X ) como resultados intermedios , se obtiene el siguiente polinomio H como Dado que el coeficiente de grado más alto se obtiene de P(X) , el coeficiente principal dees. Si se divide esto, el polinomio H normalizado es
Etapa uno: proceso sin turnos
ParacolocarGeneralmente, se elige M=5 para polinomios de grados moderados hasta n = 50. Esta etapa no es necesaria solo por consideraciones teóricas, pero resulta útil en la práctica. En los polinomios H, enfatiza el/los cofactor/es (del factor lineal) de la/s raíz/s más pequeña/s.
Segunda etapa: proceso de turno fijo
El desplazamiento para esta etapa se determina como un punto cercano a la raíz más pequeña del polinomio. Se ubica de forma casi aleatoria en el círculo con el radio de la raíz interior, que a su vez se estima como la solución positiva de la ecuación. Dado que el lado izquierdo es una función convexa y aumenta monótonamente de cero a infinito, esta ecuación es fácil de resolver, por ejemplo, mediante el método de Newton .
Ahora eligeen el círculo de este radio. La sucesión de polinomios,, se genera con el valor de desplazamiento fijoEsto crea una asimetría con respecto a la etapa anterior que aumenta la probabilidad de que el polinomio H se mueva hacia el cofactor de una sola raíz. Durante esta iteración, la aproximación actual para la raíz
se realiza el seguimiento. La segunda etapa se considera finalizada con éxito si se cumplen las condiciones. y Se cumplen simultáneamente. Esto limita el tamaño relativo del paso de la iteración, asegurando que la secuencia de aproximación se mantenga dentro del rango de las raíces más pequeñas. Si no se obtiene éxito tras un cierto número de iteraciones, se prueba con un punto aleatorio diferente en el círculo. Normalmente se utilizan 9 iteraciones para polinomios de grado moderado, con una estrategia de duplicación en caso de múltiples fallos.
Tercera etapa: proceso de cambio variable
ElLos polinomios ahora se generan utilizando los desplazamientos de variables.que son generados por siendo la última estimación de raíz de la segunda etapa y dóndees el polinomio H normalizado , es decirdividido por su coeficiente principal.
Si el tamaño del paso en la tercera etapa no disminuye lo suficientemente rápido hasta cero, la segunda etapa se reinicia utilizando un punto aleatorio diferente. Si esto no tiene éxito después de varios reinicios, el número de pasos en la segunda etapa se duplica.
Convergencia
Se puede demostrar que, siempre que L se elija suficientemente grande, s λ siempre converge a una raíz de P.
El algoritmo converge para cualquier distribución de raíces, pero puede fallar al encontrar todas las raíces del polinomio. Además, la convergencia es ligeramente más rápida que la convergencia cuadrática del método de Newton-Raphson; sin embargo, utiliza una vez y media menos operaciones por paso: dos evaluaciones del polinomio para Newton frente a tres evaluaciones en la tercera etapa.
¿Qué es lo que le da poder al algoritmo?
Comparar con la iteración de Newton-Raphson
La iteración utiliza el P dado y. Por el contrario, la tercera etapa de Jenkins-Traub
es precisamente una iteración de Newton-Raphson realizada sobre ciertas funciones racionales . Más precisamente, el método de Newton-Raphson se realiza sobre una secuencia de funciones racionales.
Parasuficientemente grande, es lo más cercano que se desea a un polinomio de primer grado. dóndees uno de los ceros deAunque la etapa 3 es precisamente una iteración de Newton-Raphson, no se realiza ninguna diferenciación.
Análisis de los polinomios H
Dejarsean las raíces de P ( X ). Los llamados factores de Lagrange de P(X) son los cofactores de estas raíces, Si todas las raíces son diferentes, entonces los factores de Lagrange forman una base del espacio de polinomios de grado como máximo n − 1. Mediante el análisis del procedimiento de recursión se encuentra que los polinomios H tienen la representación de coordenadas Cada factor de Lagrange tiene coeficiente principal 1, de modo que el coeficiente principal de los polinomios H es la suma de los coeficientes. Los polinomios H normalizados son, por lo tanto,
Órdenes de convergencia
Si la condiciónSe cumple para casi todas las iteraciones, los polinomios H normalizados convergerán al menos geométricamente hacia.
Bajo la condición de que uno obtiene las estimaciones asintóticas para
- etapa 1:
- para la etapa 2, si s está lo suficientemente cerca de:y
- y para la etapa 3:ydando lugar a un orden de convergencia superior al cuadrático de, dóndees la proporción áurea .
Interpretación como iteración de potencia inversa
Todas las etapas del algoritmo complejo de Jenkins-Traub pueden representarse como el problema de álgebra lineal de determinar los valores propios de una matriz especial. Esta matriz es la representación de coordenadas de una aplicación lineal en el espacio n -dimensional de polinomios de grado n − 1 o menor. La idea principal de esta aplicación es interpretar la factorización. con una raízyel factor restante de grado n − 1 como la ecuación del vector propio para la multiplicación con la variable X , seguido del cálculo del resto con el divisor P ( X ), Esto transforma polinomios de grado como máximo n − 1 en polinomios de grado como máximo n − 1. Los valores propios de esta transformación son las raíces de P ( X ), ya que la ecuación del vector propio es: lo cual implica que, eso es,es un factor lineal de P ( X ). En la base monomial, el mapeo linealestá representada por una matriz compañera del polinomio P , como La matriz de transformación resultante es A esta matriz se le aplica la iteración de potencia inversa en sus tres variantes: sin desplazamiento, desplazamiento constante y desplazamiento de Rayleigh generalizado, en las tres etapas del algoritmo. Resulta más eficiente realizar las operaciones de álgebra lineal mediante aritmética polinómica que mediante operaciones matriciales; sin embargo, las propiedades de la iteración de potencia inversa se mantienen.
Coeficientes reales
El algoritmo de Jenkins-Traub describió trabajos anteriores para polinomios con coeficientes complejos. Los mismos autores también crearon un algoritmo de tres etapas para polinomios con coeficientes reales. Véase Jenkins y Traub, « Un algoritmo de tres etapas para polinomios reales mediante iteración cuadrática» [ 5 ] . El algoritmo encuentra un factor lineal o cuadrático que opera completamente en aritmética real. Si se aplican los algoritmos para coeficientes complejos y reales al mismo polinomio real, el algoritmo para coeficientes reales es aproximadamente cuatro veces más rápido. El algoritmo para coeficientes reales siempre converge y su tasa de convergencia es superior a segundo orden.
Una conexión con el algoritmo QR desplazado
Existe una sorprendente conexión con el algoritmo QR desplazado para el cálculo de valores propios de matrices. Véase Dekker y Traub, El algoritmo QR desplazado para matrices hermíticas . [ 6 ] Nuevamente, los desplazamientos pueden considerarse como una iteración de Newton-Raphson sobre una secuencia de funciones racionales que convergen a un polinomio de primer grado.
Software y pruebas
El software para el algoritmo de Jenkins-Traub se publicó como Jenkins and Traub Algorithm 419: Zeros of a Complex Polynomial . [ 7 ] El software para el algoritmo real se publicó como Jenkins Algorithm 493: Zeros of a Real Polynomial . [ 8 ]
Estos métodos han sido ampliamente probados por numerosas personas. Tal como se predijo, presentan una convergencia más rápida que la cuadrática para todas las distribuciones de ceros.
Sin embargo, existen polinomios que pueden causar pérdida de precisión [ 9 ], como se ilustra en el siguiente ejemplo. El polinomio tiene todos sus ceros ubicados en dos semicírculos de radios diferentes. Wilkinson recomienda que, para una deflación estable, es conveniente calcular primero los ceros más pequeños. Los desplazamientos de la segunda etapa se eligen de manera que los ceros en el semicírculo más pequeño se encuentren primero. Después de la deflación, se sabe que el polinomio con los ceros en el semicírculo está mal condicionado si el grado es grande; véase Wilkinson, [ 10 ] pág. 64. El polinomio original era de grado 60 y sufrió una grave inestabilidad de deflación.
Referencias
- ↑ Press, WH, Teukolsky, SA, Vetterling, WT y Flannery, BP (2007), Numerical Recipes: The Art of Scientific Computing, 3.ª ed., Cambridge University Press, página 470.
- ↑ Jenkins, MA y Traub, JF (1970), Una iteración de desplazamiento de variables de tres etapas para ceros polinomiales y su relación con la iteración de Rayleigh generalizada , Numer. Math. 14, 252–263.
- ↑ Ralston, A. y Rabinowitz, P. (1978), Un primer curso de análisis numérico, 2.ª ed., McGraw-Hill, Nueva York.
- ↑ Traub, JF (1966), Una clase de funciones de iteración globalmente convergentes para la solución de ecuaciones polinomiales , Math. Comp., 20(93), 113–138.
- ↑ Jenkins, MA y Traub, JF (1970), Un algoritmo de tres etapas para polinomios reales mediante iteración cuadrática , SIAM J. Numer. Anal., 7(4), 545–566.
- ↑ Dekker, TJ y Traub, JF (1971), El algoritmo QR desplazado para matrices hermíticas , Lin. Algebra Appl., 4(2), 137–154.
- ↑ Jenkins, MA y Traub, JF (1972), Algoritmo 419: Ceros de un polinomio complejo , Comm. ACM, 15, 97–99.
- ↑ Jenkins, MA (1975), Algoritmo 493: Ceros de un polinomio real , ACM TOMS, 1, 178–189.
- ↑ "Entrevista de historia oral a William Kahan realizada por Thomas Haigh" . The History of Numerical Analysis and Scientific Computing . Filadelfia, PA. 8 de agosto de 2005. Consultado el 3 de diciembre de 2021 .
- ↑ Wilkinson, JH (1963), Errores de redondeo en procesos algebraicos, Prentice Hall, Englewood Cliffs, NJ
Enlaces externos
- Aplicación gratuita para Windows que se puede descargar y que utiliza el método de Jenkins-Traub para polinomios con coeficientes reales y complejos.
- RPoly++ Una implementación en C++ optimizada para SSE del algoritmo RPOLY.
- Análisis numérico
- Algoritmos de factorización de polinomios