La división de polinomios es la operación de división con resto en el anillo euclidiano de polinomios en una variable sobre algún campo . El algoritmo ingenuo que implementa esta operación es una forma generalizada de división de columnas , que se implementa fácilmente de forma manual.
Para cualquier polinomio y , , existen polinomios únicos y tales que
,y tiene un grado menor que .
El propósito de los algoritmos de división de polinomios es encontrar el cociente y el resto de un divisor divisible y distinto de cero [1] .
El problema de dividir polinomios con resto se puede formular en las siguientes formulaciones equivalentes [2] .
Los polinomios de grado y grado están dados por sus coeficientes. Es necesario encontrar el cociente y el resto tal que [2]
(una) |
Los polinomios así definidos y son únicos - si suponemos que la ecuación ( 1 ) tiene dos soluciones y , entonces
de donde se sigue que o , lo que también implica , o el grado no es menor que el grado , lo cual es imposible por definición [3] .
Este problema se puede reescribir en forma matricial, si asumimos que y se dan , y necesitamos calcular tal que [ 2]
(2) |
Debido a que , para resolver el problema, basta encontrar por las primeras ecuaciones del sistema . Si consideramos solo estas ecuaciones, el problema se convierte en
(3) |
La matriz de este sistema de ecuaciones es triangular inferior y Toeplitz , compuesta por coeficientes principales y ceros, y la solución del sistema equivale a encontrar su inversa [2] .
Sean y polinomios obtenidos de y al invertir la secuencia de coeficientes. El sistema de ecuaciones ( 3 ) se puede formular como
donde , y significa que los residuos después de dividir los polinomios y por son iguales. La división de un polinomio por se puede representar como , por lo que el resto es igual al polinomio obtenido de los primeros coeficientes , es decir,
Si se conocen los polinomios y , entonces , ¿dónde está el polinomio inverso en el anillo de residuos módulo . Por lo tanto, la búsqueda puede reducirse a encontrar , tal que
(cuatro) |
Esta formulación también permite encontrar la matriz inversa en el sistema ( 3 ):
Sea la matriz de tamaño de ( 3 ). Entonces es una matriz Toeplitz triangular inferior, cuya primera columna es , donde están los coeficientes de ( 4 ). |
El sistema ( 3 ) es equivalente a la ecuación . En consecuencia, el sistema
se puede representar como , que en el caso ( 4 ) es equivalente al sistema ( 3 ). ■
Debido a la arbitrariedad del polinomio que define los elementos , este hecho nos permite encontrar la inversa de una matriz triangular inferior arbitraria de Toeplitz [2] .
La ecuación se puede ver no sólo en módulo , sino también como una igualdad en el anillo de series formales de potencia . Sean y series de potencias formales coincidentes con los polinomios y . Si en tales términos encontramos la serie formal
(5) |
entonces sus coeficientes a potencias más bajas corresponderán al polinomio requerido . Este enfoque también nos permite considerar el problema ( 2 ) como un sistema con una matriz de Toeplitz infinitamente extendida y una columna infinitamente extendida , en la que se excluye la columna de residuos . Resolver las primeras filas de dicho sistema dará los primeros coeficientes de la serie , a saber . Al mismo tiempo, trabajar con series de potencias en general, en las que solo interesan los primeros coeficientes de la serie (por ejemplo, debido a la memoria disponible limitada), es equivalente a trabajar con polinomios, cuyas operaciones se realizan en el módulo anillo de residuos [4] . En particular, la búsqueda de los primeros coeficientes equivale a resolver la ecuación [2] .
En el curso del algoritmo, los coeficientes a potencias más altas se ponen a cero secuencialmente al restar multiplicado por alguna potencia con coeficientes, que luego forman el cociente . Inicialmente, el coeficiente se determina igual a . Si ampliamos , entonces
Reemplazando , esta ecuación toma la forma
similar a la ecuación ( 1 ). En este caso, el coeficiente th , por definición , es igual a , por lo que el grado será menor que el grado . El procedimiento se repite hasta que el grado sea menor que el grado , lo que significará que el siguiente es igual a él [3] .
EjemploSea y . Para polinomios dados, la división de columnas por se puede escribir como
De este modo,
es decir, el polinomio es un cociente y a es el resto.
En 1972, Malte Zieveking propuso un algoritmo para encontrar una solución a una ecuación dada y [5] . En 1974 , Kong Xiangzhong mostró que para , el algoritmo es una iteración del método de Newton para [6] . Con este enfoque, la iteración toma la forma
Donde denota la derivada de la función en el punto . Para evaluar la precisión del algoritmo, se puede estimar la diferencia
de donde se sigue que si es divisible por (lo que equivale a que los primeros coeficientes estén bien definidos), entonces será divisible por . Así, dada la condición inicial , cada iteración duplica el número de coeficientes definidos con precisión . Por lo tanto, las iteraciones son suficientes para el cálculo . La aplicación de la transformada rápida de Fourier a la multiplicación de polinomios en la fórmula anterior conduce al tiempo de ejecución final , lo que mejora significativamente la estimación para la multiplicación larga habitual [7] .
EjemploSea y . Debido a ( 4 ), es necesario encontrar . El polinomio inverso se busca de la siguiente manera:
Debido a las propiedades del método de Newton, los primeros coeficientes se determinan correctamente. Dado que los cálculos adicionales se realizan en módulo , los coeficientes a potencias más altas pueden descartarse. De aquí
en virtud del cual .
Para evaluar la efectividad de varios métodos, se utiliza la complejidad del circuito aritmético : el número total de operaciones de suma, multiplicación, resta y división sobre el campo de números complejos que deben realizarse durante la operación del algoritmo. También se estima el número de pasos paralelos requeridos para la implementación multiprocesador del algoritmo, asumiendo que cada procesador en cualquier paso no puede realizar más de una operación [7] .
Cada iteración del algoritmo de división consiste en restar el desplazamiento por alguna cantidad de , lo que se puede hacer en . Dado que el grado , inicialmente igual a , disminuye hasta que se vuelve menor que , el tiempo total de ejecución del algoritmo se puede estimar como , donde [2] .