我正在解决scipy 0.18内的稀疏线性方程组,它在内部使用SuperLU(在 umfpack 由于许可证问题而被删除之后)。
当前,我在算法的每次迭代中都进行了完整的重新分解,但现在我想重新使用在第一次迭代中计算的排列排序(至少是列排列;但甚至可能是行排列) . 我如何使用 scipy 以一种很好的方式实现这一目标?
我以前没有 SuperLU 的使用历史(也没有太多使用稀疏代数包的实际经验),但用户指南让我相信,这应该通过options-parameter.
Fact 指定是否在输入时提供矩阵 A 的因式分解形式,如果没有,将如何根据以前的历史记录矩阵 A 的因式分解,例如从头开始分解,重用 Pc 和/或 Pr,或重用L 和 U.fact 的数据结构可以是以下之一:
– DOFACT:矩阵 A 将从头开始分解。
– SamePattern:矩阵 A 将被分解,假设在此之前执行了具有相同稀疏模式的矩阵的分解。因此,这个因式分解将重用列置换向量 perm c。
– SampPattern SameRowPerm:矩阵 A 将被分解,假设在此之前执行了具有相同稀疏模式和相似数值的矩阵的分解。因此,此分解将重用行和列置换向量 perm r 和 perm c,行和列缩放因子 Dr 和 Dc,以及从先前符号分解建立的分布式数据结构
作为替代方案,在 内还有以下内容options:
ColPerm 指定如何置换矩阵的列以保持稀疏性。
– 自然:自然排序。
– MMD ATA:AT A 结构的最小度排序。
– MMD AT PLUS A:AT + A 结构的最小度排序。
– COLAMD:近似最小度数列排序
– MY PERMC:使用用户在 perm c 中输入的顺序。
问题
- 我应该使用 SuperLU 的哪个部分来实现我的目标?以上之一?还有什么?
- 如何在 scipy 中完成?
- scipy 的文档
ColPerm中缺少-参数(也许它不可用)MY_PERMC
- scipy 的文档