与不完整的Cholesky预处理的共轭梯度返回特征库的意外错误
Conjugate gradient with incomplete cholesky preconditioner returns unexpected errors for the Eigen library
我是堆栈溢出的新手,因此第一次发布问题。我的目的是使用不完整的cholesky预处理,利用特征库来求解线性方程式AX = b。因此,我基本上要看的是ICCG算法。据我了解,本元库允许将预调节器集成到共轭梯度求解器上。我有一个简单的虚拟代码,无法执行。
#include <iostream>
#include <Eigen>
using namespace std;
int main()
{
int n = 10;
SparseMatrix<double> A = MatrixXd::Random(n,n).sparseView(0.5,1);
VectorXd b(n),x(n);
/* Eigen::ConjugateGradient<SparseMatrix<double>, Eigen::Lower|Eigen::Upper, IdentityPreconditioner> cg; */
Eigen::ConjugateGradient<SparseMatrix<double>, Eigen::Lower, IncompleteCholesky> cg;
cg.compute(A);
x = cg.solve(b);
x = cg.solve(b);
return 0;
}
用G 进行最大优化(-O3)的汇编(-O3)被抛出:
../PracTemplates.cpp:62:94: error: type/value mismatch at argument 3 in template parameter list for 'template<class _MatrixType, int _UpLo, class _Preconditioner> class Eigen::ConjugateGradient'
我也会得到与.compute()和.solve()相关的错误,但我相信这些错误与上述错误有关。
结合梯度技术可与身份预处理配合使用。
从错误来看,我显然缺少对象声明中的某些内容。任何帮助将不胜感激。谢谢。
ps:我正在使用Eclipse IDE,因此我所做的一切都包括在"路径和符号"选项卡中的特征库" d: c 开发 eigen"的路径。
汇编命令:
g++ -I$PATH -O3 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"PracTemplates.d" -MT"PracTemplates.o" -o "PracTemplates.o" "../PracTemplates.cpp"
其中" practemplates.cpp是我的文件的名称,$ path是我通往上面指定的特征库的路径。
IncompleteCholesky
是具有3个模板参数的模板类。最后两个是选项,但是您需要指定第一个选项,即标量类型:
typedef ConjugateGradient<SparseMatrix<double>,Lower, IncompleteCholesky<double> > ICCG;
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 特征返回类型的 pybind11 问题
- C++ 特征图3.5,特征图不使用命名返回值优化?
- 如何在没有返回值的情况下使用(特征)unaryExpr 和 lambda 函数?
- 如何获取特征张量的 sqrt() 函数返回的标量值
- 特征:返回对具有编译时间尺寸检查的矩阵块的引用
- 与不完整的Cholesky预处理的共轭梯度返回特征库的意外错误
- SymEigsShiftSolver of Spectra是否不返回特征向量?
- 在 C++14 中使用通用 lambda 和自动返回类型特征获得不同的结果
- 函数使用特征库返回矩阵
- 特征库的矩阵逆函数返回NaN
- 如何将一个以特征向量为参数的函数传递给另一个类/函数并返回一个特征向量
- 用于测试 func(args) 格式是否正确以及是否具有必需的返回类型的特征
- 特征稀疏LU求解器返回值
- 矩阵到特征矩阵的转换和返回