У моєму проекті я маю вирішувати пару тридіагональних матриць на кожному кроці, тому для них важливо мати гарне рішення. Я зробив власну реалізацію, просто класичний спосіб зробити це описаний у Вікіпедії. Потім я спробував використати Lapack, і, на мій подив, це було повільніше!
Тепер усередині Lapack здається, що це робить рішення за допомогою LU-факторизації, і мені цікаво, чому це не складніше, ніж могло б бути?
Крім того, я знайшов алгоритм у книзі "Числові рецепти" від nr.com, який рекурсивно ділить систему на менші тридіагональні проблеми. Це виглядало перспективно. Є якісь інші смаколики там?
Оновлення: розмір проблеми становить близько 1000x1000. Я використовував GotoBLAS, він також дає вам бібліотеку Lapack 3.1.1. Проблема не симетрична. Я використовував процедуру Lapack для загальних тридіагональних матриць.