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

Материал из testwiki
Перейти к навигации Перейти к поиску

Метод прогонки (Шаблон:Lang-en) или алгоритм Томаса (Шаблон:Lang-en) используется для решения систем линейных уравнений вида 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»Шаблон:Нет АИ.

Для применимости формул метода прогонки достаточно свойства диагонального преобладания у матрицы 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).

Ссылки

Шаблон:Викиучебник

Примечания

Шаблон:Примечания

Шаблон:Rq Шаблон:Методы решения СЛАУ

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