c++ - 如何在 C++ Eigen 中设置 cg 矩阵近似中的最大迭代?

标签 c++ eigen3

我正在使用共轭梯度 (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

关于c++ - 如何在 C++ Eigen 中设置 cg 矩阵近似中的最大迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596035/

相关文章:

c++ - 整数模板参数和子函数调用

c++ - 如何使用C++中的数组虚拟初始化方法读取文件

c++ - 类中没有声明变量成员函数?

c++ - Windows 上的互斥行为

tensorflow - 有没有 Eigen/CXX11 的文件?

c++ - Eigen::Matrix 释放数据的解决方法

c++ - C++通过迭代器确定变量类型

c++ - Tensorflow CUDA Reduction Op 没有完全减少

c++ - 找到复 vector 中的最低实值

c++ - 从 Eigen3 矩阵中获取唯一值