No meu projeto, tenho que resolver duas matrizes tridiagonais a cada passo do tempo, por isso é crucial ter um bom solucionador para elas. Fiz minha própria implementação, exatamente da maneira clássica de fazê-lo, descrita na Wikipedia. Então tentei usar o Lapack e, para minha surpresa, foi mais lento!
Agora, dentro de Lapack, parece que ele resolve a fatoração da LU e me pergunto por que, não é mais complexo do que poderia ser?
Além disso, encontrei um algoritmo no livro "Receitas Numéricas" do nr.com que divide recursivamente o sistema em problemas tridiagonais menores. Parecia promissor. Existem outras guloseimas por aí?
Atualização: o tamanho do problema é de cerca de 1000 x 1000. Eu usei o GotoBLAS, ele também fornece uma biblioteca Lapack 3.1.1. O problema não é simétrico. Usei a rotina Lapack para matrizes tridiagonais gerais.