在 Eigen 中复制 SimplicialLLT 对象

Copy SimplicialLLT object in Eigen

如果这是一个简单的问题,我提前道歉,但我仍在学习 Eigen。

我正在创建两个 Eigen::SimplicialLLT 对象

Eigen::SimplicialLLT <Eigen::SparseMatrix<double>> Omegachol1;
Eigen::SimplicialLLT <Eigen::SparseMatrix<double>> Omegachol2;
Omegachol1.compute(Omega1);
Omegachol2.compute(Omega2);

接下来,我需要将其中一个用于其他计算,因此我需要为其中一个分配一个新的 SimplicialLLT 对象(重用初始对象当然是可能的,但非常乏味,代码很快就会变得不可读)。

我试过

Eigen::SimplicialLLT <Eigen::SparseMatrix<double>> Omegachol = Omegachol1;

但它不起作用。

有没有办法复制 SimplicialLLT 对象并重新使用它们?

根据我的理解,这不是

的重复

这些求解器对象既不可复制也不可移动。我建议使用对求解器对象的引用:

Eigen::SimplicialLLT <Eigen::SparseMatrix<double>> Omegachol1;
Eigen::SimplicialLLT <Eigen::SparseMatrix<double>> Omegachol2;
Omegachol1.compute(Omega1);
Omegachol2.compute(Omega2);

Eigen::SimplicialLLT <Eigen::SparseMatrix<double>> & Omegachol1_ref = Omegachol1

编辑:显然 Eigen::SimplicialLLT 的求解方法也是 non-const,因此您需要 non-const 参考。