对称矩阵的复特征向量



我有以下代码片段,试图计算实对称矩阵的特征分解

K = 3;
n = 10;
Z = rand(n,K);
B = rand(K,K);
B = 0.5*(B+B') + 3*eye(K);
W = Z*B*Z';
if issymmetric(W) && isreal(W)
    [U,D] = eig(W)
end

不幸的是,这似乎在MATLAB R2013a上产生真正复杂的特征向量。我曾经认为对于实对称矩阵eig应该使所有的都是实的。有人知道为什么会这样吗?

p。例如,将n = 6更改为实际值。

当矩阵是实数对称时,MATLAB eig通常返回实数特征向量。舍入误差会使Z*B*Z'稍有不对称。我不知道issymmetric是如何实现的(它是一个内置函数),但也许eig不使用相同的标准来确定矩阵是否比issymmetric真实和对称。

一个简单的方法来强制矩阵是数字对称的是做(W+W')./2。因此,eig((W+W')./2)应该返回实数和向量。

最新更新