我已经实现了一个 schur 补域分解方法来解决 Matlab 中的大规模问题。它运作良好,但我认为应该有一些替代方法来更有效地实现算法的某些部分,以规避高内存使用。具体来说,我需要评估在哪里是一个实值、对称、稀疏和正定矩阵和是一个极其稀疏的矩阵只包含非零条目(通常远大于)。我的方法是; 然而,对于不是很大的值,它的评估变得非常耗费内存和时间. 任何解决此问题的建议都受到热烈欢迎。
有效评估乙问− 1乙吨BQ−1BT(域分解实现)
计算科学
域分解
2021-12-21 03:39:33
1个回答
这总是会有点昂贵的计算,因为任何“有趣的”稀疏矩阵的逆通常都是密集的,因此也是. 也就是说,有比你提到的明显的更聪明的技术,它们渐近不比分解本身,只要行数不超过的根分隔符. 这很可能是这种情况,因为在大多数 DDM 中,矩阵来自单个域(体积)上的基础 PDE 的体积离散化和算子表示域边界上的 Dirichlet-to-Neumann 映射或 Robin-to-Robin 映射,使得具有“表面基数”,就像的根分隔符.
我编写了一个 GPL 许可的稀疏直接包,称为 Myramath 来执行此计算(请参阅http://www.myracore.com,它也在我的个人资料中)。除了通常的factor()/solve()
API 之外,求解器还拥有一个.schur()
可以形成矩阵的方法,例如. 我还推荐另一种称为 的算法.partialsolve()
,它也有用于子结构/DDM 的有趣应用。详见教程材料,从这里开始。schur()
和partialsolve()
方法在这里解决。
其它你可能感兴趣的问题