在利用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, 不知道是什麼原因。