如何计算最小非零特征值

2024-06-26 14:08:00 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个半正定矩阵M,我想求它的最小非零特征值。在python中,这段代码看起来很诱人

import numpy as np
(w,v) = np.linalg.eigh(M)
minw = np.amin(w)
if (np.isclose(minw,0) and minw > 0):
    print M, minw

下面是一个小输入矩阵的例子。在

^{pr2}$

不幸的是,如果您尝试此操作,您将得到8.90238403828e-16。一般来说,我不知道如何判断非常小的数字是否等于零。在

如何找到矩阵的最小非零特征值(并确保它真的是非零)?在


Tags: and代码importnumpyifasnp矩阵
2条回答

很可能是函数中的浮动问题。解决办法将取决于问题的严重程度。您可以尝试循环结果并使用函数(numpy)查找最小值:

    np.isclose(a,b)

,使两个值在一个公差内具有相似性。这不是一个干净的解决方案,但它通常被认为是一个安全的比较。至于“eigh”代码本身也许是收敛的问题,但我真的说不出来。在

你首先要检查矩阵的可逆性。一种方法是用numpy.linalg.det计算行列式。如果它不可逆,你可以将这个矩阵投影到与核正交的空间中。投影矩阵现在是可逆的,具有最小值的特征值是原始矩阵的最小非零特征值。在

相关问题 更多 >