在利用eigs函数计算矩阵最小的几个特征值时,
eigs函数用法:
eigs(A, k, sigma)
A 是要计算的矩阵,
k是想要取得特征值个数
sigma是要大的还是小的
sigma可取如下值:
‘lm’ : 取最大的k个特征值
sm : 取最小的k个特征值
lr :取实部最大的k个特征值
sr : 取实部最小的k个特征值
li : 取虚部最大的k个特征值
si : 取虚部最小的k个特征值
sigma的取值均是字符串(即加引号),具体可参 matlab 的帮助文档,
在命令行输入 (doc eigs)
选用 ‘sm’ 参数,运行help文档中的例子,没有任何问题,而运行自己的矩阵时,就会报错:
错误使用 eigs/checkInputs/LUfactorAminusSigmaB (line 991)
移动的运算符是单数。shift 是特征值。请尝试使用其他的一些 shift。
试了一下,是因为自己的矩阵中有全零行,所以把例子中的第一行全部去掉,再次运行,也会报同样的错误。
只好改用 ‘sr' 参数,
但是这样每次计算的特征值都不一样,有时候还会得到 NaN, 不知道是什么原因。