就地修改Eigen的LDLT对象

时间:2016-03-03 16:21:28

标签: eigen

给定矩阵的LDLT分解,我想修改对角线 - 例如对所有值进行修改。有没有办法用eigen做到这一点?

要明确,我可以这样做:

  

auto ldlt_ = matrix.ldlt();

我想跟进:

  

ldlt_.vectorD()。cwiseMax(向量::常数(N,ε))

在解决问题之前:

  

ldlt_.solve(a)中

我没有看到vectorD成员的任何非const访问者 - 我缺少什么?

1 个答案:

答案 0 :(得分:0)

不,你不能这样做,我不认为以这种方式增加小(或负)对角线条是一个好主意。如果条目太小,通常的方法是忽略它们(LDLT :: solve的默认行为),或者用matrix+eps*I重做分解。无论如何,如果你真的想自己调整D,那么你必须实现自己的求解函数。