matlab 对称矩阵特征值为负数,MATLAB中对称矩阵的复特征向量

我在使用matlabeig函数计算对称矩阵的特征值和特征向量时遇到了一个问题。在

矩阵D是

10x10

所有对角线元素=0.45

所有非对角线元素=-0.05

当使用[vec,val]=eig(D)时,一些得到的特征向量包含复数(即0.3384+0.0052i)。我在网上搜索过,发现了两篇关于类似问题的相关帖子,但没有帮助我找到解决办法。在

所以我在pythonnumpy中尝试了相同的子例程(纽比.利纳格.埃(D) )它给了我所有的实特征值和特征向量。Python的结果是正确的,因为我能够用一篇发表的论文来验证我的最终结果。在

我的问题是什么导致MATLAB给出对称矩阵的复特征值和特征向量?有办法绕过它吗?我当然可以用Python重写我的算法,但我宁愿避免这种情况。在

注:如果我尝试4x4矩阵,所有对角线元素=0.375,所有非对角线元素=-0.125,那么MATLAB eig(D)给出了所有实特征值和特征向量。在

提前感谢您对这个问题的任何建议。在

跟进。用于生成D和特征值/向量的代码:P = eye(10) - 1/10;

delta = 1 - eye(10);

A = -0.5 * delta;

D = P*A*P;

[vec val] =eig(D)

你可能感兴趣的:(matlab,对称矩阵特征值为负数)