Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中对称矩阵的复特征向量_Matlab_Matrix_Eigenvector - Fatal编程技术网

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

MATLAB中对称矩阵的复特征向量,matlab,matrix,eigenvector,Matlab,Matrix,Eigenvector,我有下面的代码片段,试图计算实对称矩阵的特征分解 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 不幸的是,这似乎在MatlabR2013A上产生了真正复杂的特征向量。我曾经认为,对于实对称矩阵,eig应该使所有的东西都是实的。有人知道为什么会这样吗

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

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
不幸的是,这似乎在MatlabR2013A上产生了真正复杂的特征向量。我曾经认为,对于实对称矩阵,
eig
应该使所有的东西都是实的。有人知道为什么会这样吗


例如,更改为n=6会输出一些实值。

MATLAB
eig
通常在矩阵为实且对称时返回实特征向量。舍入误差会使
Z*B*Z'
略微不对称。我不知道
issymmetric
是如何实现的(它是一个内置函数),但可能
eig
没有使用与
issymmetric
相同的标准来确定矩阵是否为实矩阵和对称矩阵


执行
(W+W')。/2
是强制矩阵在数值上对称的一种简单方法。因此,
eig((W+W')./2)
应该返回实值和向量。

实对称矩阵可以有复杂的特征向量。即使手动生成真实的,也可以通过在同一特征空间内进行线性组合来得到复杂的。试想一下这个简单的例子:身份矩阵有复杂的特征向量吗?实对称矩阵总是有实矩阵eigenvalues@Ben,我理解,但是这个想法是,你可以得到实对称矩阵的完全实特征分解,通过保持所有代数在实中。存在一套完整的真实特征向量,我希望matlab能够输出这些。