我无法理解Python中的ARPACK对特征值问题的解决方案

时间:2014-10-23 19:21:30

标签: python numpy matrix

我试图通过使用包含在Python的numpy中的ARPACK来解决一个简单的特征值问题。广义特征值问题是Lx = lambdaFx,其中矩阵L和F的超链接紧接在下面。我使用numpy.savetxt来保存这些矩阵,所以你最简单的方法就是使用numpy.loadtxt,例如np.loadtxt(' F.out'),直接得到2D矩阵,其尺寸为180 * 180。如果您有任何问题,请告诉我。

https://www.dropbox.com/s/c24maowf24eqcy3/F.out?dl=0 https://www.dropbox.com/s/2aodknq0rdcy8k0/L.out?dl=0

然后调用eigs函数

eigs(L, 10, F, sigma=0.6, which='LM')

我寻找10个约0.6的特征值。结果是

0.57478719-0.01136287j  
0.57478719+0.01136287j 
0.57810950-0.0183666j
0.57810950+0.0183666j  
0.57388571-0.01499086j  
0.57388571+0.01499086j
0.58563972-0.02572953j 
0.58563972+0.02572953j 
0.61673303-0.02656085j
0.61673303+0.02656085j

但是当我设置要求的特征值的数量为50时,解决方案完全不同,这是

0.597747500000000 - 0.000281040000000i
0.597702020000000 + 0.000330230000000i
0.597718060000000 - 0.000507740000000i
0.597753770000000 + 0.000616410000000i
0.597868100000000 - 0.000899980000000i
0.597933180000000 + 0.001078770000000i
0.598383060000000 - 0.001671530000000i
0.598477610000000 + 0.001758160000000i
0.598707890000000 - 0.001942210000000i
0.599190580000000 + 0.002193790000000i
0.602047010000000 - 0.001129780000000i
0.601907360000000 + 0.001352900000000i
0.601100090000000 - 0.002059190000000i
0.601640660000000 + 0.001653970000000i
0.601461590000000 - 0.001833750000000i
0.601373900000000 + 0.001912630000000i
0.597747500000000 + 0.000281040000000i
0.597759400000000 - 0.000389200000000i
0.597718060000000 + 0.000507740000000i
0.597811070000000 - 0.000755450000000i
0.597868100000000 + 0.000899980000000i
0.598267470000000 - 0.001578010000000i
0.598383060000000 + 0.001671530000000i
0.598588530000000 - 0.001835530000000i
0.598707890000000 + 0.001942210000000i
0.599704340000000 - 0.002318040000000i
0.602047010000000 + 0.001129780000000i
0.601739360000000 - 0.001547320000000i
0.601100090000000 + 0.002059190000000i
0.601554210000000 - 0.001749120000000i
0.601461590000000 + 0.001833750000000i
0.601241730000000 - 0.001996120000000i
0.597702020000000 - 0.000330230000000i
0.597759400000000 + 0.000389200000000i
0.597753770000000 - 0.000616410000000i
0.597811070000000 + 0.000755450000000i
0.597933180000000 - 0.001078770000000i
0.598267470000000 + 0.001578010000000i
0.598477610000000 - 0.001758160000000i
0.598588530000000 + 0.001835530000000i
0.599190580000000 - 0.002193790000000i
0.599704340000000 + 0.002318040000000i
0.601907360000000 - 0.001352900000000i
0.601739360000000 + 0.001547320000000i
0.601640660000000 - 0.001653970000000i
0.601554210000000 + 0.001749120000000i
0.601373900000000 - 0.001912630000000i
0.601241730000000 + 0.001996120000000i

我认为这10个特征值将出现在50个特征值结果中,但事实并非如此。这是由于ARPACK使用的算法吗?或者我做错了什么?我知道这里的矩阵是高度非Hermitian所以它不容易解决,但至少结果应该是一致的。

提前感谢您的帮助。

0 个答案:

没有答案