是否有提升吗? 其中A,Y和X是一个矩阵(稀疏,并且可以是非常大的)和载体分别。 Y或X可以是未知的。
我似乎无法在这里找到它: http://www.boost.org/doc/libs/1_39_0/libs/numeric/ublas/doc/index.htm
是否有提升吗? 其中A,Y和X是一个矩阵(稀疏,并且可以是非常大的)和载体分别。 Y或X可以是未知的。
我似乎无法在这里找到它: http://www.boost.org/doc/libs/1_39_0/libs/numeric/ublas/doc/index.htm
线性求解器通常是LAPACK库这是BLAS库的更高级别的扩展的一部分。 如果你是在Linux上,英特尔MKL有一些很好的解决者,无论是密集和稀疏矩阵优化。 如果您使用的是Windows,MKL有免费一个月的审判......并说实话,我还没有尝试过任何其他的人在那里。 我知道阿特拉斯包有一个免费的LAPACK实现,但不知道它是如何努力让运行在Windows。
不管怎么说,搜索周围的LAPACK库,您的系统上工作。
是的,你可以解决升压转换器的的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);
因此,求解线性方程Ax = y,则通过采取逆解方程反式(A)组Ax =反式(A)Y(反式(A))^ - 1获得X:X =(反式( A)A)^ - 1AY。
一为Ax = b的最好的解算器,当A是稀疏的,是蒂姆·戴维斯的UMFPACK
UMFPACK
计算A的稀疏LU分解是键入时得到在Matlab幕后使用的算法x=A\b
(和A是稀疏和正方形)。 UMFPACK
是免费软件(GPL)
还要注意如果y = AX,并且x是已知的,但y不是,则通过执行稀疏矩阵矢量相乘,不够通过求解线性系统计算收率
阅读Boost文档,它似乎并不像解决WRT x被实现。 在y中求解是唯一的矩阵矢量乘积,这似乎在uBLAS库实现的问题。
有一点要记住的是,BLAS只有实现诸如加法,乘法,等“易”业务...向量和矩阵类型。 任何更高级的(线性解决问题,喜欢你“解决在XY = A x”的,特征向量和共)是LAPACK,其构建在BLAS的顶部的一部分。 我不知道在这方面提供了什么样的推动作用。
Boost的线性代数软件包的调整为重点的“密集矩阵”。 据我所知,Boost的包没有任何线性系统求解。 怎么样“在C(数值配方中使用的源代码http://www.nr.com/oldverswitcher.html )”?
注意。 可以有微妙索引错误在源代码中(一些代码使用数组索引从1开始)
看看JAMA / TNT 。 我只用它的非稀疏矩阵(你可能想的QR或LU因式分解,这两者有求解效用的方法),但它显然有稀疏矩阵的一些设施。