在 Matlab 中提高 polyeig 的精度

Increasing precision of polyeig in Matlab

我在 Matlab 中使用 polyeig 命令求解 Matlab 中的 2 阶多项式特征值问题。我知道系统有一个单一的 0 特征值(这是由于零系数矩阵的形式,其中每个对角线元素是 -1 乘以同一行中元素的总和,所以向量 (1 1 1 ... 1 ) 具有 0 个特征值)。

系统的大小约为 150 到 150。 当我使用 polyeig 命令时,我得到的最低特征值是 1E-4 阶(应该是 0 特征值),第二低的是 1E-1 阶。随着系统大小的减小,最低特征值减小到 1E-14 的数量级,这是合理的,但 1E-4 太多了。

有没有更好的准确性或您建议的任何其他库? 我还可以将多项式特征值问题转化为更高维度(给定维度的 2 倍)的广义特征值问题,但我不确定这对速度和准确性有何影响。在重新制定问题之前,我想看看是否有更简单的解决方案。因此,我欢迎就这些问题提出任何建议。

编辑:问题已解决,实际上是关于我使用的 INPUT 文件的精度,该文件最多只打印了 4 位数字。找到更好的后,精度提高了。无论如何谢谢。

问题出在我使用的输入文件上,它只打印了最多 4 个小数点。现在即使使用 800x800 的矩阵,我也只会遇到高达 e-11 的精度问题,这很好。