求解具有多个右手边的三对角系统

计算科学 数值分析 线性求解器 带状矩阵
2021-12-02 10:44:42

我需要解决一个三对角系统(正定,对角占优) Ax=b 在时间步进循环中。 ARN×N保持不变但b每个时间步的变化。

我在想以下哪个会更快:

  1. 计算和存储zi解决了Azi=ei1iN. 那么任何bRN是一个线性组合zix=biz1+bNzN

  2. 天真地解决Ax=b对于每个给定的b通过三对角矩阵算法。

我认为(1)将节省计算三对角解的时间,因为z基本上给出了的倒数A. 但是,我计算出一个解决方案ei需要8N翻牌,所以那是8N×N计算所有zi. 然后对于每个给定的b, 它需要N2计算失败x. 如果我拿n时间步长,即总共8N2+nN2.

相比之下(2)需要n×8N.

我对么 ?(2) 在哪里获得优势?

1个回答

最有效的方法可能是对 A 执行一步高斯消除以消除次对角线,然后存储新主对角线的倒数、新修改的上对角线和常数以在b上执行前向替换。

这样,每个 rhs 将需要一个前向替换来修改b,然后是一个反向求解。前向操作由 N 次加法和 N 次乘法组成,后向操作由 2N 次乘法和 N 次加法组成。这增加了 5N 次操作并且没有除法(速度较慢)。