標籤:直接 核心 比較 傅裡葉變換 word amp 相同 http 矩陣
淺談範德蒙德(Vandermonde)方陣的逆矩陣與拉格朗日(Lagrange)插值的關係以及快速傅裡葉變換(FFT)中IDFT的原理
標籤: 行列式 矩陣 線性代數 FFT 拉格朗日插值
只要稍微看過一點線性代數的應該都知道範德蒙德行列式。
\[V(x_0,x_1,\cdots ,x_{n-1})=\begin{bmatrix}{1}&{1}&{\cdots}&{1}\{x_{0}}&{x_{1}}&{\cdots}&{x_{n-1}}\{x_{0}^2}&{x_{1}^2}&{\cdots}&{x_{n-1}^2}\{\vdots}&{\vdots}&{}&{\vdots}\{x_{0}^{n-1}}&{x_{1}^{n-1}}&{\cdots}&{x_{n-1}^{n-1}}\\end{bmatrix} \]
而範德蒙德行列式由於其本身的特殊性,具有通項公式:
\[V(x_0,x_1,\cdots ,x_{n-1})=\prod _{n > i > j \geq 0}(x _{i}-x _{j})\]
我們同樣可以把行列式中的項寫到矩陣中來,即範德蒙德方陣
\[V=\begin{pmatrix}{1}&{1}&{\cdots}&{1}\{x_{0}}&{x_{1}}&{\cdots}&{x_{n-1}}\{x_{0}^2}&{x_{1}^2}&{\cdots}&{x_{n-1}^2}\{\vdots}&{\vdots}&{}&{\vdots}\{x_{0}^{n-1}}&{x_{1}^{n-1}}&{\cdots}&{x_{n-1}^{n-1}}\\end{pmatrix}\]
考慮範德蒙德方陣的逆矩陣,我們可以藉助伴隨矩陣來計算。
對於\(V\)的伴隨矩陣\(V^*\)
\[(V^*)_{ij}=c_{ij}\]
其中\(c_{ij}\)為\(V\)的代數餘子式
有\(V^{-1}={V* \over det(V)}\)
那麼對於每一項,有\((V^{-1})_{ij}={c_{ij} \over det(V)}\)
我們只需要知道每一個代數餘子式其與行列式的商即可。
而然這種方法比較複雜,尤其對於缺失了一行的範德蒙德行列式難以計算,而本文的重點並不在此,如果想找詳細的證明可以去看這篇部落格Vandermonde 矩陣的逆矩陣公式
最後可以得到
\[(V^{-1})_{ij}=(-1)^{j+1}{ \sum\limits_{0 \leq p_1<\cdots < p_{n-j} < n;\ p_1,p_2,\cdots p_{n-j} \ne i} x_{p_1} x_{p_2} \cdots x_{p_{n-j}} \over \prod\limits_{0 \leq k < n;\ k\ne i} (x_k-x_i)} \]
上面的方法太過複雜,接下來我們考慮範德蒙德方陣的實際意義進行思考。
重新審視方陣,發現乘上一個範德蒙德方陣相當於帶進了\(n\)個點進行求值,即
\[\begin{pmatrix}{a_0}\{a_1}\{a_2}\{\vdots}\{a_{n-1}}\\end{pmatrix}\begin{pmatrix}{1}&{1}&{\cdots}&{1}\{x_{0}}&{x_{1}}&{\cdots}&{x_{n-1}}\{x_{0}^2}&{x_{1}^2}&{\cdots}&{x_{n-1}^2}\{\vdots}&{\vdots}&{}&{\vdots}\{x_{0}^{n-1}}&{x_{1}^{n-1}}&{\cdots}&{x_{n-1}^{n-1}}\\end{pmatrix}=\begin{pmatrix}{y_1}\{y_2}\{y_3}\{\vdots}\{y_{n}}\end{pmatrix}\]
相當於有多項式\(f(x)=\sum_{i=0}^{n-1} a_ix^i\),其中\(y_i=f(x_i)\)
乘上範德蒙德方陣相當於帶入\(n\)個點求值,反過來,乘上其逆矩陣就應該是用\(n\)個點插值。
即
\[\begin{pmatrix}{a_0}\{a_1}\{a_2}\{\vdots}\{a_{n-1}}\\end{pmatrix}=\begin{pmatrix}{y_1}\{y_2}\{y_3}\{\vdots}\{y_{n}}\end{pmatrix}\begin{pmatrix}{1}&{1}&{\cdots}&{1}\{x_{0}}&{x_{1}}&{\cdots}&{x_{n-1}}\{x_{0}^2}&{x_{1}^2}&{\cdots}&{x_{n-1}^2}\{\vdots}&{\vdots}&{}&{\vdots}\{x_{0}^{n-1}}&{x_{1}^{n-1}}&{\cdots}&{x_{n-1}^{n-1}}\\end{pmatrix}^{-1} \]
那麼我們考慮拉格朗日插值,有
\[f(x)=\sum_{i}y_i\prod_{j\ne i} {x-x_j \over x_i-x_j} \]
顯然,\((V^{-1})_{ij}\)為\(\prod\limits_{k\ne i} {x-x_k \over x_i-x_k}\)在\(x^{j-1}\)項的係數。
快速傅立葉變換的核心思想也是將係數向量迅速變換為點值向量,再迅速的將點值向量還原成係數向量,其中還原的操作我們稱之為\(IDFT\)。
用\(1\)的\(n\)次複根\(w\),其中\(w_i=w^i\)
在做快速傅立葉變換的時候,我們乘上了一個\(V(w_0,w_1,\cdots,w_{n-1})\)的矩陣。
而在\(IDFT\)時,我們需要乘上\(V(w_0,w_1,\cdots,w_{n-1})^{-1}\),但是在實際應用中,我們會直接乘上$ {1 \over n}V(w_0,w_{-1},\cdots,w_{-n+1}) $。接下來筆者將證明這兩個矩陣是相同的。(當然我們預設n為2的次冪)
\[\prod\limits_{j\ne i} {(x-w^j) \over (w^i-w^j)}={\prod\limits_{j\ne i} (x-w^j) \over \prod\limits_{j\ne i} (w^i-w^j)}\]
不妨令\[G(x)=\prod_{0 \leq j < n} (x-w^j)\]
而\(w^{0},w^1,\cdots,w^{n-1}\)都是1的n次複根,根據代數基本定理,顯然有\[G(x)=x^n-1\]
那麼考慮原式分母\[\prod\limits_{j\ne i} (w^i-w^j) = \lim _{x \to w^i}{G(x) \over {x-w^i}}\]
根據洛必達法則,這個極限的值相當於上下部分求導的商。
\[ \lim _{x \to w^i}{G(x) \over {x-w^i}}=\lim _{x \to w^i} G'(x)=n \times w^{i(n-1)}=n \times w^{-i}\]
原式分子
\[{\prod\limits_{j\ne i} (x-w^j)}={G(x) \over {x-w^i}}={1-x^n \over {w^i-x}}\=w^{-i} \times \begin{pmatrix}{1 \over 1- x w^{-i}}-{x^n \over 1-xw^{-i}}\end{pmatrix}\=w^{-i} \times \begin{pmatrix}{\sum_{j=0}^{\infty} w^{-ij}x^j -\sum_{j=n}^{\infty} w^{-i(j-n)}x^j} \end{pmatrix}\=w^{-i} \times \sum_{j=0}^{n-1} w^{-ij} x^j\]
分子除以分母,得
\[原式={w^{-i} \times \sum\limits_{j=0}^{n-1} w^{-ij} x^j \over n \times w^{-i}}\=\sum_{j=0}^{n-1} {w^{-ij} \over n}x^i\]
對比各項係數,不難得出兩矩陣相同,即
\[\begin{pmatrix}{1}&{1}&{\cdots}&{1}\{w_{0}}&{w_{1}}&{\cdots}&{w_{n-1}}\{w_{0}^2}&{w_{1}^2}&{\cdots}&{w_{n-1}^2}\{\vdots}&{\vdots}&{}&{\vdots}\{w_{0}^{n-1}}&{w_{1}^{n-1}}&{\cdots}&{w_{n-1}^{n-1}}\\end{pmatrix}^{-1}={1 \over n}\begin{pmatrix}{1}&{1}&{\cdots}&{1}\{w_{0}}&{w_{-1}}&{\cdots}&{w_{-n+1}}\{w_{0}^2}&{w_{-1}^2}&{\cdots}&{w_{-n+1}^2}\{\vdots}&{\vdots}&{}&{\vdots}\{w_{0}^{n-1}}&{w_{-1}^{n-1}}&{\cdots}&{w_{-n+1}^{n-1}}\\end{pmatrix}\]
淺談範德蒙德(Vandermonde)方陣的逆矩陣的求法以及快速傅裡葉變換(FFT)中IDFT的原理