QR算法计算特征值和奇异值

QR算法是世界上最成功的算法之一。我们可以使用动画gif来说明算法的三种变体,一种用于计算非对称矩阵的特征值,一种用于计算对称矩阵的特征值,一种用于计算矩形矩阵的奇异值。在这三种情况下,QR迭代本身之前都要缩减为紧凑形式。所有的变换都是使用吉文斯和Householder变换的正交相似。它们在数值上是稳定的,保持特征值,保持对称。

内容

所有三种变体的起始矩阵都是基于翻转伐木工人矩阵
一个= fliplr(伐木工人)
29 = -49 -52 611 407 -192 196 -44 113 -43 -71 -192 899 196 52 8 49 61 196 899 113 -192 -23 59 44 8 611 196 -192 407 208 208 -599 411 -71 61 -599 208 208 411 44 49 59 -43 -52 -911 99 208 208 8 -44 -49 99 -911 208 208 -23 52 29

非对称特征值

这是起始矩阵的静态图。注意它不是对称的。初始减量用途n -户主类似于在次对角线下一列一次引入零。结果被称为aHessenberg矩阵别让拼写检查器把它变成了海森堡矩阵.)现在QR算法逐渐将大多数次对角线元素减少到舍入水平,所以它们可以被设为零。相应的对角元素是一个特征值。迭代计数显示在标题中。最后一行对角线下方的元素是初始目标;它需要四次迭代。接下来的两行分别需要三次迭代。剩下的子对角线每个只需要一个或两个迭代。所有这些都是用实算术完成的,尽管实的非对称矩阵可能有复特征值。最终的矩阵可能在对角线上有2 × 2的凸起。本例在第3行和第4行有一个碰撞。凸起的特征值是输入矩阵的特征值的复共轭对。所有其他对角元素都是输入矩阵的实特征值。计算得到的特征值为:
-1010.9 1017.3 -14.529 + 903.74i -14.529 - 903.74i 206.9 -30.004 1.7094 5.614e-13

对称的特征值

对称矩阵是
S = (a + a ')/2;流([repmat (' % 7.1 f '1 8)' \ n '),)
29.0 -46.5 0.0 -15.5 307.5 8.0 -357.5 355.0 -46.5 -8.0 -17.5 -6.0 8.0 160.5 499.0 -357.5 0.0 -17.5 49.0 52.5 -201.5 655.0 160.5 8.0 -15.5 -6.0 52.5 8.0 511.0 -201.5 8.0 307.5 307.5 8.0 -201.5 511.0 8.0 52.5 -6.0 -15.5 8.0 160.5 655.0 -201.5 52.5 49.0 -17.5 0.0 -357.5 499.0 160.5 8.0 -6.0 -17.5 -8.0 -46.5 355.0 -357.5 8.0 307.5 -15.5 0.0 -46.5 29.0
这是静态图。(计算是在矩阵的一半上完成的,但我们显示了整个数组。)通过对称,六位住户使列归零,也使行归零。现在QR迭代只针对两个向量,对角线和非对角线。极限是包含特征值的对角线。
-1010.9 1017.4 -558.86 -481.89 -86.32 109.7 662.7 504.27

圣言会

通过插入单位矩阵的几行,使我们的测试矩阵成为矩形。
我=眼睛(8);: = [(1:4);我(1:);:一个(8);我(2)):
29 = -49 -52 611 407 -192 196 -44 113 -43 -71 -192 899 196 52 8 49 61 196 899 113 -192 -23 59 44 8 611 196 -192 407 1 0 0 0 0 0 0 0 208 208 -599 411 -71 61 -599 208 208 411 44 49 59 -43 -52 -911 99 208 208 208 208 -49 99 -911 -23 52 -44 29 0 1 0 0 0 0 0 0
使用一个Householder操作从左到零的列,然后另一个Householder操作从右到零的大部分行。现在,一个双面QR迭代将非对角线减小到可以忽略不计的大小。结果的对角线包含奇异值。
0.44272 0.13184 1000 1000 1019.9 1020 1020 1020

软件

看到eigsvdguiMATLAB的数值计算克里夫的实验室

发布与MATLAB®R2018b

|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。