本文所采用的是幂算法计算矩阵最大特征值(只计算最大特征值),具体的细节可以参考:http://blog.csdn.net/whucv/article/details/7636135
这儿只给出伪代码和源码,方便各位同学使用。
假设待计算的矩阵为A[N][N],一个N维的方阵.
申明一个辅助向量(一维数组)v[N].并初始化
//对应函数InitialV()
for i=1:n
v[i]=1
end
然后进行不停的迭代,当迭代的次数趋于无穷时,max的值越接近于真实的最大特征值。
在实际中,可以考察前后两次迭代的值的差距,如果该差距在可以接受的范围内(比如0.00001),则可以结束迭代
迭代过程:
while(true)
1.v=matrix * v; // 对应函数ComputeNewV()
2.max=v(1:n); // 对应函数GetMaxV();
3.v=v/max; // 对应函数NormalizeV();
end
解释:
1.矩阵相乘。用matrix和v向量进行相乘,结果保存在v中。相乘的过程和矩阵乘法一样(需要假象将v倒置)
2.获取上一步后产生的最大v值,记为max(即一维数组v中的最大值),用该