「杂」循环矩阵与傅里叶变换

循环矩阵 \(A\) 大概长这样:

\[A = \begin{pmatrix} a_0 & a_1 & \dots & a_{n-1} \\ a_{n-1} & a_0 & \dots & a_{n-2} \\ \vdots & \vdots & \ddots & \vdots \\ a_1 & a_2 & \dots & a_0 \\ \end{pmatrix} \\ \]

如果记矩阵 \(E\)

\[E = \begin{pmatrix} 0 & 1 & 0 & \dots & 0 \\ 0 & 0 & 1 & \dots & 0 \\ \vdots &\vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \dots & 1 \\ 1 & 0 & 0 & \dots & 0 \\ \end{pmatrix} \\ \]

\(A = a_0I + a_1E + a_2E^2 + \dots + a_{n-1}E^{n-1}\)

由于 \(E^n = 1\),可以将 \(E\) 当作 \(n\) 阶形式变元。这解释了为什么循环矩阵的乘法等价于循环卷积。

据某位相关人士口胡,循环矩阵和什么 “线性非时变系统” 有关。

听到这个名词的瞬间,我就放弃了思考。


考虑 \(\sum_{i=0}^{n-1}\omega_n^i = 0\)

如果记向量 \(v_i = [\omega_n^{0\times i},\omega_n^{1\times i},\dots,\omega_n^{(n-1)\times i}]\),则上式又可描述成 \(v_i\cdot v_j = [i = j]\times n\)

注意复数向量的点积要取共轭,因此 \(v_i\cdot v_j = \sum_k w_{n}^{(i-j)\times k}\)

考虑连续情况。记 \(f_w(t) = e^{iwt}\),则函数点积 \(f_{w_1}\cdot f_{w_2} = [w_1 = w_2]\times 2\pi\)

这里函数点积定义成 \(\int_{0}^{2\pi}f_{w_1}(t)\overline{f}_{w_2}(t)dt = \int_{0}^{2\pi}e^{i(w_1-w_2)t}dt\)

考虑将函数点积展开成实部虚部,还可以利用三角函数证明(这里要求 \(w\in N_+\))。

这些都在说明 正交性


接下来再考虑矩阵 \(V\)

\[V = \begin{pmatrix} \omega^{0\times 0}_n & \omega^{0\times 1}_n & \dots & \omega^{0\times (n-1)}_n \\ \omega^{1\times 0}_n & \omega^{1\times 1}_n & \dots & \omega^{1\times (n-1)}_n \\ \vdots & \vdots & \ddots & \vdots \\ \omega^{(n-1)\times 0}_n & \omega^{(n-1)\times 1}_n & \dots & \omega^{(n-1)\times (n-1)}_n \\ \end{pmatrix} \]

上文已经说明了 \(\{v_i\}\) 的正交性,即 \(v_0, v_1, \dots, v_{n-1}\) 构成一组 \(\mathbb C^n\) 的正交基(并不是规范正交基,模长为 \(\sqrt n\))。

那么它的逆矩阵也就呼之欲出了:

\[V^{-1} = \frac{1}{n} \begin{pmatrix} \omega^{-0\times 0}_n & \omega^{-0\times 1}_n & \dots & \omega^{-0\times (n-1)}_n \\ \omega^{-1\times 0}_n & \omega^{-1\times 1}_n & \dots & \omega^{-1\times (n-1)}_n \\ \vdots & \vdots & \ddots & \vdots \\ \omega^{-(n-1)\times 0}_n & \omega^{-(n-1)\times 1}_n & \dots & \omega^{-(n-1)\times (n-1)}_n \\ \end{pmatrix} \]

所以这还是涉及到 正交性


接下来瞎扯淡一些东西。可以略过不看

据某位相关人士表示,广义的 “傅里叶变换” 其实分为 4 种:FT、FS、DTFT、DFT。

我自己揣摩了一下,大概这 4 种表达了不同程度的离散与连续。

计算机当然只能用最离散的 DFT。

为什么 DFT 一定要得是循环卷积而不能直接做线性卷积?

感性上说线性卷积其实就是周期无穷大的循环卷积(有点像 DTFT?我不太清楚这套理论),然而不可能取无穷个点。

至于为什么必然会循环,这似乎取决于 \(e^{iwt}\) 本身的性质。也不是很懂。


回到循环矩阵。

根据一开始的分解,若 \(E\) 的特征值为 \(\lambda\),则 \(A\) 的特征值为 \(f(\lambda)\)

注意 \(E\) 的特征多项式为 \(\lambda^n - 1 = 0\)

我们得到:循环矩阵的特征值为 \(f(\omega_{n}^i)\)(即 DFT 的结果)。

事实上,由于 \(A\) 的特征值互不相同,它可对角化。如果记 \(D\)

\[D = \begin{pmatrix} f(\omega^0_n) & 0 & \dots & 0 \\ 0 & f(\omega^1_n) & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & f(\omega^{n-1}_n) \\ \end{pmatrix} \\ \]

则会有 \(A = VDV^{-1}\)\(V\) 的定义参考上文)。

注意到所有循环矩阵共用同一组特征向量,由此可以加速矩阵乘法(即 DFT 简化循环卷积的原理)。


考虑循环矩阵 \(A\) 的行列式 \(\det(A) = \prod \lambda_i = \prod f(\omega_n^i)\)

如果可以 DFT 当然最好,但是在模意义下不一定存在 \(n\) 次单位根。

考虑引入结式

\(f(x) = a_0x^n + a_1x^{n-1} + \dots + a_n\)\(g(x) = b_0x^m + b_1x^{m-1} + \dots + b_m\)

则结式 \(R(f, g)\) 定义为如下 \(n + m\) 阶行列式:

img

懒得写了 直接复制了百科的图片。

如果设 \(f(x)\) 的根为 \(\alpha_1,\alpha_2,\dots,\alpha_n\)\(g(x)\) 的根为 \(\beta_1, \beta_2, \dots, \beta_m\),另一个等价的定义:

\[R(f, g) = a_0^m\prod_{i=1}^{n} g(\alpha_i) = a_0^mb_0^n\prod_{i=1}^{n}\prod_{j=1}^{m}(\alpha_i - \beta_j) \]

至于为什么等价,百科里也啥也不写(屑百度)。

此时你已经可以惊讶地发现 \(R(x^n - 1, f)\) 就是 \(\det(A)\)

考虑怎么计算 自然不会按定义算行列式

首先有 \(R(f, g) = (-1)^{nm}R(g, f)\)

\(f_1 = f/a_0\) 为首一多项式,则 \(R(f, g) = a_0^mR(f_1, g)\)

注意到 \(f_1(\alpha_i) = 0\),则 \(R(f_1, g) = R(f_1, g + f_1\times p) = (-1)^{n'm'}R(g\bmod f_1, f_1)\)

特别地,\(R(0, g) = [m = 0]\)

然后就可以跑多项式辗转相除。

结式最一般的还是用来判断两个多项式是否有公因式,以及多项式的重根问题。


当然,可以从抽代的角度理解 “卷积”。这一方面已经有丰富的结果(和一道毒瘤题目 https://loj.ac/p/548 )。

更深入的内容在这里就咕且不提。

posted @ 2020-12-13 12:00  Tiw_Air_OAO  阅读(1136)  评论(0编辑  收藏  举报