|
这道题 Mark 一下, 循环矩阵 $A$ 与 $x$ 相乘的算法复杂度可以为 $O(N\log N)$, 其中 $A\in K^{N\times N}$.
记 $A =(a_{i,N-j})_{N\times N}$ 为循环矩阵, 即 $a_k:=a_{l,l+k}$ 为与 $l$ 无关的定值. 记
\[
\begin{pmatrix}\mathbf 0^T&1\\I_{N-1}&\mathbf 0\end{pmatrix}.
\]
注意到
\[
Z^k=\begin{pmatrix}\mathbf 0&I_l\\I_{N-l}&\mathbf 0\end{pmatrix},\quad k\equiv l\mod N.
\]
从而 $A=\sum_{k=0}^{N-1}a_kZ^k=:p(Z)$.
由于 $Z$ 的特征值为 $\{e^{2k\pi i/N}\}_{k=0}^{N-1}:=\{\zeta_N^k\}_{k=0}^{N-1}$, 其中 $\zeta_N^k$ 对应的特征向量为
\[
v^k=(\zeta_N^{0\cdot k},\zeta_N^{-k},\ldots,\zeta_N^{-(N-1)k}).
\]
故求得 $Av^k=p(\zeta_N^k)v^k$.
记 $Q=(v^1\mid v^2\mid\cdots\mid v^{N-1})$ 为对角化矩阵, 注意到 $\hat x=Qx$ 无非 $x$ 的离散 Fourier 变换, 故
\begin{align*}
&\,y=Ax\\
\Leftrightarrow&\,Qy=\mathrm{diag}(p(\zeta_N^0),\ldots,p(\zeta_N^{N-1}))\cdot Q x\\
\Leftrightarrow&\,(\hat y_0,\hat y_1,\ldots,\hat y_{N-1})=(p(\zeta_N^0)\hat x_0,p(\zeta_N^1)\hat x_1,\ldots,p(\zeta_N^{N-1})\hat x_{N-1}).
\end{align*}
算法复杂度即 $N$ 加上两个 FFT.
|
|