具有特征的就地LDLT分解
Inplace LDLT decomposition with Eigen
我正在用非常大的对称矩阵(~800mb)做一些线性代数,我正在尝试几种不同的分解。目前,我正在实现LDLT,我想利用这一点,通过用L^T覆盖矩阵的上三角来将内存需求减半。尽管Eigen的文档没有列出要做这件事的任何方法,但在内部命名空间中有一些隐藏的方法,它们可能会做我想做的事情。
方法可以在以下结构中找到:template<> struct ldlt_inplace<Lower>
和template<> struct ldlt_inplace<Upper>
http://eigen.tuxfamily.org/dox/LDLT_8h_source.html
这些方法正是我想要的,我说得对吗?我该如何使用它们?我是否应该避免使用它们,因为它们是内部的,因此会被更改和弃用?
内部确实意味着这个函数的原型可能会在未来的版本中发生变化。LDLT::compute()方法是关于如何使用它的一个很好的例子:
Transpositions<Dynamic> T(mat.cols());
VectorXd temp(mat.cols());
int sign;
Eigen::internal::ldlt_inplace<Eigen::Lower>::unblocked(mat, T, temp, &sign);
编辑
在特征3.3中,您可以使用LDLT<Ref<MatrixXd> >
:
MatrixXd A;
LDLT<Ref<MatrixXd> > ldlt(A);
则CCD_ 4将在CCD_ 6本身内因子分解CCD_。有关详细信息,请参阅文档。
相关文章:
- 通过递归进行因子分解
- 有人能分解一下这个c++模板的语法吗
- C++ 乔列斯基因式分解
- 如何加快本征C++中的LU分解?
- 如何将整数分解为不同的变量?
- 减少本征的 QR 分解
- Xcode 中的加速框架以获得 A 的 QR 分解,但找不到 zgeqrf
- 将无向连接图分解为两个组件
- 在 C++ 中分解数字
- 分解SWIG Python接口 - 容器会产生命名空间冲突
- 对模板参数包操作进行因素分解
- 如何修复 LU 分解?
- 动态矩阵特征分解过程中的误差
- 正在从程序内存中分解x指令
- C++错误:此上下文中不允许使用分解声明
- 计算将整数n分解为4平方和的方法的数量
- 下面的代码是如何工作的?它输出分解的数字并且功能齐全,我只是不明白它是如何做到的
- 当我使用Connect信号和插槽时,会出现此分解错误
- 特征LDLT Cholesky分解到位
- 具有特征的就地LDLT分解