用吉文旋转计算海森伯格矩阵



我正在matlab中实现计算给定矩阵a的海森伯格矩阵。我懂数学,我手工计算过,但我总是得出同样的答案。

矩阵A =

-149.0000  -42.2037 -156.3165
 537.6783  152.5511  554.9272
        0   -0.0728    2.4489

My result =

-149.0000  -42.2037 -156.3165
 537.6783  152.5511  554.9272
        0   -0.0728    2.4489

hess在matlab中的结果=

-149.0000   42.2037 -156.3165
-537.6783  152.5511 -554.9272
        0    0.0728    2.4489

我得到的结果是只使用一个给定的旋转

G {1} (3, 4)

1.0000         0         0
     0    0.9987    0.0502
     0   -0.0502    0.9987

G{1}(3、4)。转置* A * G{1}(3,4)会得到正确的解

正如你所看到的,我得到的结果有一些负号,它们不属于。是我的实现错了,还是hess的实现错了,还是两者都有效?

提前感谢!

都是有效的。注意:

  • 矩阵的Hessenberg分解不是唯一的。例如,对角线上有+/-1的对角线矩阵是正交的;如果你选择其中一个,用它来共轭你的海森伯格分解,你会得到一个不同的海森伯格分解。
  • 你的A已经处于上海森伯格形态。什么都不需要做就能把它变成上海森伯格形式;
  • 可以取P = IH = A

我冒昧地猜测Matlab使用Householder变换而不是给定旋转来将矩阵减少到上海森伯格形式。户主转换是反射,因此具有负行列式。这可以翻转一些非对角线符号

最新更新