在我的项目中,我必须在每个时间步求解几个三对角矩阵,因此拥有一个好的求解器至关重要。我做了自己的实现,只是维基百科上描述的经典方式。然后我尝试使用 Lapack 代替,令我惊讶的是它更慢!
现在,在 Lapack 内部,它似乎通过 LU 分解进行求解,我想知道为什么,它不是比它可能的更复杂吗?
此外,我在 nr.com 的“Numerical Recipes”一书中发现了一种算法,它递归地将系统划分为更小的三对角问题。看起来很有希望。外面还有其他好东西吗?
更新:问题大小约为 1000x1000。我使用了 GotoBLAS,它还为您提供了 Lapack 3.1.1 库。问题不是对称的。我将 Lapack 例程用于一般三对角矩阵。