如何在 C++ 本征中设置 cg 矩阵近似中的最大迭代?

how to set max iterations in cg matrix approximation in c++ eigen?

我正在使用共轭梯度 (cg) 方法来近似使用 c++ 中的 eigen3 包的矩阵求逆(cg 是 eigen 的迭代求解器之一)。我想更改最大迭代次数,但不知道如何更改。

在 eigen 页面中它说它可以通过 setMaxIterations() 方法控制,但我不知道我需要把它放在哪里以及如何使用它。我使用的部分代码如下;

ConjugateGradient<SparseMatrix<double> > cg;
cg.compute(CJ); // CJ is a matrix which is already defined
if (cg.info() != Success) {
                 cout << "Matrix is not invertible." << endl;
                  exit(1);
        }
SparseMatrix<double> IDin(totalJ,totalJ);
IDin.setIdentity();

VectorXd inversevector(totalJ), Idvector(totalJ);


    Idvector = IDin.block(0,0,totalJ,1);

    inversevector = cg.solve(Idvector);

我检查了一下,代码到达最后一行但卡在了里面,所以我想我可以减少迭代次数,因为默认情况下这是问题的大小,在我的例子中是很多...

ConjugateGradient 应该有这个函数:cg.setMaxIterations(int)。 参见 https://eigen.tuxfamily.org/dox/classEigen_1_1ConjugateGradient.html