繁体   English   中英

MATLAB中对称矩阵的复特征向量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM