Мне интересно, является ли алгоритм Томаса самым быстрым (доказуемо?) Решением симметричной диагонально доминирующей разреженной трехдиагональной системы с точки зрения алгоритмической сложности (не ища пакетов реализации, таких как LAPACK и т. Д.). Я знаю, что и алгоритм Томаса, и многосетка имеют сложность , но, возможно, постоянный множитель для многосетки меньше? Мне не кажется, что многосетка может быть быстрее, но я не уверен.
Примечание: я рассматриваю случай, когда матрицы очень большие. Возможны прямые или итерационные методы.
Короткий ответ: алгоритм Томаса будет быстрее любой итерационной схемы почти во всех случаях. Исключением может быть применение одной итерации очень простой итерационной схемы, такой как Гаусс-Зейдель, но вряд ли это даст приемлемое решение. Кроме того, это игнорирует проблемы параллельной обработки.
источник
Многосеточные циклы даже на одном ядре оптимизируются векторизатором. Таким образом, хотя подсчет операций может помочь, мы не должны забывать, что даже в последовательном мире процессоры имеют векторный параллелизм, и, следовательно, время до решения может быть не совсем тем, что мы предсказываем из анализа затрат.
источник