matlab eigs 報錯:錯誤使用 eigs/checkInputs/LUfactorAminusSigmaB (line 991) 移動的運算符是單數。shift 是特徵值。

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章