Алгоритм трехдиагональной матрицы - Tridiagonal matrix algorithm

В численной линейной алгебре , то трехдиагональная матрица алгоритма , также известный как алгоритм Томаса ( по имени Луэллина Томаса ), является упрощенной формой исключения Гаусса , которая может быть использована для решения трехдиагональных систем уравнений . Трехдиагональную систему для n неизвестных можно записать как

где и .

Для таких систем решение может быть получено операциями вместо требуемого метода исключения Гаусса . Первая развертка удаляет символы, а затем (сокращенная) обратная подстановка дает решение. Примеры таких матриц обычно возникают в результате дискретизации одномерного уравнения Пуассона и интерполяции естественным кубическим сплайном .

Алгоритм Томаса в целом нестабилен , но таков в некоторых частных случаях, например, когда матрица доминирует по диагонали (по строкам или столбцам) или симметрично положительно определена ; для более точной характеристики устойчивости алгоритма Томаса см. теорему Хигэма 9.12. Если в общем случае требуется стабильность, вместо этого рекомендуется исключение по Гауссу с частичным поворотом (GEPP).

Метод

Прямая развертка состоит из вычисления новых коэффициентов следующим образом, обозначающих новые коэффициенты с простыми числами:

а также

Затем решение получается обратной подстановкой:

Вышеупомянутый метод не изменяет исходные векторы коэффициентов, но также должен отслеживать новые коэффициенты. Если векторы коэффициентов могут быть изменены, то алгоритм с меньшим объемом бухгалтерского учета:

Для дела

с последующей обратной заменой

Реализация в подпрограмме VBA без сохранения векторов коэффициентов:

Sub TriDiagonal_Matrix_Algorithm(N%, A#(), B#(), C#(), D#(), X#())
    Dim i%, W#
    For i = 2 To N
        W = A(i) / B(i - 1)
        B(i) = B(i) - W * C(i - 1)
        D(i) = D(i) - W * D(i - 1)
    Next i
    X(N) = D(N) / B(N)
    For i = N - 1 To 1 Step -1
        X(i) = (D(i) - C(i) * X(i + 1)) / B(i)
    Next i
End Sub

Вывод

Вывод трехдиагонального матричного алгоритма является частным случаем исключения Гаусса .

Предположим, что неизвестны и что необходимо решить следующие уравнения:

Рассмотрите возможность модификации второго уравнения ( ) первым уравнением следующим образом:

что даст:

Обратите внимание, что это исключено из второго уравнения. Использование аналогичной тактики с модифицированным вторым уравнением для третьего уравнения дает:

На этот раз был ликвидирован. Если эта процедура повторяется до ряда; (модифицированный) уравнение будет включать в себя только один неизвестный, . Это можно решить, а затем использовать для решения уравнения и так далее, пока не будут решены все неизвестные.

Ясно, что коэффициенты в модифицированных уравнениях становятся все более и более сложными, если они указаны явно. Изучив процедуру, можно вместо этого рекурсивно определить модифицированные коэффициенты (обозначенные тильдами):

Чтобы еще больше ускорить процесс решения, их можно разделить (если нет деления на нулевой риск), новые модифицированные коэффициенты, каждый из которых обозначен штрихом, будут:

Это дает следующую систему с теми же неизвестными и коэффициентами, определенными в терминах исходных выше:

Последнее уравнение включает только одно неизвестное. Решение этого, в свою очередь, сводит следующее последнее уравнение к одному неизвестному, так что эту обратную подстановку можно использовать для поиска всех неизвестных:


Варианты

В некоторых ситуациях, особенно связанных с периодическими граничными условиями , может потребоваться решение слегка возмущенной формы трехдиагональной системы:

В этом случае мы можем использовать формулу Шермана – Моррисона, чтобы избежать дополнительных операций исключения Гаусса, и по-прежнему использовать алгоритм Томаса. Метод требует решения модифицированной нециклической версии системы как для входного, так и для разреженного корректирующего вектора, а затем комбинирования решений. Это можно сделать эффективно, если оба решения вычисляются одновременно, так как прямая часть алгоритма чистой трехдиагональной матрицы может использоваться совместно.

В других ситуациях система уравнений может быть блочной трехдиагональной (см. Блочную матрицу ) с меньшими подматрицами, расположенными как отдельные элементы в вышеупомянутой матричной системе (например, двумерная проблема Пуассона ). Для этих ситуаций были разработаны упрощенные формы исключения Гаусса.

В учебнике « Числовая математика » Квартерони, Сакко и Салери приведена модифицированная версия алгоритма, в которой не используются некоторые деления (вместо умножения используются умножения), что полезно для некоторых компьютерных архитектур.

Параллельные трехдиагональные решатели были опубликованы для многих векторных и параллельных архитектур, включая графические процессоры.

Подробное описание параллельных трехдиагональных и блочно-трехдиагональных решателей см.

Рекомендации

  • Нажмите, WH; Теукольский, С.А. Феттерлинг, штат Вашингтон; Фланнери, ВР (2007). «Раздел 2.4» . Числовые рецепты: искусство научных вычислений (3-е изд.). Нью-Йорк: Издательство Кембриджского университета. ISBN 978-0-521-88068-8.