Метод прогонки
Метод прогонки (алгоритм Томаса) — это прямой метод решения систем линейных алгебраических уравнений с трёхдиагональной матрицей, основанный на последовательном исключении неизвестных. Метод широко применяется в вычислительной математике, физике и инженерии для решения краевых задач, возникающих при дискретизации дифференциальных уравнений в частных производных, а также в задачах интерполяции сплайнами и обработки сигналов.
Постановка задачи
Метод прогонки предназначен для решения системы линейных уравнений вида:
\[ a_i x_{i-1} + b_i x_i + c_i x_{i+1} = d_i, \quad i = 1, 2, \dots, n \]
с граничными условиями, которые обычно задаются в виде \( x_0 = 0 \) и \( x_{n+1} = 0 \) или через модификацию коэффициентов. В матричной записи такая система имеет трёхдиагональную структуру:
\[ \begin{pmatrix} b_1 & c_1 & 0 & \dots & 0 \\ a_2 & b_2 & c_2 & \dots & 0 \\ 0 & a_3 & b_3 & \dots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & a_n & b_n \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ x_3 \\ \vdots \\ x_n \end{pmatrix} = \begin{pmatrix} d_1 \\ d_2 \\ d_3 \\ \vdots \\ d_n \end{pmatrix} \]
Здесь \(a_i\), \(b_i\), \(c_i\) — известные коэффициенты, \(d_i\) — правая часть, \(x_i\) — искомые неизвестные. Для корректной работы метода требуется, чтобы \(b_i \neq 0\) и выполнялось условие диагонального преобладания: \(|b_i| \geq |a_i| + |c_i|\) хотя бы для одного \(i\) строго.
Алгоритм
Метод прогонки состоит из двух этапов: прямой прогонки (вычисление прогоночных коэффициентов) и обратной прогонки (нахождение неизвестных).
Прямая прогонка
На первом этапе для каждого \(i\) от 1 до \(n\) вычисляются прогоночные коэффициенты \(\alpha_i\) и \(\beta_i\) по рекуррентным формулам:
\[ \alpha_1 = \frac{c_1}{b_1}, \quad \beta_1 = \frac{d_1}{b_1} \]
\[ \alpha_i = \frac{c_i}{b_i - a_i \alpha_{i-1}}, \quad \beta_i = \frac{d_i - a_i \beta_{i-1}}{b_i - a_i \alpha_{i-1}}, \quad i = 2, 3, \dots, n \]
Эти коэффициенты представляют собой отношение соседних неизвестных: \(x_i = \alpha_i x_{i+1} + \beta_i\).
Обратная прогонка
На втором этапе, начиная с последнего уравнения, вычисляются значения неизвестных:
\[ x_n = \beta_n \]
\[ x_i = \alpha_i x_{i+1} + \beta_i, \quad i = n-1, n-2, \dots, 1 \]
В случае, если граничные условия заданы не как нулевые, а, например, \(x_0 = \gamma x_1 + \delta\) или \(x_{n+1} = \mu x_n + \nu\), формулы прямой прогонки модифицируются соответствующим образом.
Условия применимости
Метод прогонки является устойчивым и даёт точное решение (с точностью до машинной арифметики) при выполнении следующих условий:
- Диагональное преобладание: \(|b_i| \geq |a_i| + |c_i|\) для всех \(i\), причём хотя бы для одного \(i\) неравенство строгое. Это гарантирует, что знаменатели в формулах не обращаются в ноль.
- Ненулевые диагональные элементы: \(b_i \neq 0\).
- Отсутствие вырожденности: матрица системы невырождена (определитель отличен от нуля).
Если эти условия не выполняются, метод может быть неустойчивым или привести к делению на ноль. В таких случаях применяют модификации (например, метод прогонки с выбором главного элемента) или альтернативные методы.
Вычислительная сложность
Метод прогонки является одним из самых эффективных для трёхдиагональных систем. Его вычислительная сложность составляет \(O(n)\) — линейная по числу неизвестных, что значительно быстрее общих методов (например, метода Гаусса, имеющего сложность \(O(n^3)\)). Для решения системы из \(n\) уравнений требуется примерно \(8n\) арифметических операций.
История
Метод прогонки был впервые описан в 1949 году американским математиком Ллевеллином Томасом (Llewellyn Thomas) в контексте решения задач теплопроводности. В советской научной литературе метод получил название «прогонка» и был детально разработан в 1950-х годах в работах А. А. Самарского, И. М. Гельфанда и других математиков. Самарский внёс значительный вклад в теорию устойчивости и обобщение метода на многомерные задачи.
Модификации
Метод прогонки для периодических систем
Для систем с периодическими граничными условиями (когда \(x_0 = x_n\) и \(x_{n+1} = x_1\)) применяется циклическая прогонка (алгоритм Шермана — Моррисона). Она требует дополнительного решения двух вспомогательных систем.
Метод прогонки для блочно-трёхдиагональных матриц
В задачах, где неизвестные являются векторами (например, в методах конечных элементов), используется блочная прогонка. В этом случае коэффициенты \(a_i, b_i, c_i\) — матрицы, а \(x_i, d_i\) — векторы.
Метод встречных прогонок
Используется для решения краевых задач с граничными условиями на обоих концах отрезка. Прямая прогонка выполняется с двух сторон, а затем решения сшиваются в точке стыка.
Применение
Метод прогонки широко применяется в следующих областях:
- Численное решение дифференциальных уравнений: метод конечных разностей для уравнений теплопроводности, диффузии, волнового уравнения, уравнения Пуассона в одномерном случае.
- Интерполяция кубическими сплайнами: построение сплайнов сводится к решению трёхдиагональной системы.
- Обработка сигналов: фильтрация, сглаживание данных, решение задач свёртки.
- Экономика и финансы: модели ценообразования опционов (например, метод конечных разностей для уравнения Блэка — Шоулза).
- Механика: расчёт напряжений в балках, оболочек, конструкций.
Пример
Рассмотрим систему:
\[ \begin{cases} 2x_1 + 3x_2 = 8 \\ 4x_1 + 5x_2 + 6x_3 = 20 \\ 7x_2 + 8x_3 = 30 \end{cases} \]
Здесь \(a = [0, 4, 7]\), \(b = [2, 5, 8]\), \(c = [3, 6, 0]\), \(d = [8, 20, 30]\).
Прямая прогонка:
- \(\alpha_1 = c_1 / b_1 = 3 / 2 = 1.5\)
- \(\beta_1 = d_1 / b_1 = 8 / 2 = 4\)
- \(\alpha_2 = c_2 / (b_2 - a_2 \alpha_1) = 6 / (5 - 4 \cdot 1.5) = 6 / (5 - 6) = -6\)
- \(\beta_2 = (d_2 - a_2 \beta_1) / (b_2 - a_2 \alpha_1) = (20 - 4 \cdot 4) / (5 - 6) = (20 - 16) / (-1) = -4\)
- \(\alpha_3 = 0\) (так как \(c_3 = 0\))
- \(\beta_3 = (d_3 - a_3 \beta_2) / (b_3 - a_3 \alpha_2) = (30 - 7 \cdot (-4)) / (8 - 7 \cdot (-6)) = (30 + 28) / (8 + 42) = 58 / 50 = 1.16\)
Обратная прогонка:
- \(x_3 = \beta_3 = 1.16\)
- \(x_2 = \alpha_2 x_3 + \beta_2 = (-6) \cdot 1.16 + (-4) = -6.96 - 4 = -10.96\)
- \(x_1 = \alpha_1 x_2 + \beta_1 = 1.5 \cdot (-10.96) + 4 = -16.44 + 4 = -12.44\)
Решение: \(x_1 \approx -12.44\), \(x_2 \approx -10.96\), \(x_3 \approx 1.16\). Проверка подстановкой подтверждает корректность.
Критика и ограничения
Основные недостатки метода прогонки:
- Чувствительность к вырождению: при нарушении диагонального преобладания метод может стать неустойчивым.
- Ограниченность структуры: метод применим только к трёхдиагональным системам; для более общих разреженных матриц требуются другие алгоритмы.
- Накапливание ошибок округления: при большом числе уравнений (\(n > 10^5\)) ошибки округления могут существенно исказить результат, особенно если матрица плохо обусловлена.
Тем не менее, для широкого класса задач, особенно в математической физике, метод прогонки остаётся стандартным инструментом благодаря своей простоте и эффективности.
Источники
- Самарский А. А., Гулин А. В. Численные методы. — М.: Наука, 1989.
- Тихонов А. Н., Самарский А. А. Уравнения математической физики. — М.: Наука, 1977.
- Thomas L. H. Elliptic Problems in Linear Differential Equations over a Network. — Watson Scientific Computing Laboratory, 1949.
- Press W. H., Teukolsky S. A., Vetterling W. T., Flannery B. P. Numerical Recipes: The Art of Scientific Computing. — 3rd ed. — Cambridge University Press, 2007.
- Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. — М.: Бином, 2008.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →