准确找到最小特征值

3
我想要准确地找到矩阵的最小(绝对值非零)特征值。我可以使用numpy的浮点运算来实现,但是:
  • 是否有一种方法可以得到精确答案?
  • 必须使用sympy吗,还是有其他方法?
这些矩阵将会很小(比如说小于20x20),并且其数值为整数。当我说精确答案时,我的意思类似于John Habert的答案

你能定义一下你所说的“精确”是什么意思吗?我们讨论的是哪种类型的矩阵?大小是多少? - David Heffernan
我认为在所有情况下都无法得到确切的答案,即使是由整数元素组成的矩阵。 - user2357112
2个回答

7

特征值是代数数,也就是某些多项式的根。该多项式的次数将是矩阵的维度。对于多项式的次数最高为4的情况,你原则上可以将这些数字写成嵌套根的形式,但超过这个范围,通常无法精确表示特征值。即使在可能的情况下,您肯定也不想看到确切的值,在这里有一个看似无害的小矩阵的示例:


2
从您的帖子中并不清楚矩阵是否为Hermitian。我不知道一般情况下的方法。
但是!如果矩阵是Hermitian(对称正定),则可以避免计算所有特征值,如果您只需要最小的特征值(它将是正数)。您可以使用逆迭代。http://en.wikipedia.org/wiki/Inverse_iteration 您可以从mu = 0开始使用该算法;然后使用Rayleigh商http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration,这通常会给您带来非常快的收敛速度。该方法涉及解线性方程组(或者等价地,计算逆矩阵),但是如果矩阵再次是Hermitian,则可以为其生成Cholesky分解,然后使用所得到的三角形矩阵来解决这些系统。
在某些情况下,该方法会收敛到不正确的特征值(例如,接近最小值的特征值)。
另外,一个有趣的观察是矩阵A的最大特征值等于该矩阵的范数(元素平方和的平方根)。A的最小特征值等于1除以A的逆矩阵的范数。因此,如果您的矩阵不是非常大且其逆存在,则可以承担反转它,然后计算1 / norm(inv(A))。这个值将是A的最小特征值。

我不是数值分析师,但似乎反迭代法给出的是特征值的数值近似,而不是 OP 寻找的精确特征值。我认为最后一段不正确:[[1 0] [0 2]] 的范数为 √5。也许范数限制了特征值的取值范围? - Teepeemm
是的,你说得对,它会给出一个近似值,可能不完全符合OP的要求。Matlab为您的矩阵给出了norm = 2。也许这是因为它计算了L2范数。您提到了Frobenius范数,它是sqrt(5)。当我说最大特征值等于“矩阵元素平方和的平方根”时,我是错误的。实际上有不同的范数: http://mathworld.wolfram.com/MatrixNorm.html http://mathworld.wolfram.com/FrobeniusNorm.html感谢指出这种歧义。 - Alexey Chernyavskiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接