2010-06-26 106 views

回答

0

至少如果内存服务,一种可能性将是Boost::uBlas。虽然Boost作为一个整体是相当大的,uBlas本身是比较合理的。此外,如果内存服务它是一个只有标题的库,所以使用它很容易(你不必先建立库,为链接器设置任何东西,等等)。

编辑:我应该补充说通常计算特征值/矢量的速度相当缓慢,即使使用相当优化的代码。根据你正在做的事情,通常需要研究一些方法(例如,让你通过计算矩阵子集的特征值(例如,Landmark Multidimensional Scaling))。

+0

谢谢,但它有一个函数返回的最大特征值?我没有在文档中看到它。 – Erin 2010-06-28 12:41:43

+0

没有LAPACK函数返回最大的特征值。你可以做一个蛮力矩阵对角化,它可以给你所有的特征值,但是如果你使用专门的Lanzos求解器,那会更快地窒息。 – 2012-01-21 16:27:20

2

我不能为您提供任何细节,因为我自己并没有使用它,但我认为ARPACK可能有帮助,尤其是ARPACK ++,它是C++自适应,因为原始包在Fortran77中。我认为MATLAB函数eigs()使用它来找到最大的特征值(和相应的特征向量)。从我听到的应该能够与STL交互。

MATLAB使用Fortran77例程DSAUPD,DSEUPD,DNAUPD,DNEUPD,ZNAUPD和ZNEUPD。他们看起来像在ARPACK ++中寻找的那些。

Check it out here.

+0

确实,ARPACK是最好的之一(+1)。尽管如此,不能保证它的C++接口。 – 2012-01-21 16:30:39

相关问题