从特征值、特征向量构造矩阵(与 Matlab 的 eig() 不一致)

计算科学 matlab 矩阵 特征值
2021-11-28 22:01:15

F1,F2成为椭圆的焦点E:xTAx=1,xR2,AS++2. 也让a,b是的半轴E. 我们想找到(对称正定)矩阵A.

我尝试了以下方法:

我首先构造了对角矩阵D=diag{a2,b2}. 然后我构造了正交矩阵U=[u1u2], 在哪里u1=F1F2u2u1, 具体来说u2=(u12,u11)T.

最后我得到了A=UDUT. 但是,当我使用 Matlab 的eig() 函数再次获取特征值和特征向量时,虽然我得到了正确的特征值,但我得到了与特征向量相反的结果。

这里有什么错误?非常感谢!

1个回答

正如一些评论中所指出的,如果v是一个特征向量A, 那么也是αv对于任何α0. 给定一个特征值λ,因此有无穷多个特征向量。无论您使用什么求解器都会对特征向量进行归一化,从而将此集合减少为两种可能性;±v在哪里|v|=1. 求解器无法知道您想要这两个中的哪一个。

这就提出了一个问题,你在乎你得到什么吗?就指定椭圆或跨越相关空间而言,答案是否定的。如果{vi}是特征向量的集合,那么这些向量上符号变化的任意组合,{±vi}, 跨越相同的子空间并在构造矩阵时等效地定义相同的椭圆A从他们。

然而,在某些情况下,你得到什么很重要。例如,如果您想获得给定时间序列矩阵的椭圆的角速度{Ai},你可以使用每个的特征向量来做到这一点Ai. 其列是特征向量的矩阵A定义一个旋转,在这种情况下,采用相反的特征向量将给出不同的旋转(尽管相对于椭圆对称)。

标志是什么对你的问题重要吗?如果是这样,我们可以设计一种方法来为您提供“正确”的方法。