Matlab如何规范化广义特征向量?

时间:2019-01-11 16:19:37

标签: matlab

我知道eig(A)产生的特征向量具有2范数1。但是,广义特征值问题eig(A,B)中产生的向量又如何呢?一个自然的推测是,这样的向量v应该满足v' B v = 1。当B是单位矩阵时,则v' B v恰好是2范数的平方。我对各种矩阵A和B进行了以下测试:

[p,d]=eig(A,B);
v=p(:,1);
v'*B*v

我总是选择B为对角线。我注意到v' B v并不总是1。但是,当A是对称的时,确实为1。有人知道Matlab归一化广义特征向量的方式的规则吗?我在文档中找不到。

2 个答案:

答案 0 :(得分:1)

根据the documentation(强调我):

  

V的形式和规格化取决于输入参数的组合:

     
      
  • [...]

  •   
  • [V,D] = eig(A,B)[V,D] = eig(A,B,algorithm)返回V作为矩阵,其列是满足A*V = B*V*D的广义右特征向量。 每个特征向量的2范数不一定是1 。在这种情况下,D包含沿主对角线的(AB)对的广义特征值。

         

    eig'chol'算法用于对称(埃尔米特)A和对称(埃尔米特)正定B时,它将对{{ 1}},因此每个V的范数均为1 。

  •   

这意味着,除非您使用B算法,否则'chol'不会被标准化。

答案 1 :(得分:0)

如果我正确地理解了您,您正在寻找一种推广向量的方法,然后给定向量,您可以将其除以其范数以获得范数为1的第二向量。

如果您正在寻找数学背景,那么Eigendecomposition of a matrix会提供很好的介绍。