最近需要在C++环境下求矩阵的特征值和特征向量,根据任务需求有两种思路可供选择:
- 使用现成的矩阵库
网上有一些开源的矩阵库可以使用,在Windows下可以参考张睿卿的博客C++矩阵处理工具——Eigen,在Linux环境下可以参考博客C 和 C++ 的矩阵库。这里有一篇博客调查了各种C++矩阵算法包在VisualStudio2005中求解实对称矩阵特征值算法包调查,建议使用LAPACK/CLAPACK库,具有惊人的效率。 - 自己代码实现矩阵基本运算
求矩阵的特征值与特征向量有三种方法:幂法、雅克比法以及QR法
目前觉得可以使用QR分解的方法来求特征值,有一篇参考博客C++通过QR分解法求矩阵特征值Matrix_EigenValue先Mark一下。
参考博文矩阵的特征值和特征向量的雅克比算法C/C++实现
觉得自己代码实现比较好的方案是用数值分析里的雅各比迭代法求对称矩阵的全部特征值和特征向量。