Алгоритм трехдиагональной матрицы - Tridiagonal matrix algorithm
В числовая линейная алгебра, то алгоритм трехдиагональной матрицы, также известный как Алгоритм Томаса (названный в честь Ллевеллин Томас ), является упрощенной формой Гауссово исключение что можно использовать для решения трехдиагональные системы уравнений. Трехдиагональная система для п неизвестные могут быть записаны как
куда и .
Для таких систем решение можно получить в операции вместо требуется Гауссово исключение. Первый проход устраняет 's, а затем (сокращенная) обратная подстановка дает решение. Примеры таких матриц обычно возникают из дискретизации 1D Уравнение Пуассона и натуральный кубический сплайн-интерполяция.
Алгоритм Томаса не стабильный в общем, но это так в некоторых частных случаях, например, когда матрица диагонально доминирующий (по строкам или столбцам) или симметричный положительно определенный;[1][2] для более точной характеристики устойчивости алгоритма Томаса см. теорему Хигэма 9.12.[3] Если в общем случае требуется устойчивость, Гауссово исключение с частичный поворот Вместо этого рекомендуется (GEPP).[2]
Метод
Прямая развертка состоит из вычисления новых коэффициентов следующим образом, обозначающих новые коэффициенты с простыми числами:
и
Затем решение получается обратной подстановкой:
Вышеупомянутый метод не изменяет исходные векторы коэффициентов, но также должен отслеживать новые коэффициенты. Если векторы коэффициентов могут быть изменены, то алгоритм с меньшим объемом бухгалтерского учета:
- За делать
с последующей обратной заменой
Реализация в подпрограмме VBA без сохранения векторов коэффициентов показана ниже.
Sub TriDiagonal_Matrix_Algorithm(N%, A #(), B #(), C #(), D #(), ИКС#()) Тусклый я%, W # За я = 2 К N W = А(я) / B(я - 1) B(я) = B(я) - W * C(я - 1) D(я) = D(я) - W * D(я - 1) Следующий я Икс(N) = D(N) / B(N) За я = N - 1 К 1 Шаг -1 Икс(я) = (D(я) - C(я) * Икс(я + 1)) / B(я) Следующий яКонец Sub
Вывод
Вывод трехдиагонального матричного алгоритма является частным случаем Гауссово исключение.
Предположим, что неизвестные , и что необходимо решить следующие уравнения:
Рассмотрите возможность изменения второго () уравнение с первым уравнением следующим образом:
что даст:
Обратите внимание, что исключен из второго уравнения. Используя аналогичную тактику с модифицированный второе уравнение третьего уравнения дает:
В это время был ликвидирован. Если эту процедуру повторять до ряд; (измененный) уравнение будет включать только одно неизвестное, . Это можно решить, а затем использовать для решения уравнение и так далее, пока не будут решены все неизвестные.
Ясно, что коэффициенты в модифицированных уравнениях становятся все более и более сложными, если они указаны явно. Изучив процедуру, можно вместо этого рекурсивно определить модифицированные коэффициенты (обозначенные тильдами):
Чтобы еще больше ускорить процесс решения, могут быть разделены (если нет деления на нулевой риск), новые модифицированные коэффициенты, каждый из которых обозначен штрихом, будут:
Это дает следующую систему с теми же неизвестными и коэффициентами, определенными в терминах исходных выше:
Последнее уравнение включает только одно неизвестное. Решение этого, в свою очередь, сводит следующее последнее уравнение к одному неизвестному, так что эту обратную подстановку можно использовать для поиска всех неизвестных:
Варианты
В некоторых ситуациях, особенно связанных с периодические граничные условия, возможно, потребуется решить слегка возмущенную форму трехдиагональной системы:
В этом случае мы можем использовать Формула Шермана-Моррисона чтобы избежать дополнительных операций исключения Гаусса и по-прежнему использовать алгоритм Томаса. Метод требует решения модифицированной нециклической версии системы как для входа, так и для разреженного корректирующего вектора, а затем комбинирования решений. Это можно сделать эффективно, если оба решения вычисляются одновременно, так как прямая часть алгоритма чистой трехдиагональной матрицы может использоваться совместно.
В других ситуациях система уравнений может быть блок трехдиагональный (видеть блочная матрица ), с меньшими подматрицами, расположенными как отдельные элементы в вышеупомянутой матричной системе (например, 2D Проблема Пуассона ). Для этих ситуаций были разработаны упрощенные формы исключения Гаусса.[4]
Учебник Вычислительная математика Авторы Quarteroni, Sacco и Saleri перечисляют модифицированную версию алгоритма, которая избегает некоторых делений (вместо этого используется умножение), что полезно для некоторых компьютерных архитектур.
Параллельные трехдиагональные решатели были опубликованы для многих векторных и параллельных архитектур, включая графические процессоры.[5][6]
Подробное описание параллельных трехдиагональных и блочно-трехдиагональных решателей см. [7]
Рекомендации
- ^ Прадип Нийоги (2006). Введение в вычислительную гидродинамику. Pearson Education India. п. 76. ISBN 978-81-7758-764-7.
- ^ а б Бисва Натх Датта (2010). Численная линейная алгебра и приложения, второе издание. СИАМ. п. 162. ISBN 978-0-89871-765-5.
- ^ Николас Дж. Хайэм (2002). Точность и стабильность численных алгоритмов: второе издание. СИАМ. п. 175. ISBN 978-0-89871-802-7.
- ^ Quarteroni, Alfio; Сакко, Риккардо; Салери, Фаусто (2007). «Раздел 3.8». Вычислительная математика. Спрингер, Нью-Йорк. ISBN 978-3-540-34658-6.
- ^ Chang, L.-W .; Hwu, W, -M. (2014). «Руководство по реализации трехдиагональных решателей на графических процессорах». В В. Кидратенко (ред.). Численные вычисления на GPU. Springer. ISBN 978-3-319-06548-9.
- ^ Venetis, I.E .; Курис, А .; Собчик, А .; Gallopoulos, E .; Самех, А. (2015). «Прямой трехдиагональный решатель, основанный на вращении Гивенса для архитектур GPU». Параллельные вычисления. 49: 101–116.
- ^ Gallopoulos, E .; Philippe, B .; Самех, А.Х. (2016). «Глава 5». Параллелизм в матричных вычислениях. Springer. ISBN 978-94-017-7188-7.
- Конте, С. и деБур, К. (1972). Элементарный численный анализ. Макгроу-Хилл, Нью-Йорк. ISBN 0070124469.
- Эта статья включает текст из статьи Трехдиагональный_матричный_алгоритм _-_ TDMA_ (алгоритм Томаса) на CFD-Wiki что находится под GFDL лицензия.
- Нажмите, WH; Теукольский С.А.; Феттерлинг, штат Вашингтон; Фланнери, ВР (2007). «Раздел 2.4». Числовые рецепты: искусство научных вычислений (3-е изд.). Нью-Йорк: Издательство Кембриджского университета. ISBN 978-0-521-88068-8.