Matlab是矩阵运算/线性代数最常用的库。不过由于licence问题,一般更多用于做实验什么的,另外,虽然Matlab可以方便的用C写扩展,但是Matlab自己的函数却很难被其他语言调用。
Octave是Matlab一个不错的开源替代,不过Octave也有一些问题,1,Octave并没有实现Matlab太多功能 2, Octave在做一些没有向量化的矩阵计算时,非常非常慢(大致比Matlab慢200倍左右)
C科学计算最经典的库是LAPACK/MKL/AKL 之类,不过用起来非常麻烦,有很多为这些库的封装,保留速度的同时,提升接口的友好性。这里(http://verdandi.gforge.inria.fr/doc/linear_algebra_libraries.pdf)是一些库的比较。
Armadillo是其中一个比较高效同时也比较友好的C++科学计算库(http://arma.sourceforge.net/)
这里(http://arma.sourceforge.net/armadillo_nicta_2010.pdf)有一些Armadillo和其他库(包括Matlab,Octave)的比较, 看起来是很厉害的一个库,从给的example来看,接口还是比较友好的,应该会是一个比较流行的库。