En el capítulo anterior sobre la Inverse Number Theoretic Transform, afirmamos que la inversa de la matriz de Vandermonde V(ω) para una raíz k-ésima primitiva de la unidad ω también es una matriz de Vandermonde, dada por k1V(ω−1). Ahora demostraremos este hecho.
Los lectores con menos inclinación matemática pueden saltarse este capítulo sin perderse de nada. No es necesario entender la INTT, siempre y cuando acepten que la matriz inversa que proponemos es válida.
La matriz de Vandermonde se define como una matriz donde cada fila es una progresión geométrica.
La primera fila es la progresión geométrica de ω0 desde (ω0)0 hasta (ω)k−1.
La segunda fila es la progresión geométrica de ω1 desde (ω1)0 hasta (ω1)k−1.
Esto continúa hasta la última fila, que es la progresión geométrica de ωk−1 desde (ωk−1)0 hasta (ωk−1)k−1.
donde a0,a1,...,ak−1 son los coeficientes del polinomio f(x).
Cada fila en el lado izquierdo es el producto interno de la i-ésima fila de la matriz de Vandermonde y el vector a. Por ejemplo, el i-ésimo elemento f(ωi) es
Por lo tanto, las evaluaciones se pueden escribir como
f(ωi)=j=0∑k−1ωijaj
para i∈{0,1,2,...,k−1}.
Nota sobre los índices: En la ecuación anterior, tenemos dos índices. El índice i indica de qué evaluación estamos tratando, y puede tomar los valores 0,1,2,…,k−1. Esto significa que la fórmula anterior no representa solo una ecuación, sino k ecuaciones, una para cada valor de i. Por ejemplo, la notación anterior es una forma abreviada de
El índice j en ωij y aj es un índice de suma y, por lo tanto, es “consumido” por la suma. Debido a que es consumido por la suma, no aparece en el lado izquierdo de la ecuación. La elección de los índices i y j es arbitraria; podríamos haber usado m,n,p,q o cualquier otra letra. En general, para los índices de vectores, es común usar letras del medio del alfabeto.
Ahora queremos encontrar la relación inversa para obtener el vector a a partir del vector y. En otras palabras, queremos calcular a=V−1(ω)⋅y, donde V−1(ω) es la inversa de V(ω).
Nuestra afirmación es que la inversa de la matriz de Vandermonde V(ω) también es una matriz de Vandermonde, dada por k1V(ω−1).
Para ser completamente claros, nuestra afirmación es que
V−1(ω)=k1V(ω−1)
donde ω es una raíz k-ésima primitiva de la unidad.
Si la afirmación es correcta, el vector a se puede calcular de la siguiente manera:
Esta operación se puede escribir como la siguiente suma:
ai=m=0∑k−1k1ω−imf(ωm)
para i∈{0,1,2,...,k−1}.
Por razones pedagógicas, demostraremos nuestra afirmación (que la inversa de la matriz de Vandermonde V(ω) es otra matriz de Vandermonde, dada por k1V(ω−1)) de dos maneras diferentes.
Primero, mostraremos que la multiplicación de matrices de V(ω) y k1V(ω−1) da como resultado la matriz identidadI, es decir,
V(ω)⋅k1V(ω−1)=I
Luego, mostraremos que si primero multiplicamos V(ω) por a para obtener y, y después multiplicamos k1V(ω−1) por V(ω)a, recuperamos a.
Estas dos pruebas son esencialmente la misma, solo que expresadas de dos maneras diferentes.
Prueba de que V(ω)⋅k1V(ω−1)=I
Demostraremos que la multiplicación de matrices de V(ω) con k1V(ω−1) da como resultado la matriz identidad.
La prueba se basa en la propiedad de ortogonalidad de las raíces de la unidad, la cual se expresa como una sumatoria. Por lo tanto, primero escribiremos la multiplicación de matrices en forma de sumatoria para poder usar esta propiedad de ortogonalidad.
La multiplicación V(ω)⋅k1V(ω−1) en notación de índices
Recordemos que la entrada de la matriz de V(ω) en la fila i y la columna m está dada por
ωim
Nota: La numeración de filas y columnas aquí se considera desde 0, no desde 1.
Por ejemplo, la entrada en la fila 1 y la columna 2 de V(ω) es (ω1)2, como se resalta a continuación en rojo:
Por lo tanto, cuando las dos matrices V(ω) y k1V(ω−1) se multiplican, el elemento resultante en la fila i y la columna j se obtiene multiplicando la fila i de V(ω) (rojo) con la columna j de k1V(ω−1) (azul):
Ahora necesitamos mostrar que las entradas Mij son iguales a las de la matriz identidad. Para hacer esto, usamos la ortogonalidad de las raíces de la unidad.
Recordatorio: Ortogonalidad de las raíces de la unidad
En el capítulo sobre la ortogonalidad de las raíces de la unidad, mostramos que
m=0∑k−1(ωm)i−j=⎩⎨⎧k,0,si i≡j(modk),en caso contrario.
Para recapitular, la fórmula anterior nos da el resultado de la sumatoria en dos casos: (1) cuando i≡j y (2) cuando i≡j. Usaremos ambos casos a continuación.
Caso 1: Cuando i≡j
Queremos calcular
Mij=k1m=0∑k−1(ωm)i−j
cuando i≡j. La ortogonalidad de las raíces de la unidad dice que, cuando i≡j,
m=0∑k−1(ωm)i−j=k
Usando este resultado para Mij, tenemos que
Mij=k1m=0∑k−1(ωm)i−j=k1k=1
Por lo tanto, para los términos de la diagonal (como M00,M11,M22,...,M(k−1)(k−1)), tenemos
Mij=1cuando i=j
Caso 2: Cuando i≡j
Ahora queremos calcular
Mij=k1m=0∑k−1(ωm)i−j
cuando i≡j. La ortogonalidad de las raíces de la unidad dice que, cuando i≡j ,
m=0∑k−1(ωm)i−j=0
Usando este resultado para Mij, tenemos
Mij=k1m=0∑k−1(ωm)i−j=k10=0
Por lo tanto, para cualquier término fuera de la diagonal (como M10,M01,M12,…), tenemos Mij=0.
La matriz M
Teniendo en cuenta los casos (1) y (2) anteriores, tenemos que la matriz M=(Mij) es
M=10⋮001⋮0⋯⋯⋱⋯00⋮1
que es exactamente la matriz identidad I. Por lo tanto, las matrices V(ω) y k1V(ω−1) son inversas la una de la otra, porque
V(ω)⋅(k1V(ω−1))=M=I
La multiplicación de matrices de k1V(ω−1) con el vector y devuelve el vector a
Otra manera de demostrar que k1V(ω−1) es la inversa de V(ω) es mostrar que invierte a esta última.
Es decir, si primero aplicamos V(ω) a a para obtener y,
y=V(ω)⋅a
y luego aplicamos k1V(ω−1) a y, recuperamos a:
a=k1V(ω−1)⋅y
Eso es exactamente lo que mostraremos.
Primera transformación: y=V(ω)⋅a
La primera transformación lleva el vector de coeficientes a al vector de evaluaciones y mediante la siguiente operación matricial:
Si podemos demostrar que a=a~, entonces la segunda transformación es la inversa de la primera.
La operación matricial anterior se puede escribir en forma de índices como
a~j=m=0∑k−1k1ω−jmf(ωm)
Ahora sustituimos la expresión de f(ωi) . Recordemos que
f(ωi)=j=0∑k−1ωijaj
donde i es simplemente un índice que podemos reemplazar por m, o cualquier otra letra. Por lo tanto, al reemplazar f(ωm) en el resultado para a~j, tenemos
El término entre paréntesis es exactamente la relación de ortogonalidad:
m=0∑k−1(ωm)i−j=⎩⎨⎧k,0,si i≡j(modk),en caso contrario.
Para continuar la prueba, podríamos estudiar el caso (1), donde i=j, y el caso (2), donde i=j, pero procederemos de manera diferente. Introduciremos un símbolo llamado la delta de Kronecker.
La delta de Kronecker, δij, es un símbolo con 2 índices, i y j en este caso, que es 1 cuando i=j y 0 de lo contrario:
δij={10si i=jsi i=j
La delta de Kronecker se puede entender como las entradas de la matriz identidad.
Usando la delta de Kronecker, podemos escribir la propiedad de ortogonalidad como
m=0∑k−1(ωm)i−j=kδij
Al usar la delta de Kronecker en la expresión de a~j, tenemos
Desarrollando la sumatoria, la expresión anterior se puede escribir como
a~j=δ0ja0+δ1ja1+δ2ja2+...+δ(k−1)jak−1
Por la propiedad de la delta de Kronecker, solo un término en la sumatoria es distinto de cero. Por ejemplo, para j=2, solo δ22 es distinto de cero. Por lo tanto, tenemos