我有一个复杂的矩阵A和一个复杂的向量b。我想解决线性系统Ax = b。 我尝试使用此页面上的示例,并使其适应我的复杂问题。 http://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html
以下是我正在尝试做的简化示例:
我的对象是这样定义的:
typedef Eigen::Matrix<complexd, Eigen::Dynamic, Eigen::Dynamic> DoubleComplexMatrix;
typedef Eigen::Array<complexd, Eigen::Dynamic, 1> DoubleComplexArray;
在我的代码中,我想解决这个问题
DoubleComplexMatrix A(3,3);
DoubleComplexArray b(3);
DoubleComplexArray x(3);
A << 1,2,3, 4,5,6, 7,8,10;
b << 3, 3, 4;
cout << "Here is the matrix A:\n" << A << endl;
cout << "Here is the vector b:\n" << b << endl;
ColPivHouseholderQR<DoubleComplexMatrix> dec(A);
x = dec.solve(b);
cout << "The solution is:\n" << x << endl;
错误显示在以下行:DoubleComplexArray x = dec.solve(b);
,因为当我发表评论时,不会再出现错误。
我收到此错误:
TideSolve.cpp:98:38: error: no matching function for call to ‘Eigen::ColPivHouseholderQR<Eigen::Matrix<std::complex<double>, -1, -1> >::solve(DoubleComplexArray&)’
DoubleComplexArray x = dec.solve(b);
这是否意味着本征求解器不能与复数一起使用? (我确定他们这样做了,我只是糟糕!)
我是否需要另一个与复杂的ColPivHouseholderQR
合作的求解器?如果是这样,哪一个?
我找到了一个老话题,其他人使用了另一个求解器:Solving system Ax=b in linear least squares fashion with complex elements and lower-triangular square A matrix