Skip to content

5.8 特征值的迭代估计

在线性代数的科学应用中,很少能精确知道特征值。所幸的是,一个较精确的数值近似通常能达到令人满意的效果。实际上,某些应用只需要粗略估计最大特征值。下面介绍的第1个算法很适合这种情况。同样,它为快速估计其他特征值的更有效的方法提供了基础。

幂算法适用于 矩阵 有严格占优特征值(亦称主特征值) 的情况。 为主特征值的意思是 的绝对值比其他特征值的绝对值都大。此时,幂算法产生一个近似 的数列和一个近似对应的主特征向量的向量序列。此方法的背景来源于5.6节开头的特征向量分解。

为简单起见,假设 可对角化,特征向量 的基,并且 已经过排列,使对应的特征值 的绝对值递减, 是主特征值,即有

就像我们在 5.6 节式(2)中看到的,假设 ,那么

假设 ,等式除于

由(1),所有分数 的值都小于 1,因此,它们的幂趋于零。故

因此对足够大的 的数量倍的方向几乎与特征向量 的方向相同.由于正的数量倍不会改变向量的方向,因此若给定 ,则 的方向几乎与 一致.

例 1

,那么 的特征值是 2 和 1, 的特征空间是过原点和 的直线。对 ,计算 并画出过原点和 的直线。当 增大时会出现什么情况?

开头三项的计算是

其他项的计算在表 5-1 中给出.

表 5-1 向量的迭代

k012345678

图 5-26 显示了向量 , Ax, , , . 其余向量太长难于显示, 但画出的线段显示出这些向量的方向. 事实上, 我们真正想看到的是向量的方向而不是向量本身. 这些直线看起来是逼近表示 生成的特征空间的直线. 更确切地说, 由 确定的直线(子空间)与由 确定的直线(特征空间)之间的夹角(当 时)趋于零.

图 5-26 由 x, Ax, 确定的方向

时,我们可以对(3)中的向量 倍乘,使它们收敛于 ,但不能对 作这种倍乘,因为我们并不知道 。不过可以倍乘 ,使它的最大分量为 1。这样,所得序列 将收敛于 的倍数, 的倍数的最大分量也是 1。图 5-27 显示了例1 的倍乘序列。我们还可以通过序列 来估计特征值 。当 接近于 的特征向量时,向量 也接近于 ,即 的每一分量接近于 相应分量的乘积。因为 的最大分量是 1,故 的最大分量接近于 。(这些结论的证明省略了。)

图 5-27 x, Ax, , , 的倍乘

  1. 选择一个最大分量为 1 的初始向量

  2. a. 计算 . b. 设 中绝对值最大的一个分量. c. 计算 .

  3. 几乎对所有选择的 ,序列 近似于主特征值,而序列 近似于对应的特征向量.

例 2

. 应用幂算法求 的主特征值和对应的特征向量的近似值,计算到 .

本例及下一个例子的计算用 MATLAB 完成,虽然这里看到的有效数字较少,但计算精确到 16 位。先计算 ,然后将 的最大分量 单位化:

倍乘 得到 ,计算 ,并将 的最大分量单位化:

倍乘 得到 ,计算 ,将 的最大分量单位化:

倍乘 得到 ,一直重复做下去,用MATLAB计算的前5次迭代结果列在表5-2中.

表 5-2 例2 的幂算法

k012345
587.1257.01757.00257.00036

从表 5-2 的数据明显看出, 接近于 接近于 7。这样, 就是特征向量,7 是主特征值。容易通过计算来验证

例2 的序列 很快收敛于 是因为 的第 2 个特征值 要比 小得多(事实上, )。通常收敛的快慢取决于比率 ,因为用 的倍数来估值 时,主要误差来源于(2)中的向量 (其他的分数 可能更小)。若 接近于 1,则 会收敛得很慢,此时,可能需要选择其他近似的方法。

不过幂算法还存在这样的很小可能性, 即随机选择的初始向量 的方向上没有分量 (当 时), 但计算机在计算 时所产生的舍入误差有可能产生一个向量, 该向量在 的方向上至少有一个小分量. 如果这样的话, 将收敛于 的倍数.

在知道特征值 的一个较好的初始估值 后,逆幂法可用来对任一特征值作近似估值。此时,我们令 ,并对 应用幂算法。可以证明,若 的特征值,则 的特征值是

而且 的对应于 的特征向量是 的对应于上面这些特征值的特征向量。(见习题 15 和 16.)例如,假设 更接近 而不是 的其他特征值,那么 将是 的严格主特征值。假如 确实接近于 ,那么 的其他特征值要 “大” 得多。几乎对所有选择的 ,逆幂法会快速逼近 ,下列算法给出了详细步骤。

  1. 选择一个非常接近于 的初始估值 .

  2. 选择一个最大分量为 1 的初始向量 .

. 从 解出

. 设 中绝对值最大的分量.

. 计算 .

. 计算 .

  1. 几乎对所有选择的 ,序列 趋向于 的特征值 ,而序列 趋向于对应的特征向量.

或者是 并没有出现在算法中.在求序列的下一个向量时并没有计算 ,而是通过解方程 来得到 的(然后用倍乘 来产生 ).因为对每个 一定可以从该方程解出 ,故 的LU分解式将加快计算过程.

例 3

在某些应用中,通常需要知道矩阵 的最小特征值,也需要对该特征值作粗略的估计。设21,3.3和1.9是下列矩阵 的特征值的估值。求最小特征值,小数位精确到6位。

两个最小特征值看起来很接近,因此我们对 A-1.9I 应用逆幂法. MATLAB 的计算结果列在表 5-3 中.这里的 随机选取, 的最大分量, .可以看到,初始的特征值估计得非常好,逆幂法产生的序列收敛很快.最小的特征值正好是 2.

表 5-3 逆幂法

k01234
7.769.91979.99499.99969.999975
2.032.00082.000052.0000042.0000002

假如没有矩阵最小特征值的估值,则可以简单取 来使用逆幂法。假如最小特征值更接近于零而不是其他的特征值,那么这种取值是合理的。

对很多简单的情况,本节给出的两个算法是实用的,它们为特征值估值问题提供了入门知识。另一个更全面和广泛使用的迭代算法是QR算法。比如,MATLAB的命令 的核心是QR算法,这个命令能快速计算出 的特征值和特征向量。在5.2节的习题中对QR算法有过简短的描述,进一步的细节参见有关现代数值分析的教材。

练习题

你怎样断定给出的向量 是矩阵 的某个特征向量的好的近似值?如果是,又怎样估计相应的特征值?用下面给出的矩阵 做练习.

习题5.8

在习题 1~4 中,给出矩阵 和由幂算法产生的序列 。利用这些数据对 的最大特征值进行估计,并求出对应的特征向量。

  1. ,向量 分别是重做习题 5.

寻找一个第2个分量为1且接近于 的一个特征向量的向量,保留4位小数.验证你的估值,并对 的主特征值进行估计.

  1. . 利用下列序列 重做习题 5.

[]习题7~12需要用到MATLAB或其他辅助的计算工具. 在习题7和8中,利用幂算法及给出的 ,对 ,算出 . 在习题9和10中,算出 .

如果知道某个特征向量的近似值,就可以对特征值作另一估值。若 ,则 ,瑞利商 等于 。假如 接近于 对应的特征向量,那么瑞利商就接近于 。当 为对称矩阵时 ,瑞利商 的精确数字大致是幂算法产生的倍乘因子 的 2 倍,在习题 11 和 12 中通过计算 来验证增加的精确度。

习题 13 和 14 应用于一个 矩阵 ,其特征

值被估计为 4,-4 和 3.

  1. 对接近于 4 和 -4 但绝对值不同的特征值,幂算法还有效吗?

  2. 对接近于 4 和 -4 但绝对值相同的特征值,描述怎样才能得到估计接近于 4 的特征值的序列.

  3. 假设 , 数 不是 的特征值, 令 , 在等式 的两边减去 , 用代数方法证明 的特征值, 是其对应的特征向量.

  4. 是习题 15 中矩阵 的特征值, 是对应的特征向量,即有 ,利用这个等式求 的用 表示的特征值。(注意:因为 可逆,故 。)

  5. [] 设 ,利用逆幂法对例3 中的矩阵 的中间特征值进行估值,计算精确到 4 位小数.

  6. [] 设 为习题 9 给出的矩阵, ,利用逆幂法对 接近于 的特征值进行估值,计算精确到 4 位小数.

[]在习题19和习题20中,求()最大特征值,()接近于零的特征值.设 ,在求特征值时,要求近似序列的计算精确到4位小数,还包括近似特征向量的计算.

  1. 一个常见的误解是:假如 有严格主特征值,那么对足够大的 值,向量 近似于 的某个特征向量。对下面给出的三个矩阵,当 时,计算并研究 ,并试图得到一般结论(对 矩阵)。 a. b. c.

练习题答案

对给出的

如果 Ax 近似于 的数倍,那么两个向量相应分量的比率也应该近似于某个常量,故计算:

Ax 的每一个分量大约是 对应分量的 3 倍,故 接近于 的特征向量,上面比率的任何一个都是特征值的近似值。(若精确到 5 位小数,特征值是 3.02409.)