我正在寻找一些可用于生产的代码来更新密集的 QR 和/或 Cholesky 分解(通过添加/删除行和列或进行小级别更新——是的,我需要所有这些情况)。
我已经完成了我的谷歌文献研究,但我发现很少:
- Matlab 已经涵盖了这个,但不幸的是,这是针对 C++ 项目的,因此与它交互并不容易。我宁愿拥有 C/C++ 或 Fortan,尤其是“传统”LAPACK 风格的代码。
- 据我所知,LAPACK 什么都没有。LINPACK(LAPACK 的前身)中有一些东西,但据我所知,它至少在过去 30 年没有更新。
- Craig Lucas 为这些子任务之一提供了一些代码(仅为 QR 分解添加/删除列), Daniel Kressner 为仅向 QR 分解添加行提供了一些代码。它们都仅限于我需要的子任务之一,并且引用 Kressner 的页面,
它没有经过彻底的测试,应该被理解为研究代码。
令人惊讶的是,在 Tim Davis 的Suitesparse中,有用于稀疏矩阵的相同任务的成熟代码。我不认为代码在密集矩阵上会很有效。
Michael Saunders 的LUSOL具有(稀疏)LU 分解(非对称情况)的相应代码。
因此,似乎有很多代码可以执行类似和相关的任务,但并不完全针对这个问题,这似乎令人惊讶。
我是否忽略了一些明显的选择?有图书馆可以做吗?