使用C 提升的矩阵部门

Matrix division using C++ Boost

本文关键字:阵部 使用      更新时间:2023-10-16

现在,我想使用C 提升来求解矩阵函数:a*p = x,p = a x。我有矩阵A和矩阵X,所以我需要做p = a x才能获取矩阵P。这是矩阵分裂问题,对吗?

我的C 代码是

#include "stdafx.h" 
#include <boostmat2cpp-20130725/mat2cpp.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
using namespace boost::numeric::ublas;
using namespace std;
int main() {
    using namespace mat2cpp;
    matrix<double> x(2,2); // initialize a matrix
    x(0, 0) = 1;  // assign value
    x(1, 1) = 1;
    matrix<double> y(2, 1);
    y(0, 0) = 1;
    y(1, 0) = 1;
    size_t rank;
    matrix<double> z = matrix_div(x, y, rank);
}

但是它有错误的错误数字,请帮助我!谢谢!

首先,没有矩阵划分之类的东西。如果您的等式A * p = x,并且想找到P,则该解决方案是:Inv(a) * a * a * p = inv(a) * x,其中Inv(a)是A矩阵的倒数。因为我们知道INV(a) * a等于身份矩阵,所以我们可以得出结论,p = inv(a) *x。

现在,您的问题是计算A矩阵的倒数。有几种方法可以做到这一点,我的建议是使用lu分解。

老实说,我不知道Boost库是否具有Mat2CPP之类的东西。如果您想使用Boost,我建议使用boost/numeric/ublas/matrix.hpp