第8章 矩阵特征值问题计算
8.1 引 言
物理、力学和工程技术中的很多问题在数学上都归结为求矩阵特征值问题。例如,振动问题(大型桥梁或建筑物的振动、机械的振动、电磁振荡等),物理学中某些临界值的确定,这些问题都归结为下述数学问题。
定义1 (1)已知
,则称
,
为
的特征多项式.
的特征方程
(8.1.1)
一般有
个根(实的或复的,重根按重数计算.当
时,
为实系数
次代数方程,其复根共轭成对出现),称为
的特征值.用
表示
的所有特征值的集合,并称之为
的谱集.
(2)设
为
的特征值,相应的齐次方程组
(8.1.2)
的非零解
称为
的对应于
的特征向量.
例1 求
的特征值及特征向量,其中
,
解 矩阵
的特征方程为
,
求得
的特征值为:
.对应的各特征向量是对应齐次方程
,
.
的解.计算得到:
.
下面我们来看几个有关特征值的结论.
定理8.1.1 设
为
的特征值,且
,其中
0,则
(1)
为
特征值(
为非零常数);
(2)
为
的特征值,即
;
(3)
为
的特征值;
(4)设
为非奇异矩阵,那么
且
为
的特征值,即
.
定理8.1.2 设
为
阶矩阵
的特征值,则
(1)
(
是矩阵
的迹);
(2)
.
定理8.1.3 设
,则
.
定理8.1.4 设
为分块上三角阵,即
,
其中每个对角块
均为方阵,则
.
定理8.1.5 设
与
为相似矩阵(即存在非奇异矩阵
使
),则
(1)
与
有相同的特征值;
(2)如果
是
的特征向量,则
是
的特征向量.
定理8.1.5说明,一个矩阵
经过相似变换,则
的特征值不变.
定义8.1.2 设
,如果
有一个重数为
的特征值
且对应于
矩阵
的线性无关的特征向量个数少于
,称
为亏损矩阵.
一个亏损矩阵是一个没有足够特征向量的矩阵,亏损矩阵在理论上和计算上都存在困难.
定理8.1.6(1)
可对角化,即存在非奇异矩阵
使

的充要条件是
具有
个线性无关的特征向量.
(2)如果
有
个(
不同的特征值,则对应的特征向量
线性无关.
定理8.1.7(对称矩阵的正交约化)设
为对称矩阵,则:
(1)
的特征值均为实数;
(2)
有
个线性无关的特征向量;
(3)存在一个正交矩阵
使

且
为
特征值,而
的列向量
为
的对应于
的特征向量.
下面讨论矩阵特征值界的估计.
定义8.1.3 设
.令:
(1)
;
(2)集合
.称复平面上以
为圆心,以
为半径的所有圆盘为
的Gerschgorin圆盘.
定理8.1.8(Gerschgorin圆盘定理)(1)设
,则
的每一个特征值必属于下述某个圆盘之中
.
或者说,
的特征值都在复平面上
个圆盘的并集中.
(2)如果
有
个圆盘组成一个连通的并集
,且
与余下
-
个圆盘是分离的,则
内恰包含
的一个特征值.
证明 只就(1)给出证明,设
为
的特征值,即有
使
.
记
,考虑
的第
个方程,即
,
或
,
于是
,
即
.
这说明,
的每一个特征值必位于
的一个圆盘中,并且相应的特征值
一定位于第
个圆盘中(其中
是对应特征向量
绝对值最大的分量的下标).
利用相似矩阵性质,有地可以获得
的特征值进一步的估计,即适当选取非奇异对角阵
,
并做相似变换
.适当选取
可使某些圆盘半径及连通性发生变化.
例2 估计矩阵

特征值的范围.
解
的3个圆盘为

由定理8.1.8,可知
的3个特征值位于3个圆盘的并集中,由于
是弧立圆盘,所以
内恰好包含
的一个特征值
(为实特征值),即
.
的其他两个特征值
包含在
,
的并集中.
现选取对角阵

做相似变换
.
的3个圆盘为

显然,3个圆盘都是孤立圆盘,所以,每一个圆盘都包含
的一个特征值(为实特征值)且有估计

下面给出理论上有关通过酉相似变换及正交相似变换可以约化一般矩阵
到什么程序的问题.
定理8.1.9(Schur定理) 设
,则存在酉阵
使
(上三角阵)
其中
为
的特征值.
当
时,如果限制用正交相似变换,由于
有复的特征值,
不能用正交相似变换约化为上三角阵.用正交相似变换能将
约化到什么程度呢?
定理8.1.10(实Schur分解) 设
,则存在正交矩阵
使
,
其中对角块
为一阶或二阶方阵,且每一个一阶
是
的实特征值,每个二阶对角块
的两个特征值是
的两个共轭复特征值.
我们转向实Schur型的实际计算.
定义8.1.4 设
为
阶实对称矩阵,对于任一非零向量
,称
![]()
为对应于向量
的瑞利(Rayleigh)商.
定理8.1.11 设
为对称矩阵(其特征值次序记为
),则
(1)
(对任何非零
);
(2)
;
(3)
.
证明 只证1,关于2,3留作习题.
由于
为实对称矩阵,可将
对应的特征向量
正交规范化,则有
.设
为
中任一向量,则有展开式
,
于是
.
从而1成立,结论1说明瑞利商必位于
和
之间.
关于计算矩阵
的特征值问题,当
时,我们还可按行列式展开的办法求
的根.但当
较大时,如果按展开行列式的办法,首先求出
的系数,再求
的根,工作量就非常大,用这种办法求矩阵特征值是不切实际的,由此需要研究求
的特征值及特征向量的数值解法.
本章将介绍一些计算机上常用的两类方法,一类是幂法及反幂法(迭代法),另一类是正交相似变换的方法(变换法).
8.2 幂法及反幂法
8.2.1 幂法
幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别适用于大型稀疏矩阵。反幂法是计算海森伯格或三对角阵的对应一个给定近似特征值的特征向量的有效方法之一。
设实矩阵
有一个完全的特征向量组,其特征值为
,相应的特征向量为
.已知
的主特征值是实的,且满足条件
, (8.2.1)
现讨论求
及
的方法.
幂法的基本思想是任取一个非零的初始向量
,由矩阵
构造一向量序列
(8.2.2)
称为迭代向量.由假设,
可表示为
, (8.2.3)
于是

其中
,显然
.
由假设知
,故
. (8.2.4)
这说明序列
越来越接近
的对应于
的特征向量,或者说当
充分大时
, (8.2.5)
即迭代向量
为
的特征向量的近似向量.
下面再考虑主特征值
的计算,用
表示
的第
个分量,则
, (8.2.6)
因此
, (8.2.7)
也就是说两相邻迭代向量分量的比值收敛到主特征值.
这种由已知非零向量
及矩阵
的幂
构造向量序列{
}以计算
的主特征值
(利用(8.2.7)式)及相应特征向量(利用(8.2.5)式)的方法称为幂法.
由(8.2.6)知,
的收敛速度由比值
来确定,
越小收敛越快,当
接近于1时收敛会很慢.
定理8.2.1 设
有
个线性无关的特征向量,主特征值
满足
,
则对任何非零初始向量
,(8.2.4), (8.2.7)式成立.
如果
的主特征值为实的重根,即
,且
,
又设
有
个线性无关的特征向量,
对应的
个线性无关特征向量为
,则由(8.2.2)式

这说明当
的主特征值是实的重根时,定理5的结论还是正确的.
应用幂法计算
的主特征值
及对应的特征向量时,如果
>1(或
<1),迭代向量
的各个不等于零的分量将随
而趋向于无穷(或趋向于零),这样在计算机实现时就可能 “溢出”.为了克服这个缺点,就需要将迭代向量加以规范化.
设有一向量
,将其规范化得到向量
![]()
其中
表示向量
的绝对值最大的分量,即如果有
,
则
=
,且
为所有绝对值最大的分量中的最小下标.
在定理8.2.1的条件下幂法可这样进行:任取一初始向量![]()
,构造向量序列![]()

由(8.2.3)式
(8.2.8)

这说明规范化向量序列收敛到主特征值对应的特征向量.
同理,可得到

收敛速度由比值
确定.总结上述讨论,有
定理8.2.2 设
有
个线性无关的特征向量,主特征值
满足![]()
,则对任何非零初始向量
,按下述方法构造的向量序列
:
(8.2.9)
则有
(1)
,
(2)
.
例3 用幂法计算

的主特征值和相应的特征向量.计算过程如表8-1.
[解]下述结果是用Visual C++6.0在微机上进行运算得到的,
的分量值是舍入值.于是得到
2.5365326,及相应的特征向量
(0.74822631,0.64966657,1).
和相应的特征向量的真值(8位数字)为
![]()
表8-1 幂法计算结果
| K |
|
| ||
| 0 | (1, | 1, | 1) | |
| 1 | (0.90909091, | 0.81818182, | 1) | 2.7500000 |
| 2 | (0.83760684, | 0.74358974, | 1) | 2.6590909 |
| 3 | (0.79901559, | 0.70303527, | 1) | 2.6047009 |
| 4 | (0.77741499, | 0.68033766, | 1) | 2.5752666 |
| 5 | (0.76510819, | 0.66740583, | 1) | 2.5587919 |
| 6 | (0.75802535, | 0.65996327, | 1) | 2.5494056 |
| 7 | (0.75392531, | 0.65565500, | 1) | 2.5440035 |
| 8 | (0.75154396, | 0.65315271, | 1) | 2.5408764 |
| 9 | (0.75015815, | 0.65169652, | 1) | 2.5390602 |
| 10 | (0.74935078, | 0.65084814, | 1) | 2.5380032 |
| 11 | (0.74888009, | 0.65035355, | 1) | 2.5373874 |
| 12 | (0.74860558, | 0.65006510, | 1) | 2.5370284 |
| 13 | (0.74844545, | 0.64989683, | 1) | 2.5368191 |
| 14 | (0.74835202, | 0.64979867, | 1) | 2.5366969 |
| 15 | (0.74829751, | 0.64974139, | 1) | 2.5366257 |
| 16 | (0.74826571, | 0.64970797, | 1) | 2.5365841 |
| 17 | (0.74824715, | 0.64968847, | 1) | 2.5365598 |
| 18 | (0.74823632, | 0.64967709, | 1) | 2.5365457 |
| 19 | (0.74823000, | 0.64967045, | 1) | 2.5365374 |
| 20 | (0.74822631, | 0.64966657, | 1) | 2.5365326 |
8.2.2 加速方法
1. 原点平移法
由前面讨论知道,应用幂法计算
的主特征值的收敛速度主要由比值
来决定,但当
接近于1时,收敛可能很慢.这时一个补救的办法就是采用加速收敛的方法.
引进矩阵
![]()
其中
为选择参数.设
的特征值为
,则
的相应特征值为
,而且
,
的特征向量相同.
如果需要计算
的主特征值
,就要适当选择
,使
-
仍然是
的主特征值,且使
.
对
应用幂法,使得在计算
的主特征值
-
的过程中得到加速.这种方法通常称为原点平移法.对于
的特征值的某种分布,它是十分有效的.
例4 设
有特征值
,
比值
,作变换
(
=12),
则
的特征值为
.
应用幂法计算
的主特征值
的收敛速度的比值为
.
虽然常常能够选择有利的
值,使幂法得到加速,但设计一个自动选择适当参数
的过程是困难的.
下面考虑当
的特征值是实数时,怎样选择
使采用幂法计算
得到加速.
设
的特征值满足
, (8.2.10)
则不管
如何,
的主特征值为
或
.当我们希望计算
及
时,首先应选择
使
,
且使收敛速度的比值
.
显然,当
,即
时
为最小,这时收敛速度的比值为
.
当
的特征值满足(8.2.10)且
能初步估计时,我们就能确定
的近似值.
当希望计算
时,应选择
,
使得应用幂法计算
得到加速.
例5 计算例3中矩阵
的主特征值.
作变换
,设
=0.75,则
.
对
应用幂法,计算结果如表8.2.
表8-2 幂法计算结果
| K |
|
| ||
| 1 2 3 4 5 6 7 8 9 10 | 0.875 0.78333333 0.76834862 0.75382166 0.7516 0.74913041 0.7487941 0.74836879 0.74831858 0.74824505 | 0.75 0.7 0.66513761 0.65796178 0.65217778 0.65105965 0.65007315 0.64989782 0.64972854 0.64970127 | 1 1 1 1 1 1 1 1 1 1 | 2.0000000 1.8750000 1.8166667 1.8004587 1.7914013 1.7888444 1.7873301 1.7869153 1.7866589 1.7865914 |
由此得
的主特征值为
1.7865914,
的主特征值
为
![]()
=2.5365914.
与例3结果比较,上述结果比例3迭代15次还好.
原点位移的加速方法,是一个矩阵变换方法.这种变换容易计算,又不破坏矩阵
的稀疏性,但
的选择依赖于对
的特征值分布的大致了解.
2. 瑞利商加速
由定理8.1.11知,对称矩阵
的
及
可用瑞利商的极值来表示.下面我们将把瑞利商应用到用幂法计算实对称矩阵
的主特征值的加速收敛上来.
定理8.2.3 设
为对称矩阵,特征值满足
,
对应的特征向量满足
,应用幂法(公式(8.2.9))计算
的主特征值
,则规范化向量
的瑞利商给出
的
.
证明 由(8.2.8)式及
,
得
. (8.2.11)
8.2.3 反幂法
反幂法用来计算矩阵按模最小的特征值及其特征向量,也可用来计算对应与一个给定近似特征值的特征向量。
设
为非奇异矩阵,
的特征值依次记为
,
相应的特征向量为
则
的特征值为
,
相应的特征向量为
.
所以计算
的按模最小的特征值
的问题就是计算
的按模最大的特征值问题。
对于
应用幂法迭代(称为反幂法),可求得矩阵
的主特征值1/
,从而求得
的按模最小的特征值
。
反幂法迭代公式为:
任取初始向量
,构造向量序列
.
迭代向量
可以通过解方程组
求得.
定理8.2.4 设
为非奇异矩阵且有
个线性无关的特征向量,其对应的特征值满足
,
则对任何初始非零向量
,由反幂法构造的向量序列
满足
(1)
,
(2)
.
收敛速度的比值为
.
在反幂法中也可以用原点平移法来加速迭代过程或求其他特征值及特征向量。
如果矩阵
存在, 对其应用幂法,得反幂法的迭代公式
(2.12)
如果p是
的特征值
的一个近似值,且设
与其他特征值分离,即
(
),
就是说
是
的主特征值,可用反幂法(2.12)计算特征值及特征向量。这样我们有下面的定理
定理8.2.5 设
有
个线性无关的特征向量,
的特征值及对应的特征向量分别记为
及
(i=1,2,…,n),而
为
的近似值,
存在,且
(
),
则对任意的初始非零向量
,有反幂法迭代公式(2.12)构造的向量序列
满足
(1)
;
(2)
, 即
![]()
且收敛速度由比值

确定。
由该定理知,对
(其中
)应用反幂法,可用来计算特征向量
. 只要选择的
是
的一个较好的近似且特征值分离情况较好,一般
很小,常常只要迭代一二次就可完成特征向量的计算。
反幂法迭代公式中的
是通过解方程组
![]()
求得的。为节省工作量,可先将
进行三角分解
,
其中P为某个排列阵,于是求
相当于解两个三角形方程组
![]()
实验表明,按下述方法选择
较好的:选
使
(2.13)
用回代求解(2.13)即得
,然后再按公式(2.12)进行迭代。
反幂法迭代公式:
1. 分解计算
, 且保存
信息。
2. 反幂法迭代
(1) 解
求![]()
(2) k=2,3,…
1) 解
,求得
;
解
,求得![]()
2) ![]()
3) 计算![]()
例6 用反幂法求

的对应于特征值λ=1.2679(精确特征值为
)的特征向量.
[解] 用部分选主元的三角分解将
(其中
)分解为
,
其中

由
,得

由
,得

对应的特征向量是
,
由此看出
是
的相当好的近似。
特征值
,
的真值为
。
8.3 豪斯霍8.4 尔德方法
8.4.1 引言
本节讨论下面问题:
(1) 用初等反射阵作正交相似变换约化一般实矩阵
为上海森伯格阵(次对角元素下方的元素均为零
)。
(2) 用初等反射阵作正交相似变换约化对称矩阵
为对称三对角阵。
于是,求原矩阵特征值问题,就转化为求上海森伯格阵或对称三对角阵的特征值问题。
8.4.2 用正交相似变换约化一般矩阵为上海森伯格阵。
设
。下面说明可选择初等反射阵
使
经正交相似变换约化一个上海森伯格阵。
(1)设

其中
,
当
时进行下一步。当
时,对
维列向量
待定,令
![]()
这是
阶初等反射阵(
),使其满足
,
为
维向量) 即
![]()
易见
![]()
现在令
,
则

其中![]()
(2) 第
步约化:重复上述过程,设对
已完成第1步,…,第
-1步正交相似变换,即有

其中
为
阶上海森伯格阵,
.
设
,于是可选择初等反射阵
使
, 其中
的计算公式为
(8.3.2)
令
,
则
(8.3.3)
其中
为
+1阶上海森伯格阵。第k步约化只需计算
及
(当
为对称阵时可以不算)。
(3) 重复上述过程,有
。
定理8.3.1 (矩阵的上Hessenberg化) 设
, 则存在初等反射阵
使
(上海森伯格阵)
算法1(Householder约化上H-矩阵) 设
, 本算 法计算
(上海森伯格型),其中
为初等反射阵的乘积。
1. ![]()
2. 对于![]()
计算初等反射阵
使
,即取

(2)约化计算

(3)![]()
算法分析:
本算法约需要
次乘法运算,要明显形成
还需加
次乘法。
在计算
的过程,
的计算可能会引起溢出现象.为避免溢出现象,可以考虑向量
的规范化,即
,由
计算得到
.但应注意不能将
保存到
中.
在实际计算时,
不必要得出矩阵形式,只需要得出算法中交待的相关参数及向量即可.
例7 用豪斯霍尔德方法将

矩阵约化为上Hessenberg阵。
解 选取初等反射阵
使
R1 , 其中
.
计算
:
(规范化)

则有
.
(2) 约化计算:令

则

8.4.3 用正交相似变换约化对称阵为对称三对角阵
定理8.3.2 (豪斯霍尔德约化对称阵为对称三对角阵) 设
, 则存在初等反射阵
使

证明 由定理8.3.1,存在初等反射阵
使
,注意到
,显然
(对称矩阵),因此若
对称,则必有
对称,从而
是对称三对角阵.
定理证毕
根据定理17的结论,我们容易对算法1加以改进得之如下算法2.
算法2(豪斯霍尔得德约化对称阵为对称三对角阵)设
为对称矩阵,本算法确定初等反射阵
使
为对称三对角阵.C的对角元
存放在数组
内,C的次对角元
存放在数组
内,数组
的初始值可用来存放
及
,确定
中向量
的分量存放在A的相应位置.
冲掉
,约化A的结果冲掉A,数组A的上部分元素不变,如果第
不需要变换则置
为零.
1. 对于![]()
(1) ![]()
(2) 确定变换![]()
1) 计算![]()
2) 如果
,则
,转4)
3) 计算![]()
4) 
5) ![]()
6) ![]()
7) ![]()
(3) 应用变换
1) ![]()
2) 计算
及![]()
对于![]()
(a)![]()
(b)![]()
3) 计算![]()
![]()
![]()
4) 计算
对角线以下部分
对于 ![]()
![]()
5) 继续循环![]()
2. ![]()
![]()
![]()
对对称矩阵
用初等反射阵正交相似约化为对称三对角阵大约需要
次乘法。
用正交矩阵进行相似约化有一些特点,如构造的
容易求逆,且
的元素数量级不大,这个算法是十分稳定的。
8.5 QR 方 法
QR方法是一种变换方法,是计算一般矩阵(中小型矩阵)全部特征值问题的最有效方法之一。目前QR方法主要用来计算:(1) 上海森伯格阵的全部特征值问题;(2) 计算对称三对角矩阵的全部特征值问题。QR方法具有收效快,算法稳定等特点。
对于一般矩阵
(或对称矩阵), 则首先用豪斯霍尔德方法将
化为上海森伯格阵
(或对称三对角阵), 然后再用QR方法计算
的全部特征值。
8.5.1 基本QR算法
设
,基本QR迭代算法如下:
(8.4.1)
其中
为上三角阵,
为正交阵。
定理8.4.1 (基本QR算法的性质定理)记
,则有
(1)
;
(2)
;
(3)
。
[证明] (1)
;
(2)
;
(3) 事实上,

由(2)知
,代入上式得
,
从而便有
.
[证毕]
定理????? 设
阶矩阵
的
个特征值满足
,并设
阶非奇异矩阵
的第
行是
对应于
的左特征向量.如果
有LU分解,则由(8.4.1)产生的矩阵
的对角线以下的元素趋向于零,同时对角元素
趋向于![]()
[证明]令:
,则有
.假定
的LU分解为
,其中
是单位下三角矩阵,
是上三角矩阵.这样,我们有
???????
其中
.由于
是单位下三角矩阵,而
,故必有
. ???????
现令
的QR分解为:
.由
的非奇异,可要求
的对角元素均为正负.将这一分解代入???????可得
. ???????
当
充分大时,
是非奇异的,故它有如下的QR分解
???????
其中
的对角元素均为正数.从(8.4.6)和(8.4.8)知
![]()
于是有
(8.4.9)
将???????代入?????7?,得
![]()
即已经找到了
的一个QR分解.为保证分解中的上三角矩阵的对角元素均为正数,令

其中
是
的第
个对角元素.于是我们有
![]()
将上式与(8.4.4)比较,并注意到QR分解的唯一性,就有
![]()
将上式代入(8.4.3)即有
![]()
再注意到
![]()
代入上式便得
.
由于
,故
![]()
而
是上三角矩阵,加之
和
是对角矩阵,因此,
主对角线以下的元素趋于0.
定理证毕
8.5.2 上Hessenberg化
实际计算时,为了减少每次迭代所需的运算量,总是先将原矩阵A经相似变换约化为一个上准三角矩阵——上Hessenberg矩阵,然后对约化后的矩阵进行QR迭代.
定义8.4.1 若
,当
时
.则称
为上Hessenberg矩阵或上准三角矩阵.
下面我们希望讨论这样一个问题:对
,存在上Hessenberg矩阵
与之相似.也就是说,总存在一个非奇异矩阵
使得
![]()
对于给定的
,我们经
次正交变换,就可将其约化为上Hessenberg矩阵.
首先,我们将矩阵
分块写成
,
其中![]()
第一步:构造Householder变换
,使其满足
,
其中
.
是
阶单位矩阵的第一列.再令
, (8.4.10)
于是

显然
.
也就是说经第一步正交变换后,我们得到与
相似的矩阵
形如
.
第二步:先对
,进行类似于第一步的正交变换,将
写成

构造
阶Householder变换
,使得
是
阶单位矩阵的第一列.令

使得

显然

从而令

于是

如此进行
步,就可找到
个Householder变换
,使得
.
其中
.
再令
![]()
则有
(8.4.11)
通常称该式为A的上Hessenberg分解。
注意:根据以上Hessenberg约化过程可以发现,正交矩阵
的第一列为
,即
.
算法8.4.1(计算上Hessenberg分解:Householder变换)

这一算法计算出的上Hessenberg矩阵就存放在A所对应的存储单元内.运算量为
;如果需要累积
,则还需要再增加运算量
.
此外,上述算法计算得到的上Hessenberg矩阵
满足
![]()
其中
是正交矩阵,
,这里
是一常数,
是机器精度.
当然,我们亦可用Givens变换将
上Hessenberg化,一般所需要的运算量大约是算法8.4.1的二倍.但是,如果
有较多的零元素,则适当安排Givens变换的次序,可使运算量大为减少.另外,为了节省运算量,也可采用列主元的Gauss消去法将
约化为上Hessenberg矩阵.不过这样做,虽然运算量少,但数值稳定性差.
尽管一般来讲上Hessenberg分解是不唯一的,然而我们可以证明
定理8.4.3 设
有如下两个上Hessenberg分解:
(8.4.12)
其中
和
是
阶正交矩阵,
和
是上Hessenberg矩阵.若
,而且
的次对角元素
均不为零,则存在对角元素均为1或-1的对角矩阵
使得
(8.4.13)
[证明] 假定对某个
已证
(8.4.14)
其中
.下面来证明存在
使得
![]()
从(8.4.12)可得
![]()
分别比较上面两个矩阵等式的第
列,可得
(8.4.15)
(8.4.16)
分别在(8.4.15)和(8.4.16)两边左乘
,可得
![]()
再利用(8.4.16)就有
(8.4.17)
将(8.4.17)代入(8.4.15),并利用 (6.4.16) 和(8.4.18),可得
(8.4.18)
注意到
,则
![]()
而
,故(8.4.18)蕴含着
![]()
其中
.
定理证毕
定义8.4.2 一个上Hessenberg矩阵
,如果其次对角元素均不为零,即
,则称它是不可约的.
上述定理表明:如果
这不可约的上Hessenberg矩阵,其中
为正交矩阵,则
和
完全由
的第一列确定(为里是在相差一个正负号的意义下的唯一).
现在假定
是上Hessenberg矩阵,我们来考虑对
进行一次QR迭代的具体实现问题.第一步是计算
的QR分解.由于
的特殊性,这一步可用
个平面旋转变换来完成,其具体计算过程如下:
第1次约化:作Givens变换

则

其中仅有前两行的元素与
的元素不同,其余各行元素与
均相同,并且
, ![]()
直至第k-1次约化毕,我们得到

第k次约化:令

作Givens变换
,
那么
,
其中仅第k行和第k+1的元素与
的元素不同,其余各行元素与
均相同,并且
, ![]()
这样,我们便知
![]()
是上三角矩阵.令
,则
,即这样就已完成了
的QR分解.要完成一次QR迭代,我们还须计算
.
由于
是(1,2)坐标平面内的旋转变换,因此
仅有前两列与
不同,而
的前两列由
的前两列的线性组合构成.
又是上三角矩阵,故
必有如下形状:

同样,
是(2,3)坐标平面内的旋转变换,
仅有第二列和第三列与
不同,它们是
的和第二列和第三列的线性组合,故
有如下形状:

如此进行下去,最后我们得到的
仍是上Hessenberg矩阵.而且不难算出,这样进行的一次QR迭代的运算量是
.注意,对一般方阵进行一次QR迭代的运算量是
.
8.5.3 带原点位移的QR迭代
从定理8.4.2已经知道,基本的QR算法是线性收敛的,其收敛速度取决于特征值之间的分离程度。为了加速其收敛速度,类似于反幂法,可引进原点位移。设第
步迭代的位移为
,则带原点位移的QR迭代如下:
![]()
这里
是给定的上Hessenberg矩阵。
现在来讨论位移的选取。由于
为上Hessenberg矩阵,故其最后一行仅有两个非零元素
,若QR算法收敛,则当
充分大时,
就很小,因而
就接近于
的一个特征值。这样,根据从反幂法所得到的经验,我们可以选取位移为
。事实上,对于这样选取的位移,可以证明,若
很小的话,则经一次带原点位移QR迭代后,成立
(8.4.19)
显然,这只需考虑
右下角的
子矩阵
的变化即可。由前面的讨论可知,将
约化成上Hessenberg阵有
步,现假定前面
步已完成,此时的
变为
,
这是因为前
步不改变
的最后一行。约化的第
步就是要消去
,即确定
使得
.
从平面旋转变换的确定方法易知,此处
.
这样,通过简单的计算可知
,
即(6.4.24)成立.我们看到通过原点位移,特征值的渐近收敛速度从线性收敛加速面变成了二次收敛.
8.5.4 双重步位移的QR迭代
上面所讨论的带原点位移的QR迭代,存在严重的缺点:若
具有复共轭特征值,则实位移一般并不能起到加速的作用.为了克服这一缺点,我们下面来介绍双重步位移的QR迭代,其基本思想是将带原点位移的QR迭代合并为一步,以避免复数运算.
设
,考虑如下的迭代:
(8.4.20)
不失一般性,我们可以假定迭代(8.4.20)中出现的上Hessenberg矩阵都是不可约的.因若不然,迭代的某一步,已有
,
则我们可以分别对
和
进行QR迭代即可.
大家已经知道,在一定条件下取位移
可起到加速收敛的作用;然而,大家也熟知实矩阵可以有复特征值.这样,假如
的尾部
子矩阵

有一对复共轭特征值
和
时,我们就不能期望
最终收敛于A的某个特征值,因而此种情形再取位移为
就完全起不到加速收敛的作用.为了加速收敛,此时我们自然应该取
或
作位移.但这样一来就必须涉及复数运算,而这又是我们所不希望的.为了避免复运算的出现,人们想用
和
连续作两次位移,即进行
![]()
这里我们记
.
但是,这里的
和
都是复数,要避免复数运算肯定不能按照上面给出的迭代直接进行,它只能是一个算法思想。
非常巧妙的是,上面的算法可以通过实运算得到
.为了证实这一点,我们令
, (8.4.21)
, (8.4.22)
则
![]()
另外
![]()
即有
, (8.4.23)
, (8.4.24)
另一方面,由(8.4.23)可得
(8.4.25)
其中

因此
是一个实矩阵;而且如果
和
均不是
的特征值,并假定在迭代过程中选取
和
的对角元素均为正数,则由(8.4.23)可推知,Q亦是实的;从而由(8.4.24)知
也是实的.这也就是说,在没有误差的情况下,用
和
连续作两次位移进行QR迭代产生的
仍是上Hessenberg矩阵.但是,实际计算时,由于舍入误差的影响,如此得到的
一般并不一定是实的.这样为了确保计算得到的
仍是实的,根据(8.4.23)和(8.4.25),我们自然想到按如下的步骤来计算
:
算
;
计算
的QR分解:
;
计算
.
然而,如此计算的第一步形成
的运算量就是
.当然,这是我们不希望的.幸运的是,定理8.4.3告诉我们:不论采用什么样的方法去求正交矩阵
使
是上Hessenberg矩阵,只要保证
的第一列与
的第一列一样,则
就与
本质上是一样的(所有元素的绝对值都相等).当然,这需要
是不可约来加以保证的.因此
是不可约的,则我们就可有很大的自由度去寻求更有效的方法来实现由
到
的变换.下面的定理给出
不可约的条件.
定理8.4.4 若
是不可约的上Hessenberg矩阵,且
和
均非
的特征值,则
也是不可约上Hessenberg矩阵.
[证明]用反证法.记
,并假定存在
使得
,而
.比较等式
的两边矩阵的前
列,得

由此可得
(8.4.26)
其中
![]()
由
得
![]()
将代入(8.4.26),并注意到
也是
的多项式,就有
(8.4.27)
其中
![]()
记
,并注意到
是不可约的上Hessenberg矩阵,直接计算可知
的第
个分量为
![]()
这也就是说(8.4.27)有非零解,而这与
和
均非
的特征值蕴含着
非奇异矛盾.
定理证毕
基于定理8.4.2和6.4.4,我们可以从另外的途径来实现
到
的变换.首先,我们从(8.4.21)知,
的第一列与
的第一列共线(其实
的第一列就相当于由
的第一列单位化而得到的).而由(8.4.25)容易算出
![]()
其中

其次,如果Householder变换
使:
,从而有
,即
的第一列就与
共线,从而
的第一列就可作为
的第一列,即
,而由关于Householder变换的理论知,
可以按如下方式确定:
,
其中

现令
![]()
则我们只要能够找到第一列为
的正交矩阵
使
为上Hessenberg矩阵,那么
就是我们希望得到的
.由本节所介绍的约化一个矩阵为上Hessenberg矩阵,的方法可知,这是容易办到的.这只需确定
个Householder变换
使
![]()
为上Hessenberg矩阵,则
的第一列就为
.而且由于
所具有的特殊性,实现这一约化过程所需的运算量仅为
.
事实上,由于用
将
相似变换为
只改变了
的前三行和前三列,故
有如下形状
,
仅比上Hessenberg形多三个可能的非零元素"+".由
的这种特殊性易知,用来约化
为上Hessenberg形的第一个Householder变换
具有如下形状
,
其中
为3阶Householder变换,而且
具有如下形状
.
一般地,第k次约化所用的Householder变换
具有如下形状
![]()
其中
为3阶Householder变换,
,而且
具有如下形状
.
因此,最后一次约化所用的Householder变换
具有如下形状
![]()
其中
为2阶Householder变换.
综述上面的讨论,就得到了著名的Francis双重步位移的QR迭代算法:
算法8.4.2(双重步位移QR迭代)
m=n-1
s=H(m,m)+H(n,n)
t=H(m,m)H(n,n)-H(m,n)H(n,m)
x=H(1,1)H(1,1)+H(1,2)H(2,1)-sH(1,1)+t
y=H(2,1)(H(1,1)+H(2,2)-s)
z=H(2,1)H(3,2)
for k=0:n-3
![]()
q=max{1,k}
H(k+1:k+3,q:n)=
H(k+1:k+3,q:n)
R=min{k+4,n}
H(1:r,k+1:k+3)=H(1:r,k+1:k+3) ![]()
x=H(k+2,k+1)
y=H(k+3,k+1)
if k<n-3
z=H(k+4,k+1)
end
end
![]()
H(n-1:n,n-2:n)=
H(n-1:n,n-2:n)
H(1:n,n-1:n)= H(1:n,n-1:n) ![]()
该算法的运算量为
;如果需要累积正交变换投影还需要增加运算量
.
8.5.5 隐式QR算法
前面的讨论已经解决了用QR方法求一个给定的实矩阵的Schur标准形的几个关键的问题.然而,作为一种实用的算法,还需给出一种有效的判定准则,来判定迭代过程中所产生的上Hessenberg矩阵的次对角元何时可以忽略不计.一种简单而实用的准则是,当
![]()
时,就将
看作零.这样做的理由是,在前面约化
为上Hessenberg矩阵时就已经引进了量级为
的误差.
综合上面的讨论,就得到如下的隐式QR算法.该算法是计算一个给定的
阶实矩阵
的实Schur分解:
,其中
是正交矩阵,
为拟上三角矩阵,即对角块为
或
方阵的块上三角矩阵,而且每个
的对角块必为有一对复共轭特征值.
算法8.4.3(计算实矩阵的实Schur分解:隐式QR算法)
输入
.
上Hessenberg化:用算法8.4.1计算
的上Hessenberg分解,得
.
收敛性判定:
(i)把所有满足条件
![]()
的
置零;
(ii)确定最大的非负整数
和最小的非负整数
,使

其中
为拟上三角形,而
为不可约的上Hessenberg形;
(iii)如果
,则输出有关信息,结束;否则进行下一步.
QR迭代:对
用算法8.4.2迭代一次得
.
计算
,
然后转步(3).
实际计算的统计表明,这一算法每分离出一个
或
子矩阵平均约需2次QR迭代.因此,如果只计算特征值,则运算量平均约为
;如果
都需要,则运算量平均约为
.
本文介绍了矩阵特征值问题的计算方法,包括幂法、反幂法、豪斯霍尔德方法、QR方法等,详细解释了各种方法的原理、步骤及应用场景。
325

被折叠的 条评论
为什么被折叠?



