对于具有如上图所示的系数矩阵的系统,应该使用什么算法来找到解决方案(x 1,x 2 ,...)?
有几种解决方案:
-
使用扫描方法(在英文文献中也称为 Thomas 算法),然后应用 Sherman-Morrison 方法。
-
由于您的矩阵是对称的,您可以使用Cyclic reduction。
-
向三角系统转变。这个额外的步骤将花费 O(N),然后一切都是标准的 - 因为三角系统从最后就可以轻松解决。
-
对循环三对角系统使用专门的算法。原创经典论文:C. Temperton,“求解循环三对角系统的算法”,J. Comp。物理。, 卷。19,没有。3,页。11 月 317-323 1975 年。
M. Piller 的报告“关于循环三对角系统的数值解”中给出了很好的概述。在你的例子中,矩阵不仅仅是一个三对角循环矩阵,它的下对角线和“循环元素”都等于 1。这里有很多要保存的地方。
简单说一下好处:
为什么使用扫描:一个简单的解决方案和编程。
为什么使用其他方法:它们更有效,并且可以利用系数矩阵的其他众所周知的属性。在解决具有大量右手边的系统时,它们也更好。
如果具有大量未知数的任务处于程序中的关键位置,那么值得花时间开发(或连接专门的库)最有效的方法以挤出所有内容。问题中的这种类型的矩阵在计算物理学的各个领域中经常出现,因此有很多方法,其选择取决于特定问题的频率。