等于特征C ++中Python的np.linalg.solve(A,B)等于

问题描述 投票:0回答:1
#!/usr/bin/python
x = np.linalg.solve(A, B)

上面的内容可以计算Ax = B]的根,这里,A是一个3×3矩阵,而B是3×1向量。我想在Eigen Library中使用the same function而不是Python Numpy Library找到一个函数。使用Python Numpy linalg.solve(),结果x是正确的。矩阵A和B如下所示:

A: 
  64  256 1024
  48  256 1280
  24  192 1280
B: 
-9
 0
 0

但是,我选择以下代码(C ++ Eigen)解决相同的问题,该错误显示给我。

// C++ with Eigen Library
auto x = A.colPivHouseholderQr().solve(B)

上面的代码在运行时间上有错误:

frenet: /usr/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h:546: void
 Eigen::ColPivHouseholderQR<MatrixType>::_solve_impl(const RhsType&, 
DstType&) const [with RhsType = Eigen::Matrix<double, -1, 1>; DstType = 
Eigen::Matrix<double, -1, 1>; _MatrixType = Eigen::Matrix<double, -1,
 -1>]: Assertion `rhs.rows() == rows()' failed.

我不知道会发生什么。希望您能尽快帮助我!

#!/ usr / bin / python x = np.linalg.solve(A,B)上面的内容可以计算Ax = B的根,这里,A是3×3矩阵,B是3×1向量。我想在Eigen Library中使用...

c++ numpy eigen
1个回答
0
投票

如果在编译时已知A为3x3,我建议直接计算逆值(如果需要多次则仅计算一次)

© www.soinside.com 2019 - 2024. All rights reserved.