数值线性代数:Arnoldi求解特征值/特征向量

线性方程组求解最小二乘法特征值/特征向量求解是(数值)线性代数的主要研究内容。

在力学、气象学、电磁学、金融等学科中,许多问题最终都归结为特征值、特征向量的求解。

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}是对应的广义特征向量。

\boldsymbol{Q}\in \mathbb{C}^{n\times n},满足\boldsymbol{Q}^{H}\boldsymbol{Q}=\boldsymbol{Q}\boldsymbol{Q}^{H}=\boldsymbol{I},则称\boldsymbol{Q}为酉矩阵。

定义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}

Schur分解定理:设\boldsymbol{A}\in \mathbb{C}^{n\times n},则存在酉矩阵\boldsymbol{U}\in \mathbb{C}^{n\times n},使得

\boldsymbol{U}^{H}\boldsymbol{A}\boldsymbol{U}=\boldsymbol{T}

其中,\boldsymbol{T}是上三角阵。

实Schur分解:设\boldsymbol{A}\in \mathbb{R}^{n\times n},则存在正交矩阵\boldsymbol{Q}\in \mathbb{R}^{n\times n},使得

\boldsymbol{Q}^{T}\boldsymbol{A}\boldsymbol{Q}=\begin{pmatrix} \boldsymbol{R}_{11} & \boldsymbol{R}_{12} & \cdots & \boldsymbol{R}_{1m}\\ & \boldsymbol{R}_{22}& \cdots & \boldsymbol{R}_{2m}\\ & & \ddots & \vdots \\ & & & \boldsymbol{R}_{mm} \end{pmatrix}

其中,\boldsymbol{R}_{ii}是实数,或者是一个具有一对复共轭特征值的2阶仿真。

为了叙述方便,本文就标准特征值问题进行叙述,而不讨论广义特征值问题。

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

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}

对于k+1, 设

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

其中\boldsymbol{\tilde{V}}=\left ( \boldsymbol{V},\boldsymbol{v}_{k+1} \right )\in \mathbb{C}^{n\times \left (k+1 \right ) }\mathbf{\tilde{H}}=\begin{pmatrix} \boldsymbol{H} & \mathbf{h}_{2}\\ \mathbf{h}_{1}& h_{3} \end{pmatrix}\in \mathbb{C}^{\left (k+1 \right )\times \left (k+1 \right ) }\boldsymbol{\tilde{f}}\in \mathbb{C}^{n }\boldsymbol{\tilde{V}}^{H}\boldsymbol{\tilde{f}}=0e_{k+1}^{T}=\left ( 0,0,\cdots,0,1 \right )\in \mathbb{C}^{k+1},则有

\left\{\begin{matrix} \boldsymbol{A}\boldsymbol{\tilde{V}}=\left ( \boldsymbol{A}\boldsymbol{V},\boldsymbol{A}\boldsymbol{v}_{k+1} \right )\\ \boldsymbol{\tilde{V}}\boldsymbol{\tilde{H}}=\left ( \boldsymbol{V},\boldsymbol{v}_{k+1} \right ) \begin{pmatrix} \boldsymbol{H} & \boldsymbol{h}_{2}\\ \boldsymbol{h}_{1}& h_{3} \end{pmatrix} \end{matrix}\right.\Rightarrow \left\{\begin{matrix} \boldsymbol{A}\boldsymbol{V}=\boldsymbol{V}\boldsymbol{H}+\boldsymbol{v}_{k+1}\boldsymbol{h}_{1}\\ \boldsymbol{A}\boldsymbol{v}_{k+1}=\boldsymbol{V}\boldsymbol{h}_{2}+\boldsymbol{v}_{k+1}h_{3}+\boldsymbol{\tilde{f}} \end{matrix}\right.

若取\boldsymbol{v}_{k+1}=\frac{\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|},则有

\left\{\begin{matrix} \boldsymbol{h}_{1}=\left \| \mathbf{f} \right \|\boldsymbol{e}_{k}^{T} \\ \boldsymbol{h}_{2}=\frac{\boldsymbol{V}^{H}\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|}\\ h_{3}=\frac{\boldsymbol{f}^{H}\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|^{2}}\end{matrix}\right.   ,   \left\{\begin{matrix} \boldsymbol{\tilde{V}}=\left ( \boldsymbol{V}, \frac{\boldsymbol{f}}{ \left \| \boldsymbol{f} \right \| }\right )\\ \boldsymbol{\tilde{H}}=\begin{pmatrix} \boldsymbol{H} &\frac{\boldsymbol{V}^{H}\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|} \\ \left \| \mathbf{f} \right \|\boldsymbol{e}_{k}^{T} &\frac{\boldsymbol{f}^{H}\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|^{2}} \end{pmatrix}\\ \boldsymbol{\tilde{f}}= \frac{\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|}-\boldsymbol{V}\frac{\boldsymbol{V}^{H}\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|}-\frac{\boldsymbol{f}^{H}\boldsymbol{A}\boldsymbol{f}}{\left \| \boldsymbol{f} \right \|^{3}}\boldsymbol{f}\end{matrix}\right.

另外可以看出\boldsymbol{v}_{k+1}=\frac{\boldsymbol{A}\boldsymbol{v}_{k}-\boldsymbol{V}\boldsymbol{h}\left ( :,k \right )}{\left \| \boldsymbol{f} \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}^{H}\boldsymbol{V}=\boldsymbol{I},也就是说在矩阵\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}_{1}的函数,可以通过不断选取新的初始向量\boldsymbol{v}_{i}^{new}=\boldsymbol{A}\boldsymbol{v}_{k+1},迭代Arnoldi过程p次来强迫\boldsymbol{f}\rightarrow \mathbf{0},并且给出了收敛性证明。

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

对于得到的\boldsymbol{H}_{k+p},需要施加p次带偏移的QR分解,以剔除不想要的特征值/特征向量。这实际上就是ARPACK使用的IRAM(Implicit Restarted Arnoldi Method))算法。

参考书籍

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

猜你喜欢

转载自blog.csdn.net/qq_26221775/article/details/131690666