2017-05-18 8 views
-1

입니다 :고유 오류 : SelfAdjointView 만 제곱 행렬이 같은 스파 스 선형 시스템 해결 할

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

을하지만,이 코드 실행이 오류가 발생했습니다 : 내가 가진 이유

Assertion failed: (rows()==cols() && "SelfAdjointView is only for squared matrices"), function 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; 
} 

답변

1

ConjugateGradient 알고리즘은 자기 수반 행렬 행렬에서 작동합니다


는이 오류를 재현하는 작은 예제를 작성합니다. 직사각형 행렬의 경우 대신 LeastSquaresConjugateGradient을 사용하십시오.