C++ 特征误差:自伴视图仅适用于平方矩阵

C++ 特征误差:自伴视图仅适用于平方矩阵,c++,matrix,eigen,eigen3,C++,Matrix,Eigen,Eigen3,我想解一个稀疏线性系统,如下所示: SparseMatrix<double> A(m, n); VectorXd b(m); ConjugateGradient<SparseMatrix<double>, Upper> solver; solver.compute(A); VectorXd X = solver.solve(b); SparseMatrix A(m,n); 向量xd b(m); 共轭梯度解算器; 计算(A); VectorXd X=解算器解算

我想解一个稀疏线性系统,如下所示:

SparseMatrix<double> A(m, n);
VectorXd b(m);
ConjugateGradient<SparseMatrix<double>, Upper> solver;
solver.compute(A);
VectorXd X = solver.solve(b);
SparseMatrix A(m,n);
向量xd b(m);
共轭梯度解算器;
计算(A);
VectorXd X=解算器解算(b);
但我在运行此代码时出错:

断言失败:(rows()==cols()&&“SelfAdjointView仅适用于平方矩阵”),函数SparseSelfAdjointView

我为什么会遇到这个问题以及如何解决它


我写了一个小例子来重现这个错误:

#include "lib/Eigen/Sparse"

using namespace Eigen;

int main()
{
    SparseMatrix<double> A(2, 3);

    A.coeffRef(0, 0) = 1;
    A.coeffRef(0, 1) = 1;
    A.coeffRef(0, 2) = 1;
    A.coeffRef(1, 0) = 1;
    A.coeffRef(1, 1) = 1;
    A.coeffRef(1, 2) = 1;

    VectorXd b(2);
    b << 3, 3;

    ConjugateGradient<SparseMatrix<double>, Upper> solver;
    solver.compute(A);
    VectorXd X = solver.solve(b);

    return 0;
}
#包括“lib/Eigen/Sparse”
使用名称空间特征;
int main()
{
SparseMatrix A(2,3);
A.系数ref(0,0)=1;
A.系数ref(0,1)=1;
A.系数ref(0,2)=1;
A.系数ref(1,0)=1;
A.系数ref(1,1)=1;
A.系数ref(1,2)=1;
向量xd b(2);

b共轭梯度
算法仅适用于自伴矩阵。对于矩形矩阵,使用
最小平方共轭梯度