2016-03-03 340 views
0

給定一個矩陣的LDLT分解,我想修改對角線 - 例如所有的值。有沒有辦法用eigen做到這一點?原位修改特徵的LDLT對象

爲了清楚起見,我可以這樣做:

自動ldlt_ = matrix.ldlt();

,我想與跟進。

ldlt_.vectorD()cwiseMax(矢量::常數(N,ε))解決問題之前

ldlt_.solve的(a)

我沒有看到vectorD成員的任何非常量訪問器 - 我錯過了什麼?

回答

0

不,你不能這樣做,我不認爲用這種方式增加小的(或負的)對角線條目是個好主意。如果條目太小,通常的做法是忽略它們(LDLT :: solve的默認行爲),或者用matrix+eps*I重做因式分解。無論如何,如果你真的想自己調整D,那麼你必須實現你自己的解決功能。