W moim projekcie muszę rozwiązywać kilka trójosiowych macierzy na każdym kroku, dlatego bardzo ważne jest, aby mieć dla nich dobry solver. Zrobiłem własną implementację, tylko klasyczny sposób na to opisany na Wikipedii. Potem spróbowałem użyć Lapacka i ku mojemu zaskoczeniu było wolniej!
Teraz w Lapacku wydaje się, że rozwiązuje to za pomocą faktoryzacji LU i zastanawiam się, dlaczego nie jest to bardziej skomplikowane niż mogłoby być?
Dodatkowo znalazłem algorytm w książce „Numerical Recipes” z nr.com, który rekurencyjnie dzieli system na mniejsze problemy trójdzielne. Wyglądało to obiecująco. Czy są jeszcze jakieś gadżety?
Aktualizacja: rozmiar problemu wynosi około 1000 x 1000. Użyłem GotoBLAS, daje on również bibliotekę Lapack 3.1.1. Problem nie jest symetryczny. Użyłem procedury Lapacka do ogólnych macierzy trójridiagonalnych.