matlab eigs:三对角矩阵的错误特征值

计算科学 matlab 特征值
2021-12-10 19:21:33

我尝试计算来自有限差分方案的三对角矩阵的特征值。对于小网格尺寸,eigs 效果很好。但是对于大尺寸它失败了。这是一个 eigs 失败的例子。有没有其他方法可以在 matlab 中可靠地计算一些特征向量?

n = 1000; h = 1/n;
e = ones(n,1);
A = (1/h)*spdiags([e, -2*e, e], -1:1, n, n);
e = eigs(A,10,'LA')
2个回答

我能够通过使用其中一个 eigs 选项来解决您的示例,以将 eigensolution 中使用的 Lanczos 向量的数量从默认值(在您的情况下为 20)增加到 50:

opts.p = 50;
e = eigs(A,10,'LA',opts)

我不相信该算法对这个数字非常敏感,但显然,有必要对您的实际问题进行一些实验,看看您是否可以选择一个始终有效的值。

我不知道有任何其他 MATLAB 函数可以从大型稀疏矩阵中计算一些特征值。

由于您的矩阵是三对角矩阵,因此您可以使用专门为三对角矩阵设计的特征值算法。这是您可以尝试的一个(虽然我还没有尝试过),trideigs作者是 Vasil Yordanov