Библиотека для решения системы линейных уравнений с трехдиагональной матрицей? - PullRequest
1 голос
/ 08 ноября 2011

Я моделирую физическую систему с теплопроводностью, и для проведения численных расчетов мне нужно решить систему линейных уравнений с трехдиагональной матрицей.Я использую этот алгоритм для получения результатов: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm Но я боюсь, что мой метод прост и не оптимален.Какую библиотеку C ++ следует использовать для быстрого решения этой системы?Следует также отметить, что матрица не часто меняется (изменяется только правая часть уравнения).Спасибо!

Ответы [ 3 ]

3 голосов
/ 08 ноября 2011
1 голос
/ 23 ноября 2011

В производительности этого алгоритма, вероятно, преобладает деление с плавающей запятой.Используйте SSE2 для одновременного выполнения двух делений (из c i и d i ), и вы получите почти оптимальную производительность.

0 голосов
/ 05 апреля 2017

Стоит взглянуть на интерфейсы LAPACK и BLAS, из которых есть несколько библиотек реализации. Первоначально netlib с открытым исходным кодом, а затем другие, такие как MKL, за которые вы должны заплатить. Функция dgtsv делает то, что вы ищете. Версии netlib с открытым исходным кодом не выполняют никаких явных инструкций SIMD, но MKL работает и будет работать лучше всего на чипах Intel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...