我试图找到拉普拉斯算子的2个最小特征值的2个eignevector。我这样做

[v,c]=eigs(L,M,2,'SM');

其中L是拉普拉斯式,而M是质量矩阵。

结果我得到了错误
Error using eigs/checkInputs/LUfactorAminusSigmaB (line 1041)
The shifted operator is singular. The shift is an eigenvalue.
 Try to use some other shift please.


Error in eigs/checkInputs (line 855)
            [L,U,pp,qq,dgAsB] = LUfactorAminusSigmaB;

Error in eigs (line 94)
[A,Amatrix,isrealprob,issymA,n,B,classAB,k,eigs_sigma,whch, ...

这是否意味着我做错了,还是只是matlab在为其迭代过程中选择了错误的初始猜测?

我使用的矩阵应具有下降条件编号。

最佳答案

在实现标准化切割分割时遇到了相同的问题。条件数实际上是无限的,因为最小的特征值是0,这基本上就是MATLAB的错误消息所针对的。它首先运行LU分解。

我只是将I的10 * eps * speye的倍数添加到归一化的拉普拉斯算子中以改善条件并对其进行了修复。

10-04 16:22