我想准确找到矩阵的最小(绝对值)非零特征值。我可以使用numpy但
使用浮点运算矩阵将是小的(比如小于20乘20)具有整数值。当我说出确切的答案时,我的意思与the answer of John Habert中的答案类似。
答案 0 :(得分:7)
特征值是algebraic numbers,它是某个多项式的根。该多项式的程度将是矩阵维度。对于高达4阶的多项式,原则上你能够将这些数字写成嵌套的根,但除此之外,通常无法准确地表示特征值。即使在可能的情况下,你肯定不希望看到确切的值,这里是一个看似无辜的小矩阵的例子:
答案 1 :(得分:1)
从你的帖子中不清楚矩阵是否是Hermitian。我不知道一般情况的方法。
但是!如果矩阵是Hermitian(对称正定),你可以避免计算所有的特征值,如果你只需要最小的(这将是正的)。您可以使用反向迭代。 http://en.wikipedia.org/wiki/Inverse_iteration
您可以使用mu = 0启动算法;然后使用瑞利商 http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration这通常会给你非常快速的收敛。该方法涉及线性方程组的解(或者,有点等效地,逆矩阵的计算),但如果再次,矩阵是Hermitian,您可以为它生成Cholesky分解,然后使用得到的三角矩阵解决这些问题。
在某些情况下,该方法会收敛到不正确的特征值(例如,在最小的特征值旁边)。
另外,一个有趣的观察结果是矩阵A的最大特征值等于该矩阵的范数(其元素的平方和的平方根)。 A的SMALLEST特征值等于1除以A的INVERSE的范数。因此,如果你的矩阵不是很大并且它的逆存在,你可以反转它,然后就这样做,并计算1 / norm (INV(A))。该值将是A的最小特征值。