ARPACK特征值求解分析

线性方程组求解特征值求解是(数值)线性代数的主要研究内容。力学、电磁等许多问题,最终都可以归结为特征值、特征向量的求解。

ARPACK使用IRAM(Implicit Restarted Arnoldi Method)求解大规模系数矩阵的部分特征值与特征向量。了解或者熟悉IRAM算法,必定有助于更好地使用ARPACK中相关特征值求解函数。

本文拟就ARPACK中特征值求解的IRAM算法进行分析,希望对从事相关研究的朋友们有所帮助。

注1:限于研究水平,分析难免不当,欢迎批评指正。

零、预修

对于n阶级复矩阵\boldsymbol{A}\in \mathbb{C}^{n\times n},若存在n阶向量\boldsymbol{x}\in \mathbb{C}^{n}与标量\lambda \in \mathbb{C}^{1},满足\boldsymbol{\mathbf{A}}\boldsymbol{\mathbf{x}}=\lambda \boldsymbol{x},则称\lambda是矩阵\boldsymbol{A}的特征值,\boldsymbol{x}是对应的特征向量。

更一般地,若对于n阶级复矩阵\boldsymbol{A}\in \mathbb{C}^{n\times n}\boldsymbol{B}\in \mathbb{C}^{n\times n},若存在n阶向量\boldsymbol{x}\in \mathbb{C}^{n}与标量\lambda \in \mathbb{C}^{1},满足\boldsymbol{\mathbf{A}}\boldsymbol{\mathbf{x}}=\lambda\boldsymbol{B} \boldsymbol{x},则称\lambda是矩阵\boldsymbol{A}的广义特征值,\boldsymbol{x}是对应的广义特征向量。

定义Hessenberg矩阵\boldsymbol{H}

\boldsymbol{H}=\begin{pmatrix} h_{1,1} & h_{1,2} & \cdots & h_{1,k}\\ h _{2,1} & h_{2,2} & \cdots &h_{2,k} \\ 0& \ddots& \ddots &\vdots \\ 0& 0 & h_{k,k-1}& h _{k,k} \end{pmatrix}

为了叙述方便,本文以一般特征值问题进行叙述,而不讨论广义特征值。

一、大型稀疏矩阵特征值算法

1.1 Lancos算法

1.2 Arnoldi算法

Arnoldi在1951年发表的文章中提出了一种获取大型稀疏矩阵的部分特征值、特征向量的方法。在这种方法中,通过Ritz\Galerkin余量法,将矩阵\boldsymbol{u}约化为低阶Hessenberg矩阵,进而求解该Hessenberg矩阵的特征值与特征向量,用以近似源矩阵\boldsymbol{u}部分特征值、特征向量,即

\left [ \kappa _{i} \right ]\left ( \lambda \boldsymbol{I}-\boldsymbol{u} \right )\left [ k_{i} \right ]\boldsymbol{c}=0

上式也可以写作

\boldsymbol{A}\boldsymbol{V}=\boldsymbol{V}\boldsymbol{H}+\boldsymbol{f}\boldsymbol{e}_{k}^{T}

其中,\boldsymbol{V}=\left ( \boldsymbol{v}_{1}, \boldsymbol{v}_{2},\cdots ,\boldsymbol{v}_{k} \right )\in \mathbb{C}^{n\times k }\boldsymbol{V}^{H}\boldsymbol{V}=\mathbf{I}\boldsymbol{H}=h_{i,j}\in \mathbb{C}^{k\times k }\boldsymbol{f}\in \mathbb{C}^{n }\boldsymbol{V}^{H} \mathbf{f}=\mathbf{0}e_{k}^{T}=\left ( 0,0,\cdots,0,1 \right )\in \mathbb{C}^{k}

即有,

\begin{matrix} \boldsymbol{v}_{i}^{T}\boldsymbol{v}_{j}=0, i\neq j, i\in \left [ 1,k \right ],j\in \left [ 1,k \right ]\\ \boldsymbol{v}_{i}^{T}\boldsymbol{v}_{i}=1, j\in \left [ 1,k \right ]\\ \boldsymbol{A}\boldsymbol{v}_{j}=\sum_{i=1}^{i=j}h_{i,j}\boldsymbol{v}_{i}+v_{j+1}h_{j+1,j}\\ \\ \end{matrix}

由此,可推出

\begin{matrix} h_{i,j}=\frac{\boldsymbol{v}_{i}^{T}\boldsymbol{A}\mathbf{v}_{j}}{\boldsymbol{v}_{i}^{T}\boldsymbol{v}_{i}}, i\in \left [ 1,j \right ]\\ h_{j+1,j}\mathbf{v}_{j+1}=\boldsymbol{A}\boldsymbol{v}_{j}-\sum_{i=1}^{i=j}h_{i,j}\boldsymbol{v}_{i}\\ \\ \\ \end{matrix}

若取h_{j+1,j}=\left \| \boldsymbol{A}\boldsymbol{v}_{j}-\sum_{i=1}^{i=j}h_{i,j}\boldsymbol{v}_{i} \right \|,则有\mathbf{v}_{j+1}=\frac{\boldsymbol{A}\boldsymbol{v}_{j}-\sum_{i=1}^{i=j}h_{i,j}\boldsymbol{v}_{i}}{\left \| \boldsymbol{A}\boldsymbol{v}_{j}-\sum_{i=1}^{i=j}h_{i,j}\boldsymbol{v}_{i} \right \|}

从中可以看出,\boldsymbol{V}=\left ( \boldsymbol{v}_{1}, \boldsymbol{v}_{2},\cdots ,\boldsymbol{v}_{k} \right )实际上就是Krylov子空间\boldsymbol{K}\left ( \boldsymbol{A},\mathbf{v}_{1},k \right )=\left ( \mathbf{v}_{1} ,\boldsymbol{A}\mathbf{v}_{1},\boldsymbol{A}^{2}\mathbf{v}_{1},\cdots ,\boldsymbol{A}^{k-1}\mathbf{v}_{1}\right )的一组标准正交基。

然而,在实际数值计算过程中,由于计算精度等问题,通常很难保证\boldsymbol{v}_{j+1}^{T}\boldsymbol{v}_{i}=0,j\in \left [ 1,k \right ], i\in \left [ 1,j \right ],也就是说矩阵计算矩阵\boldsymbol{V}=\left ( \boldsymbol{v}_{1}, \boldsymbol{v}_{2},\cdots ,\boldsymbol{v}_{k} \right )的过程中,存在正交性丢失的问题。

针对此问题,Sorensen在1992的论文中提出了一种称之IRAM(Implicit Restarted Arnoldi Method)的算法。Sorensen认为误差\boldsymbol{f}实际上是初始向量\boldsymbol{v}_{i}的函数,可以通过不断选取新的初始向量\boldsymbol{v}_{i}^{new}=\boldsymbol{A}\boldsymbol{v}_{k+1},迭代Arnoldi过程p次来强迫\boldsymbol{f}\rightarrow \mathbf{0},并且给出了收敛性证明。同时对于得到的\boldsymbol{H}_{k+p},可以施加了带偏移的QR分解,用以剔除不想要的特征值。这实际上就是ARPACK使用的算法。

参考书籍

Gene H. Golub. Matrix Computations.

徐树方. 数值线性代数. 北京大学出版社, 2013.

参考文献

Arnoldi W E .The principle of minimized iterations in the solution of the matrix eigenvalue problem[J].Quarterly of Applied Mathematics, 1951, 9(1).DOI:10.1093/qjmam/4.4.466.

D,C,Sorensen.Implicit Application of Polynomial Filters in a k-Step Arnoldi Method[J].Siam Journal on Matrix Analysis & Applications, 1992.DOI:10.1137/0613025.

Burrus C S , Cox S J , Radke R J .A Matlab Implementation of the Implicitly Restarted Arnoldi Method for Solving Large-Scale Eigenvalue Problems[J]. 2000.

R.B. Lehoucq, Analysis and Implementation of an Implicitly Restarted Arnoldi Iteration", Rice University Technical Report TR95-13, Department of Computational and Applied Mathematics.

网络资料

ARPACKhttps://github.com/opencollab/arpack-ng

你可能感兴趣的:(CAx,算法)