如何在 C++ 特征中设置CG矩阵近似的最大迭代次数

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

本文关键字:迭代 C++ 特征 CG 设置      更新时间:2023-10-16

我正在使用共轭梯度(cg)方法使用C ++中的eigen3包近似矩阵的反演(cg是特征的迭代求解器之一)。我想更改最大迭代次数,但无法弄清楚如何更改。

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

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