部分带状矩阵

计算科学 线性求解器
2021-12-18 20:54:06

我有一个有点特殊的 Jx=R 系统需要解决。矩阵 J 是 2N × 2N。前 N 行已填充所有条目。接下来的 N 行在两个位置进行分段,即对于第 (N+k) 行,第 (k-1,k,k+1) 和第 N+(k-1,k,k+1) 项被填满,其余为零。值、波段或密集区域绝对没有对称性,因为我有一个不均匀的网格。此外,J 是多变量 Newton-Raphson 实现的雅可比矩阵,并且 J 的条目在每次迭代中都会发生变化。因此,由于重复不同的 Rs 但相同的 J 而赋予优势的任何方法在这里都没有用处。

现在,我正在使用 lapack 的 dgesv 子程序求解。我对结果的准确性感到满意,但速度有点慢。我想问一下,鉴于我正在求解的矩阵的性质,寻找一种更快的方法(这需要我投入一些时间)是否明智,或者我最好继续使用 dgesv。

谢谢!!

1个回答

我没有看到任何明显的方法来考虑因素J更有效率。即使您使用稀疏利用求解器攻击带状部分,您仍然需要 Schur 将其补充回密集部分,然后将密集部分本身分解(所以我预计不会获得实数/渐近收益)。

也许这没有回答您提出的问题,但您可能会考虑使用 jacobian-free-newton-krylov (JFNK) 方法,因为您的解决方案是J太有问题了。他们解决Jv=r使用 Krylov 技术(在您的情况下很可能是 GMRES),这意味着他们不需要J明确地,只有它对向量的作用Jv. 而且自从J矩阵来自于区分一些潜在的目标函数f(x), 那个行动Jv可以通过采用合适的有限差分来近似,例如Jv[f(x+ϵv)f(x)]/ϵ. (如果有限差分的准确性证明不足,您还可以应用自动微分方法f反而)。

参见 Knoll、Dana A. 和 David E. Keyes。“Jacobian-free Newton-Krylov 方法:方法和应用调查。” 计算物理学杂志 193.2 (2004): 357-397了解详情。