[英]Complex eigenvectors for symmetric matrix in MATLAB
我有以下代码片段,试图计算真实对称矩阵的本征分解
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
对于真正的对称矩阵应该使一切保持真实。 有人知道为什么会这样吗?
PS。 例如,更改为n = 6,将输出实数。
当矩阵是实且对称的时,MATLAB eig
通常返回实特征向量。 舍入误差会使Z*B*Z'
稍微不对称。 我不知道issymmetric
是如何实现的(这是一个内置函数),但是也许eig
不会使用相同的标准来确定矩阵是否比issymmetric
实且对称。
(W+W')./2
是实现矩阵数值对称的一种简单方法。 因此eig((W+W')./2)
应该返回实值和向量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.