nev*_*int 9 c++ math boost linear-algebra
加强有一个吗?其中A,y和x分别是矩阵(稀疏且可以非常大)和向量.y或x都可能是未知的.
我似乎无法在这里找到它:http: //www.boost.org/doc/libs/1_39_0/libs/numeric/ublas/doc/index.htm
Inv*_*rse 18
是的,你可以用boost的ublas库来解决线性方程.这是使用LU分解和反向替换得到逆的一种简短方法:
using namespace boost::ublas;
Ainv = identity_matrix<float>(A.size1());
permutation_matrix<size_t> pm(A.size1());
lu_factorize(A,pm)
lu_substitute(A, pm, Ainv);
Run Code Online (Sandbox Code Playgroud)
因此,为了求解线性系统Ax = y,你可以通过取(trans(A)A)^ - 1的逆来求解方程trans(A)Ax = trans(A)y得到x:x =(trans( A)A)^ - 1AY.
线性求解器通常是LAPACK库的一部分,LAPACK库是BLAS库的更高级扩展.如果你在Linux上,那么英特尔MKL有一些很好的解算器,针对密集和稀疏矩阵进行了优化.如果你在窗户上,MKL可免费试用一个月......而且说实话,我还没有尝试过任何其他的试用版.我知道Atlas软件包有一个免费的LAPACK实现,但不确定在Windows上运行有多难.
无论如何,搜索适用于您的系统的LAPACK库.