Hankel结构及其快速算法详解
1. 引言
Hankel矩阵是继Toeplitz矩阵之后又一类重要的结构化矩阵,在组合数学、系统辨识、矩问题、数值分析以及信号处理中具有广泛应用。其名字来源于德国数学家赫尔曼·汉克尔(Hermann Hankel)。Hankel矩阵的显著特征是每条反对角线上的元素为常数,即矩阵关于副对角线(从右上到左下)是常数对角线的。这种结构使得它天然与幂级数、矩序列以及有理逼近问题紧密相连。
类似于Toeplitz矩阵,Hankel矩阵也具有低位移秩的结构,从而可以设计出 O(n2)O(n^2)O(n2) 甚至 O(nlogn)O(n \log n)O(nlogn) 的快速算法。本文将从定义、性质出发,介绍典型应用场景,并重点阐述基于FFT、基于与Toeplitz矩阵的变换、以及基于位移结构的快速算法。
2. Hankel矩阵的定义与基本性质
2.1 定义
一个 n×nn \times nn×n 的Hankel矩阵 HnH_nHn 具有如下形式:
Hn=h0h1h2⋯hn−1h1h2h3⋯hnh2h3h4⋯hn+1⋮⋮⋮⋱⋮hn−1hnhn+1⋯h2n−2 H_n = \begin{bmatrix} h_0 & h_1 & h_2 & \cdots & h_{n-1} \\ h_1 & h_2 & h_3 & \cdots & h_n \\ h_2 & h_3 & h_4 & \cdots & h_{n+1} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ h_{n-1} & h_n & h_{n+1} & \cdots & h_{2n-2} \end{bmatrix} Hn= h0h1h2⋮hn−1h1h2h3⋮hnh2h3h4⋮hn+1⋯⋯⋯⋱⋯hn−1hnhn+1⋮h2n−2
即对于任意满足 1≤i,j≤n1 \le i,j \le n1≤i,j≤n 的指标,有 (Hn)i,j=hi+j−2(H_n){i,j} = h{i+j-2}(Hn)i,j=hi+j−2。整个矩阵由 2n−12n-12n−1 个参数 {h0,h1,...,h2n−2}\{h_0, h_1, \dots, h_{2n-2}\}{h0,h1,...,h2n−2} 唯一确定。这些参数通常称为Hankel序列 或矩序列。
2.2 Hankel与Toeplitz的关系
Hankel矩阵与Toeplitz矩阵之间可以通过简单的反转 操作相互转换。定义反转矩阵 JJJ 为副对角线全为1、其余为0的矩阵(即 Ji,j=1J_{i,j}=1Ji,j=1 当 i+j=n+1i+j=n+1i+j=n+1,否则0)。容易验证:
H=J⋅T H = J \cdot T H=J⋅T
其中 TTT 是某个Toeplitz矩阵,而 JJJ 左乘相当于将行顺序上下颠倒(或者右乘将列顺序左右颠倒)。具体地,若取 TTT 为以 (h0,h1,...,hn−1)(h_0, h_1, \dots, h_{n-1})(h0,h1,...,hn−1) 为第一行、(h0,h−1,...,h−(n−1))(h_0, h_{-1}, \dots, h_{-(n-1)})(h0,h−1,...,h−(n−1)) 为第一列的Toeplitz矩阵(其中 h−kh_{-k}h−k 定义为 hkh_{k}hk 的重新排列),则有 H=T⋅JH = T \cdot JH=T⋅J 等关系。因此,任何Hankel矩阵都可以通过左右乘以反转矩阵变成Toeplitz矩阵。这一关系使得Hankel矩阵的快速算法可以直接借鉴Toeplitz的成熟成果。
2.3 Hankel算子与矩问题
在函数空间理论中,Hankel矩阵常被视为Hankel算子在某组基下的矩阵表示。特别地,给定一个形式幂级数(或解析函数)f(z)=∑k=0∞hkzkf(z) = \sum_{k=0}^{\infty} h_k z^kf(z)=∑k=0∞hkzk,其Hankel矩阵 Hn=(hi+j−2)H_n = (h_{i+j-2})Hn=(hi+j−2) 出现在Padé逼近、矩问题以及正交多项式的理论中。序列 {hk}\{h_k\}{hk} 通常被称为矩(moments)。
2.4 位移结构与秩性质
与Toeplitz矩阵类似,Hankel矩阵也满足低位移秩条件。定义移位矩阵 ZZZ(主对角线下第一条次对角线为1),则有:
ZHn−HnZT Z H_n - H_n Z^T ZHn−HnZT
是一个秩至多为2的矩阵。这一性质是设计统一快速算法(如基于位移的Schur算法)的基础。
3. 典型应用
- 系统辨识:在实现理论中,给定脉冲响应序列,系统的Hankel矩阵用于最小实现(Ho-Kalman算法)和平衡降阶。
- 矩问题 :如Hausdorff矩问题、Stieltjes矩问题,Hankel矩阵的正定性对应着存在某个测度使得 hk=∫tkdμ(t)h_k = \int t^k d\mu(t)hk=∫tkdμ(t)。
- Padé逼近:通过Hankel矩阵的奇异值分解可以确定有理逼近的分子分母次数。
- 组合数学:卡特兰数(Catalan numbers)、伯努利数等序列的Hankel矩阵往往具有简单的行列式值(常为1或0),这一性质用于证明组合恒等式。
- 数值线性代数:某些结构化特征值问题(如伴随矩阵、友矩阵)可转化为Hankel矩阵处理。
4. 快速算法
由于Hankel与Toeplitz的紧密关系,其快速算法大多通过先转换为Toeplitz矩阵,再应用Toeplitz的快速求解器实现。下面介绍几种主要思路,复杂度从 O(n2)O(n^2)O(n2) 到 O(nlogn)O(n \log n)O(nlogn) 不等。
4.1 基于反转变换的直接法
给定Hankel系统 Hnx=bH_n \mathbf{x} = \mathbf{b}Hnx=b,定义反转矩阵 JJJ(满足 J2=IJ^2 = IJ2=I)。引入变换:
y=Jx,c=Jb \mathbf{y} = J \mathbf{x}, \quad \mathbf{c} = J \mathbf{b} y=Jx,c=Jb
由 Hn=TnJH_n = T_n JHn=TnJ(选择合适的Toeplitz矩阵 TnT_nTn),原方程化为:
TnJx=b⇒Tny=c T_n J \mathbf{x} = \mathbf{b} \quad \Rightarrow \quad T_n \mathbf{y} = \mathbf{c} TnJx=b⇒Tny=c
于是问题转化为求解Toeplitz系统 Tny=cT_n \mathbf{y} = \mathbf{c}Tny=c。解出 y\mathbf{y}y 后,再通过 x=Jy\mathbf{x} = J \mathbf{y}x=Jy 恢复原解。这里 TnT_nTn 由Hankel序列唯一确定(具体形式请见2.2节)。由于Toeplitz系统的求解已有成熟的Levinson算法 (复杂度 O(n2)O(n^2)O(n2))或循环嵌入+FFT (复杂度 O(nlogn)O(n \log n)O(nlogn)),因此Hankel系统可以直接继承这些快速解法。此方法简单高效,是实际应用中的首选。
4.2 基于FFT的快速Hankel矩阵与向量乘法
在许多迭代方法(如共轭梯度法)中,我们只需要计算Hankel矩阵与向量的乘积 HnvH_n \mathbf{v}Hnv,而不需要直接求解系统。利用Hankel矩阵的Toeplitz表示,可以设计出 O(nlogn)O(n \log n)O(nlogn) 的乘法。
注意 HnH_nHn 可以嵌入一个更大的循环矩阵。令 m≥2n−1m \ge 2n-1m≥2n−1 且为2的幂,定义序列 {h0,h1,...,h2n−2,0,...,0}\{h_0, h_1, \dots, h_{2n-2}, 0, \dots, 0\}{h0,h1,...,h2n−2,0,...,0},构造其对应的循环矩阵 CCC(第一列即为该序列)。那么 HnvH_n \mathbf{v}Hnv 等于 CCC 的一个子矩阵与填充后的 v\mathbf{v}v 的乘积,可以通过FFT快速计算。具体步骤如下:
- 将 v\mathbf{v}v 补零至长度 mmm,得到 vext\mathbf{v}_{\text{ext}}vext。
- 计算 CvextC \mathbf{v}_{\text{ext}}Cvext 利用 FFT:w=IFFT(FFT(c1)⊙FFT(vext))\mathbf{w} = \text{IFFT}( \text{FFT}(\mathbf{c}1) \odot \text{FFT}(\mathbf{v}{\text{ext}}) )w=IFFT(FFT(c1)⊙FFT(vext)),其中 c1\mathbf{c}_1c1 是 CCC 的第一列。
- 从 w\mathbf{w}w 中取出对应 HnvH_n \mathbf{v}Hnv 的位置(通常为前 nnn 个分量)。
复杂度为 O(mlogm)=O(nlogn)O(m \log m) = O(n \log n)O(mlogm)=O(nlogn)。结合共轭梯度法(CGNR等),可以在 O(nlogn)O(n \log n)O(nlogn) 每迭代步的代价下求解Hankel系统。
4.3 基于Berlekamp-Massey的快速算法(适用于特殊情形)
在编码理论(如BCH码和Reed-Solomon码)中,需要求解"广义Hankel系统"------即Toeplitz+Hankel 结构的Key方程。Berlekamp-Massey算法以 O(n2)O(n^2)O(n2) 的复杂度求解,并且与Hankel矩阵的递推性质密切相关。其核心思想是:给定序列的前 2n2n2n 个元素,找出满足线性递归关系的最短线性反馈移位寄存器(LFSR),等价于求解一个Hankel系统的最小范数解。虽然该算法不如通用FFT快,但在整数域或有限域上效率极高。
4.4 位移秩方法:Schur算法
从更统一的视角,Hankel矩阵和Toeplitz矩阵都是低位移秩 矩阵(位移秩≤2)。Schur算法 是一种递归算法,利用矩阵的位移结构依次提取其"位移表示"中的参数,从而得到LU分解或QR分解,整个过程为 O(n2)O(n^2)O(n2)。该算法数值稳定性良好,且易于并行化。针对Hankel矩阵的Schur算法通常需要先构造一个相关的"生成函数",然后通过递推生成Schur参数(也称为反射系数)。
5. 数值稳定性与预处理
Hankel矩阵往往具有较大的条件数,尤其当矩序列增长很快时(例如 hk=k!h_k = k!hk=k!)。直接使用上述快速算法时,必须小心数值稳定性。对于正定的Hankel矩阵(对应测度支撑在实轴上),可以采用Cholesky分解 的快速版本(利用位移结构),得到 O(n2)O(n^2)O(n2) 的稳定算法。对于不定或近奇异的矩阵,预处理共轭梯度法结合基于循环矩阵的预处理子(通过对Hankel序列进行平滑截断)常常是有效选择。
此外,利用快速多极子方法 (FMM)或分层矩阵 (H\mathcal{H}H-matrix)表示也可以逼近Hankel矩阵,实现近乎线性的复杂度,但实现复杂,通常用于非常高维的问题。
6. 推广与类似结构
- 广义Hankel矩阵 :将基 {1,t,t2,... }\{1, t, t^2, \dots\}{1,t,t2,...} 替换为其他多项式序列(如正交多项式),得到的矩阵称为"广义Hankel矩阵",仍具有类似性质。
- 块Hankel矩阵:每个元素是矩阵块,在多变量系统辨识中自然出现,其快速算法可结合块Toeplitz的FFT方法。
- Hankel-Toeplitz矩阵 :形如 H+TH + TH+T 的组合,出现在离散时间系统的控制理论中。可通过位移秩统一处理。
7. 总结
Hankel矩阵以其简洁的反对角常数结构,与Toeplitz矩阵构成了一对"孪生"结构。通过反转变换,我们能够将Hankel系统的求解无缝转化为Toeplitz系统的求解,从而直接利用Levinson算法(O(n2)O(n^2)O(n2))或循环嵌入FFT(O(nlogn)O(n \log n)O(nlogn))等成熟工具。在实际计算中,若矩阵规模适中(n≤103n \le 10^3n≤103),反转+Levinson方法最易实现且稳定;若规模巨大且需要多次矩阵-向量乘法(如迭代法),则应采用基于FFT的快速乘法。
Hankel矩阵不仅是数值线性代数中结构化矩阵的典范,更是连接组合数学、逼近论与系统理论的桥梁。理解其快速算法,不仅有助于解决矩问题与系统实现等具体课题,更能加深对"结构驱动高效计算"这一现代科学计算核心思想的认识。