数值分析中关于求矩阵特征值的算法的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 13:30:03
自己编了一个求解矩阵特征值的程序,用幂法求出一个特征值,再对矩阵进行平移(平移量就是刚才求出的特征值),再用幂法求出另一个特征值,这两个就是最大的最小的特征值(注意不是按模最大最小!)

但是我的算法解出来最大特征值正确,可是最小的特征值不对,而一直是次小的那个特征值,请问是什么原因呢?
先不管算法,我想问一下从理论上求解这种类似对角形的对称阵有没有问题?

例如矩阵A
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
特值为
-0.6180
-0.4728
0.5374
1.6180
3.9354
我求出来的是 3.9354和 -0.4728
矩阵B
-1 1 1 0 0
1 -1 1 1 0
1 1 -1 1 1
0 1 1 -1 1
0 0 1 1 -1
特值为
-2.6180
-2.4728
-1.4626
-0.3820
1.9354
我求出来的是 -2.4728和 1.9354

当矩阵对称的时候你的做法是对的,我只能说程序有bug。需要别人帮忙找问题的话就贴程序。
理论上讲乘幂法如果收敛的话一定收敛到模最大的特征值。对于对称矩阵来讲就是最大的或者最小的。然后做一步位移之后矩阵就变成半正定或者半负定的矩阵了,再用一次乘幂法就可以找到另一端的那个特征值。