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