使用C 提升的矩阵部门
Matrix division using C++ Boost
现在,我想使用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
。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用Google Mock来模拟gettimeofday()
- 如何使用默认参数等选择模板专业化
- 使用类型特征的部分类专用化
- 将 CRTP 与部分类专用化结合使用?
- 使用C++与3000Hz的线阵扫描相机接口,并处理/显示数据
- 如何使用 opencv c++ 从手部轮廓中提取 LBP 特征
- 当我只对比较部分值感兴趣而不能假设另一部分的默认构造函数时,如何使用 std::lower_bound
- 使用OpenCV进行手部检测
- 在 HPIA 上使用'chatr'命令更改 OpenSSL 库内部名称
- 使用OpenCV进行眼部检测(从"Scream's mask"检测眼图)
- 不能使用SFML在结构体内部构造vector对象
- c++ makefile:只使用include目录中的部分头文件