5.8 特征值的迭代估计
在线性代数的科学应用中,很少能精确知道特征值。所幸的是,一个较精确的数值近似通常能达到令人满意的效果。实际上,某些应用只需要粗略估计最大特征值。下面介绍的第1个算法很适合这种情况。同样,它为快速估计其他特征值的更有效的方法提供了基础。
幂算法适用于 矩阵 有严格占优特征值(亦称主特征值) 的情况。 为主特征值的意思是 的绝对值比其他特征值的绝对值都大。此时,幂算法产生一个近似 的数列和一个近似对应的主特征向量的向量序列。此方法的背景来源于5.6节开头的特征向量分解。
为简单起见,假设 可对角化,特征向量 是 的基,并且 已经过排列,使对应的特征值 的绝对值递减, 是主特征值,即有
就像我们在 5.6 节式(2)中看到的,假设 ,那么
假设 ,等式除于
由(1),所有分数 的值都小于 1,因此,它们的幂趋于零。故
因此对足够大的 , 的数量倍的方向几乎与特征向量 的方向相同.由于正的数量倍不会改变向量的方向,因此若给定 ,则 的方向几乎与 或 一致.
设 ,那么 的特征值是 2 和 1, 的特征空间是过原点和 的直线。对 ,计算 并画出过原点和 的直线。当 增大时会出现什么情况?
解
开头三项的计算是
其他项的计算在表 5-1 中给出.
表 5-1 向量的迭代
| k | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
图 5-26 显示了向量 , Ax, , , . 其余向量太长难于显示, 但画出的线段显示出这些向量的方向. 事实上, 我们真正想看到的是向量的方向而不是向量本身. 这些直线看起来是逼近表示 生成的特征空间的直线. 更确切地说, 由 确定的直线(子空间)与由 确定的直线(特征空间)之间的夹角(当 时)趋于零.
当 时,我们可以对(3)中的向量 倍乘,使它们收敛于 ,但不能对 作这种倍乘,因为我们并不知道 。不过可以倍乘 ,使它的最大分量为 1。这样,所得序列 将收敛于 的倍数, 的倍数的最大分量也是 1。图 5-27 显示了例1 的倍乘序列。我们还可以通过序列 来估计特征值 。当 接近于 的特征向量时,向量 也接近于 ,即 的每一分量接近于 与 相应分量的乘积。因为 的最大分量是 1,故 的最大分量接近于 。(这些结论的证明省略了。)
估计严格占优特征值的幂算法
Section titled “估计严格占优特征值的幂算法”-
选择一个最大分量为 1 的初始向量
-
对 a. 计算 . b. 设 是 中绝对值最大的一个分量. c. 计算 .
-
几乎对所有选择的 ,序列 近似于主特征值,而序列 近似于对应的特征向量.
设 . 应用幂算法求 的主特征值和对应的特征向量的近似值,计算到 .
解
本例及下一个例子的计算用 MATLAB 完成,虽然这里看到的有效数字较少,但计算精确到 16 位。先计算 ,然后将 的最大分量 单位化:
用 倍乘 得到 ,计算 ,并将 的最大分量单位化:
用 倍乘 得到 ,计算 ,将 的最大分量单位化:
用 倍乘 得到 ,一直重复做下去,用MATLAB计算的前5次迭代结果列在表5-2中.
表 5-2 例2 的幂算法
| k | 0 | 1 | 2 | 3 | 4 | 5 |
| 5 | 8 | 7.125 | 7.0175 | 7.0025 | 7.00036 |
从表 5-2 的数据明显看出, 接近于 , 接近于 7。这样, 就是特征向量,7 是主特征值。容易通过计算来验证 。
例2 的序列 很快收敛于 是因为 的第 2 个特征值 要比 小得多(事实上, )。通常收敛的快慢取决于比率 ,因为用 的倍数来估值 时,主要误差来源于(2)中的向量 (其他的分数 可能更小)。若 接近于 1,则 和 会收敛得很慢,此时,可能需要选择其他近似的方法。
不过幂算法还存在这样的很小可能性, 即随机选择的初始向量 在 的方向上没有分量 (当 时), 但计算机在计算 时所产生的舍入误差有可能产生一个向量, 该向量在 的方向上至少有一个小分量. 如果这样的话, 将收敛于 的倍数.
在知道特征值 的一个较好的初始估值 后,逆幂法可用来对任一特征值作近似估值。此时,我们令 ,并对 应用幂算法。可以证明,若 是 的特征值,则 的特征值是
而且 的对应于 的特征向量是 的对应于上面这些特征值的特征向量。(见习题 15 和 16.)例如,假设 更接近 而不是 的其他特征值,那么 将是 的严格主特征值。假如 确实接近于 ,那么 比 的其他特征值要 “大” 得多。几乎对所有选择的 ,逆幂法会快速逼近 ,下列算法给出了详细步骤。
估计 的特征值 的逆幂法
Section titled “估计 A 的特征值 λ 的逆幂法”-
选择一个非常接近于 的初始估值 .
-
选择一个最大分量为 1 的初始向量 .
-
对
. 从 解出
. 设 是 中绝对值最大的分量.
. 计算 .
. 计算 .
- 几乎对所有选择的 ,序列 趋向于 的特征值 ,而序列 趋向于对应的特征向量.
或者是 并没有出现在算法中.在求序列的下一个向量时并没有计算 ,而是通过解方程 来得到 的(然后用倍乘 来产生 ).因为对每个 一定可以从该方程解出 ,故 的LU分解式将加快计算过程.
在某些应用中,通常需要知道矩阵 的最小特征值,也需要对该特征值作粗略的估计。设21,3.3和1.9是下列矩阵 的特征值的估值。求最小特征值,小数位精确到6位。
解
两个最小特征值看起来很接近,因此我们对 A-1.9I 应用逆幂法. MATLAB 的计算结果列在表 5-3 中.这里的 随机选取, 是 的最大分量, .可以看到,初始的特征值估计得非常好,逆幂法产生的序列收敛很快.最小的特征值正好是 2.
表 5-3 逆幂法
| k | 0 | 1 | 2 | 3 | 4 |
| 7.76 | 9.9197 | 9.9949 | 9.9996 | 9.999975 | |
| 2.03 | 2.0008 | 2.00005 | 2.000004 | 2.0000002 |
假如没有矩阵最小特征值的估值,则可以简单取 来使用逆幂法。假如最小特征值更接近于零而不是其他的特征值,那么这种取值是合理的。
对很多简单的情况,本节给出的两个算法是实用的,它们为特征值估值问题提供了入门知识。另一个更全面和广泛使用的迭代算法是QR算法。比如,MATLAB的命令 的核心是QR算法,这个命令能快速计算出 的特征值和特征向量。在5.2节的习题中对QR算法有过简短的描述,进一步的细节参见有关现代数值分析的教材。
你怎样断定给出的向量 是矩阵 的某个特征向量的好的近似值?如果是,又怎样估计相应的特征值?用下面给出的矩阵 和 做练习.
和
在习题 1~4 中,给出矩阵 和由幂算法产生的序列 。利用这些数据对 的最大特征值进行估计,并求出对应的特征向量。
- 设 ,向量 分别是重做习题 5.
寻找一个第2个分量为1且接近于 的一个特征向量的向量,保留4位小数.验证你的估值,并对 的主特征值进行估计.
- 设 . 利用下列序列 重做习题 5.
[]习题7~12需要用到MATLAB或其他辅助的计算工具. 在习题7和8中,利用幂算法及给出的 ,对 ,算出 和 . 在习题9和10中,算出 和 .
如果知道某个特征向量的近似值,就可以对特征值作另一估值。若 ,则 ,瑞利商 等于 。假如 接近于 对应的特征向量,那么瑞利商就接近于 。当 为对称矩阵时 ,瑞利商 的精确数字大致是幂算法产生的倍乘因子 的 2 倍,在习题 11 和 12 中通过计算 和 来验证增加的精确度。
习题 13 和 14 应用于一个 矩阵 ,其特征
值被估计为 4,-4 和 3.
-
对接近于 4 和 -4 但绝对值不同的特征值,幂算法还有效吗?
-
对接近于 4 和 -4 但绝对值相同的特征值,描述怎样才能得到估计接近于 4 的特征值的序列.
-
假设 , 数 不是 的特征值, 令 , 在等式 的两边减去 , 用代数方法证明 是 的特征值, 是其对应的特征向量.
-
设 是习题 15 中矩阵 的特征值, 是对应的特征向量,即有 ,利用这个等式求 的用 和 表示的特征值。(注意:因为 可逆,故 。)
-
[] 设 ,利用逆幂法对例3 中的矩阵 的中间特征值进行估值,计算精确到 4 位小数.
-
[] 设 为习题 9 给出的矩阵, ,利用逆幂法对 接近于 的特征值进行估值,计算精确到 4 位小数.
[]在习题19和习题20中,求()最大特征值,()接近于零的特征值.设 ,在求特征值时,要求近似序列的计算精确到4位小数,还包括近似特征向量的计算.
-
-
一个常见的误解是:假如 有严格主特征值,那么对足够大的 值,向量 近似于 的某个特征向量。对下面给出的三个矩阵,当 时,计算并研究 ,并试图得到一般结论(对 矩阵)。 a. b. c.
对给出的 和 ,
如果 Ax 近似于 的数倍,那么两个向量相应分量的比率也应该近似于某个常量,故计算:
Ax 的每一个分量大约是 对应分量的 3 倍,故 接近于 的特征向量,上面比率的任何一个都是特征值的近似值。(若精确到 5 位小数,特征值是 3.02409.)
书籍模块索引
线性代数及其应用(原书第5版) · 章节内联关系图谱
核心知识枢纽章节
被全书其他章节引用频次最高的基石章节:
图谱交互提示
- 视角放大/缩小:使用左下角工具栏 +/- 或鼠标滚轮;
- 大书防混淆:顶部选择“按篇章/大章聚合”或“聚焦当前章”;
- 视图平移与拖拽:拖动画布或节点;双击节点直达原文。