Перейти к содержанию

Метод прогонки

Материал из Мегавики — свободной энциклопедии

Метод прогонки (англ. tridiagonal matrix algorithm) или алгоритм Томаса (англ. Thomas algorithm) используется для решения систем линейных уравнений вида Ax=F, где A — трёхдиагональная матрица. Представляет собой вариант теории исключения[1]. Метод прогонки был предложен И. М. Гельфандом и О. В. Локуциевским (в 1952 году[2]; опубликовано в 1960[3] и 1962[4] годах), а также независимо другими авторами[5].

Описание метода[править]

Система уравнений Ax=F равносильна соотношению

Aixi1+Bixi+Cixi+1=Fi.(1)

Метод прогонки основывается на предположении, что искомые неизвестные связаны рекуррентным соотношением:

xi=αi+1xi+1+βi+1, где i=n1,n2,,1.(2)

Используя это соотношение, выразим xi1 и xi через xi+1 и подставим в уравнение (1):

(Aiαiαi+1+Biαi+1+Ci)xi+1+Aiαiβi+1+Aiβi+Biβi+1Fi=0,

где Fi — правая часть i-го уравнения. Это соотношение будет выполняться независимо от решения, если потребовать

{Aiαiαi+1+Biαi+1+Ci=0Aiαiβi+1+Aiβi+Biβi+1Fi=0

Отсюда следует:

{αi+1=CiAiαi+Biβi+1=FiAiβiAiαi+Bi

Из первого уравнения получим:

{α2=C1/B1β2=F1/B1

После нахождения прогоночных коэффициентов α и β, используя уравнение (2), получим решение системы. При этом,

xi=αi+1xi+1+βi+1, i=n11
xn=FnAnβnBn+Anαn

Другим способом объяснения существа метода прогонки, более близким к терминологии конечно-разностных методов и объясняющим происхождение его названия, является следующий: преобразуем уравнение (1) к эквивалентному ему уравнению

Ax=F(1)

c надиагональной (наддиагональной) матрицей

A=(B1C100000B2C200000B3C3000B'n1Cn100000Bn).

Вычисления проводятся в два этапа. На первом этапе вычисляются компоненты матрицы Bi и вектора F, начиная с i=2 до i=n:

B'1=B1;
B'i=BiAiB'i1Ci1,

и

F'1=F1;
F'i=FiAiB'i1F'i1.

На втором этапе, для i=n,n1,,1 вычисляется решение:

xn=F'nB'n;
xi=F'iCixi+1B'i.

Такая схема вычисления объясняет также английский термин этого метода[прояснить] «shuttle»[источник не указан 2180 дней].

Для применимости формул метода прогонки достаточно свойства диагонального преобладания у матрицы A.

Пример использования[править]

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

uta22ux2=f(x,t),

где a — положительная константа (число a2 является коэффициентом температуропроводности) и f(x,t) — функция тепловых источников[6]. Искомая функция u=u(x,t) задает температуру в точке с координатой x в момент времени t.

Проведём дискретизацию этого уравнения на равномерной сетке с пространственным шагом h и временным τ. При этом непрерывные функции u(x,t) и f(x,t) заменяются на их дискретные аналоги uij=u(xi,tj) и fij=f(xi,tj), а пространственная и временная производная — на конечные разности:

ut|t=tju(x,tj+1)u(x,tj)τ,

2ux2|x=xiu(xi+1,t)2u(xi,t)+u(xi1,t)h2.

Значения величин на слое tj будем считать известными (полученными в результате дискретизации начальных условий, либо решения уравнения на предыдущем временном шаге). Рассмотрим далее неявную по времени аппроксимацию, в которой значения источников тепла и тепловых потоков берутся со следующего временного слоя tj+1. Соответствующая система линейных алгебраических уравнений для неизвестных значений uij+1 имеет вид

uij+1uijτa2ui+1j+12uij+1+ui1j+1h2=fij+1.

Перенеся известные величины в правую часть, домножив на τ и сгруппировав коэффициенты, приведём СЛАУ к окончательному виду

a2τh2ui1j+1+(1+2a2τh2)uij+1+a2τh2ui+1j+1=uij+τfij+1.

Вид матрицы коэффициентов для конечных точек разностной сетки определяется граничными условиями и выводится отдельно. Наличие диагонального преобладания у матрицы коэффициентов гарантирует устойчивость метода прогонки при решении им данной СЛАУ.

Обобщение метода прогонки[править]

А. А. Абрамовым в 1963 году предложен так называемый метод периодической прогонки, который позволяет решать СЛАУ с матрицей, в которой ненулевыми являются все угловые элементы A11, A1N, AN1, ANN. Для решения СЛАУ на первом шаге рассчитываются коэффициенты прямой прогонки:

α1=c0/b0,β1=φ0/b0,γ1=a0/b0;

αk+1=ckbkαkak,βk+1=akβkfkbkαkak,γk+1=akγkbkαkak.

Далее выполняется обратная прогонка (справа налево) для получения коэффициентов

μN=cNaN(αN+γN)bN,νN=fNaNβNaN(αN+γN)bN;

μn1=αnμn+γnμN,νn1=βn+αnνn+γnνN.

Далее вычисляют искомое значение вектора y по формулам

y0=ν01μ0;

yn1=αn(μny0+νn)+βn+γn(μNy0+νN).

Ссылки[править]

Примечания[править]

  1. «Метод прогонки … представляет собой вариант метода последовательного исключения неизвестных» (Самарский, Гулин, с. 45).
  2. «Прогонка, как устойчивый метод решения краевых задач с большим числом параметров, была введена и исследована И. М. Гельфандом и О. В. Локуциевским в 1952 г.» (Федоренко, с. 500).
  3. Березин, Жидков, с. 387, 506 (со ссылкой на неопубликованную рукопись Гельфанда и Локуциевского).
  4. В приложении к книге Годунова и Рябенького.
  5. «Прогонка была „открыта“ И. М. Гельфандом и О. В. Локуциевским в 1952 г. именно как применение алгоритма, изложенного в школьном учебнике алгебры. Их заслугой является установление устойчивости и использование алгоритма при решении сложных задач. Примерно в то же время в связи с аналогичными работами прогонка была предложена другими авторами» (Федоренко, с. 501).
  6. Тихонов А. Н., Самарский А. А. Уравнения математической физики. — гл. III, § 1. — Любое издание.