代数特征值问题是继线性方程组求解和最小二乘法之后数值线性代数中的第三个大问题.我们首先给出关于特征值问题的一些一般性的结论,随后在本章和下一章分别讨论非对称矩阵的特征值问题及对称矩阵的特征值问题.
矩阵的特征值是其特征多项式
的
个根.这些根的集合称为矩阵
的谱,记为
.
若,则满足
的非零向量
称为
的(右)特征向量,满足
的非零向量
称为左特征向量.
以下是一些关于矩阵分解的结论,其证明可参考一般的线性代数教材,如[1][2].
在之后的讨论中我们更多地采用酉相似变换 (或正交相似变换) 决定矩阵的特征值,这是由于酉矩阵 (或正交矩阵)具有好的条件数.事实上
而
退化矩阵的Jordan块结构难以从数值上确定,这是因为退化矩阵 (即不能通过相似变换化为对角形的矩阵,也即Jordan标准型中包含高于一阶的Jordan块的矩阵) 构成的集合在中是零测度的,很小的数值扰动就可能造成矩阵块结构很大的变化.幸好我们通常不须通过数值方法确定其Jordan块结构,而在精确线性代数中则有其他方法来确定.
Galois理论告诉我们在时,矩阵特征值的计算只能是迭代的.因此,我们需要扰动理论来考虑近似特征值和不变子空间.
我们将在之后的"带位移算法"中看到Gerschgorin的应用.
以上结论为我们选取正交变换而非一般的相似变换提供了说明.
关于重特征值及不变子空间的扰动理论有以下结果:
以上有关结论的证明,可参考[3].
从本节起我们将导出特征值问题的最有效的算法:迭代,并给出其实用形式.
假设可对角化,且
其中,
,
.给出一单位向量
,幂法产生如下序列
:
只要
在
方向的分量不为
(实用中常通过预先估计保证该分量较大),则容易证明
幂法的直接推广可用来计算高维的不变子空间.令是一选定整数
.给定具有正交列的
矩阵
,正交迭代法产生以下的一列矩阵
:
注意到若
,这就是幂法,且序列
正是幂法当初值为
时所产生的向量序列.
可以证明,在合理的假设下,由以上算法产生的子空间按
收敛到前
个特征值对应的不变子空间.
假设正交迭代中,且矩阵
的特征值满足
.
有Schur分解
并记
,
.若
从而有
定义的矩阵
收敛到上三角阵.于是,可以说,只要初始阵
不是退化阵,则正交迭代法就能算出Schur分解.
注:两同维子空间的距离定义为向两子空间分别做正交投射的线性算子的距离:
可以证明,对于
中任意同维子空间
与
,有
上式当
时左边等号成立,当
时右边等号成立.
考虑怎样从前一个阵直接算出
,就产生了如下的
迭代算法:
一方面,从正交迭代的步骤以及的定义我们有
另一方面,
这样,先计算
的
分解,然后再将两个因子按逆序乘起来就决定了
.这就是基本的
迭代每一算法步骤的内容.
以上算法每一步迭代计算量为
,而且严格下三角的元素按照线性速度收敛(消去).但这些困难可以通过对算法的改进克服.
我们将通过两方面的努力对分解进行加速.粗略地说,一方面通过预先进行Hessenberg分解使之后的每步迭代只有
计算量,另一方面通过位移迭代策略使收敛速度具有平方量级.这将分别在之后两节加以介绍.
由于大部分特征值和不变子空间问题只涉及实数据,我们将通过迭代化矩阵为实Schur型.
设我们合理选取正交阵使
是上Hessenberg阵,则以后每步迭代只需
个Givens旋转依次消去
,从而实现
分解,而计算
也只要
次Givens右乘,从而一次迭代计算量仅约为
flop.
接下来说明如何计算Hessenberg分解:
其中
.我们的做法是通过一系列Householder变换
,其中
的作用是将第
列在次对角元以下的元素都化为
.
这一算法需要个flop.若要显式计算
,需附加
个flop.第
个Householder向量可存放在
中.
除利用Householder变换将其化为Hessenberg型外,也可通过非正交的Gauss变换或其他线性变换将其化为友阵型等,但计算特性可能很差,通常并不采用.
不失一般性地,我们可以假定Hessenberg迭代中每个Hessenberg阵
是不可约的,即其次对角元素不为
.否则的话,在某一步我们有
其中
为
方阵,其中
,于是问题变成了关于
和
的特征值问题,这一过程称为解耦.
实际中,若的次对角元素充分小,我们就进行解耦.例如,在Eispack中如果
(其中
为小常数),就把
断定为
.这样做的合理性在于整个矩阵已有了
量级的舍入误差.
以下讨论迭代中的位移加速策略.
令,考虑如下迭代
标量
称为位移.若
在迭代过程中固定,并对特征值
排序
则
中第
个次对角元素以速率
收敛于
.特别地,若
比其他特征值更靠近
,则元素
将会很快变为
.如果用特征值作位移
,则一步迭代就能将矩阵降阶.
实用中,我们会随时参考有关新的 信息改变
.由Gerschgorin定理,可认为
是沿对角线的比较好的近似特征值.这样,我们每次取
,进行单步位移迭代.
若元素收敛为
,则其收敛速度很可能是二次的.
若迭代时
的两特征值
为复数,则
不能近似代替其特征值做迭代.但我们可以逐次应用
做位移量进行两次迭代:
于是
注意到
为实矩阵:
其中,
这样,我们可以进行如下计算得到
:
但第一步计算量是的,因而并非实用.然而,借助下述定理,我们可以将其降至
.
如果,则
□
以上定理表明,若和
都是不可约上Hessenberg阵,且
和
第一列相同,则
和
"本质上"相等,即
于是我们每步迭代采用以下步骤:
这样,我们得到和
都是Hessenberg阵,且
,由隐式Q定理知
与
本质上相等.
由隐式确定
首先是Francis(1961)[4]提出的,我们称之为Francis
步.完整的一个Francis
步需要
个flop,如果要把
显式计算成一个正交阵,则还需额外
个flop.
首先计算Hessenberg归约,其中
.
然后进行以下步骤,直到:
令所有满足的次对角元素为
,找到最大的非负
和最小的非负
使得
其中
是拟上三角阵且
是不可约的.
最后,将中所有特征值为实的
的对角块化为上三角,如有必要累积正交变换相似矩阵.
如需计算和
,此算法需要
个flop.如只需算特征值,则只需
个flop.这种估计是基于如下经验:平均每做一次低阶
或
矩阵解耦,仅需约两次Francis迭代.
以下考虑算法的舍入性质.计算得到的实Schur型
正交相似于靠近
的矩阵,即
,其中
且
.求得的
几乎是正交的:
,其中
.
一旦实Schur分解已算出,几个重要的不变子空间问题就能解决.
逆迭代就是应用到上的幂方法.只要
比其他特征值更靠近
,则只要
在特征向量
方向上的分量不为
,则
含
方向成分就非常多.以上迭代终止的条件是只要余量
满足
,其中
为量级为
的常数.
逆迭代可以与算法一起用.在计算得
(Hessenberg归约)及
的特征值
后,令
,
产生一个向量
使
.随后令
即相应于
的特征向量.
我们只需个flop就能得到
的分解矩阵,且一般只需一次迭代就能产生一个足够近似的特征向量.
实Schur分解可给出不变子空间的信息.如果
且
,则
的前
列张成一个与
相对应的唯一不变子空间.但对于指定的若干特征值,我们需要一种方法来计算正交矩阵
使得
是特征值按适当顺序排列的拟上三角阵.
以的情形来说明我们的算法.设
注意到
其中
.令
是Givens变换使
的第2个分量为
.记
,则
当的对角线上有
阶块时,变换变得稍微复杂,但没有本质的困难,此处不详细给出.可参见[5][6].
通过进行实Schur分解来计算不变子空间是非常稳定的.
在得到矩阵的实Schur标准型之后,可以通过形如的相似变换化为对角块形,其中
,
为适当分划,
满足
的Sylvester方程组.
Bartels和Stewart (1972)[7]设计了求解Sylvester方程
的算法,其中
,
是给定的拟上三角阵且无公共特征值,
.
令,
按列分块.如果
,则通过比较各列得到
从而若已知
,则我们可解出拟三角阵系统
得到
.若
,则通过解
方程组
同时求得
和
,上式中
.按照
重新排列可得到一个只用
个flop就可求解的带状方程组.
但要指出,不当的分块可能造成精度丢失.
令和
是两个
矩阵.所有形如
的矩阵集合称为束 (pencil).束的特征值是集
的元素,定义为
若
且
,则
称为
的特征向量.
关于以上的广义特征值,有如下的定理:
运用Bolzano-Weierstrass定理,我们知道有界列有收敛子列,记
.易证明
和
都是酉阵且
和
都是上三角.从等式
即得到关于
的断言.
□
若,
是实矩阵,则对应实Schur分解的下列分解很重要,其证明可参见[8].
计算矩阵对的广义Schur分解的第一步是通过正交变换化
为上Hessenberg型,
为上三角型.
本算法共需个flop.要把
,
明显算出来还要
和
个flop.
在描述迭代时,我们可以假定
是不可约的上Hessenberg矩阵,
为非奇异上三角矩阵.否则,若
,则
从而我们只需要处理两个较小的问题
和
.若
,则通过合适的Givens变换,可以把
的
位置及
化为零,从而实现降阶.
步骤的基本思想是把
,
做如下变换:
其中,
是上Hessenberg型,
是上三角型,
和
是正交阵.我们通过"巧妙的"零追逐技巧并求助于隐式Q定理可以做到这一点.
令 (上Hessenberg型)且令
,其中
,
是
下方
子矩阵的特征值.球Householder矩阵
使
为
的倍数,之后确定一系列Householder阵
,
使
,
分别恢复到上Hessenberg型与上三角型.注意到
与
从而与
有相同的第一列,于是由隐式Q定理,
"本质上"与直接将Francisco
迭代步骤用于
所得为同一矩阵.
该算法共需个flop,累积
和
还需要
和
个flop.
综合以上讨论,我们可以得到类似迭代的
迭代:
本算法约需个flop,这是基于每个特征值约需
次
迭代的经验.
算法的速度不受
秩亏损的影响.
可以证明,在
而
是精确正交阵,
意义下该算法稳定.
[1]高等代数学, 清华大学出版社, 北京, 2004.
[2]The Algebraic Eigenvalue Problem, Clarendon Press, Oxford, UK, 1965.
[3]矩阵计算, 科学出版社, 2001.
[4]The QR Transformation: A Unitary Analogue to the LR Transformation, Parts I and II, Comp. J. 4 (1961), 265-272, 332-345.
[5]An Algorithm for Numerical Determination of the Structure of a General Matrix, BIT 10 (1976), 196-216.
[6]Algorithm 406: HQR3 and EXCHNG: Fortran Subroutines for Calculating and Ordering the Eigenvalues of a Real Upper Hessenberg Matrix, ACM Trans. Math. Soft. 2 (1971).
[7]Solution of the Equation $AX + XB =C$, Comm. ACM 15 (1972), 820-826.
[8]On the Sensitivity of the Eigenvalue Problem $Ax=\lambda Bx$, SIAM J. Num. Anal. 9 (1972), 669-686.