如何解决在 C++ 中为具有零对角线的稀疏带矩阵实现简单的 LDL^T CHOLMOD
我正在实施简单的 LDL^T CHOLMOD 来求解我的 C++ 项目中的线性方程组,该系统具有稀疏带矩阵(维度在 1,000 到 3,000 之间)。矩阵有几个零对角线,因此有时 CHOLMOD 会为某些项目/矩阵提供错误的结果。
我使用 CHOLMOD(dbound) 修改零对角线。它的工作原理是给出正确的结果,但前提是 dbound 很小,在我的情况下它应该小于 2.0E-8。问题是 CHOLMOD 变得缓慢。如果我使用大于 4.0E-3 的 dbound,CHOLMOD 将比使用 2.0E-8 dbound 快 3-4 倍(但给出错误结果)。
这是预期的吗?有没有办法既能获得正确的结果又能保持 CHOLMOD 的性能?我尝试了许多其他解决方案,例如手动修改零对角线或 dk[0](例如 t_cholmod_rowfac.c 中的第 414 行),但它们也会降低性能(但会给出正确的结果)。非常感谢您提前阅读并提供帮助。
附注。为保密不提供代码而道歉。我只是想得到你的建议。但是如果你需要一个示例代码来提供建议,我会尽量提供一个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。