In meinem Projekt muss ich bei jedem Zeitschritt ein paar tridiagonale Matrizen lösen, daher ist es wichtig, einen guten Löser für diese zu haben. Ich habe meine eigene Implementierung gemacht, nur die klassische Art, wie es auf Wikipedia beschrieben wird. Ich habe dann versucht, stattdessen Lapack zu verwenden, und zu meiner Überraschung war es langsamer!
In Lapack scheint es so, als würde es durch LU-Faktorisierung gelöst, und ich frage mich, warum es nicht komplexer ist, als es sein könnte.
Zusätzlich habe ich im Buch "Numerical Recipes" von nr.com einen Algorithmus gefunden, der das System rekursiv in kleinere tridiagonale Probleme unterteilt. Es sah vielversprechend aus. Gibt es noch andere Leckereien da draußen?
Update: Die Problemgröße beträgt ca. 1000x1000. Ich habe GotoBLAS verwendet, es gibt Ihnen auch eine Lapack 3.1.1-Bibliothek. Das Problem ist nicht symmetrisch. Ich habe die Lapack-Routine für allgemeine tridiagonale Matrizen verwendet.