c++ - Boost 的 y=Ax 的线性代数解决方案

标签 c++ math boost linear-algebra

boost有吗? 其中 A、y 和 x 分别是矩阵(稀疏且可以非常大)和 vector 。 y 或 x 可以是未知的。

我在这里找不到它: http://www.boost.org/doc/libs/1_39_0/libs/numeric/ublas/doc/index.htm

最佳答案

是的,您可以使用 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);

因此,要求解线性方程组 Ax=y,您需要求解方程式 trans(A)Ax=trans(A)y,方法是取 (trans(A)A)^-1 的倒数得到 x:x = (反式(A)A)^-1Ay。

关于c++ - Boost 的 y=Ax 的线性代数解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225411/

相关文章:

elasticsearch - Elasticsearch 5:Boost 1字段

C++ 作业 - 计算字数

python - 为什么在 Python 中对一些大整数进行除法和乘法会返回奇怪的结果?

c++ - OpenGL - 翻译拉伸(stretch)和扭曲 Sprite

algorithm - 给定一组区间,找到最少需要放置的点数,使得每个区间都有一个点在里面

c - 快速物流功能

c++ - Windows 事件的等效 boost

c++ - Boost记录器静态链接: Not Working

c++ - 在 Rcpp 中调试运行时错误

c++ - 使用 boost::accumulators 对值之间的增量进行采样