Метод прогонки для решения системы линейных уравнений

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

Запишем систему уравнений в виде

На главной диагонали матрицы этой системы стоят элементы b 1, b 2, …, bn ,над ней – элементы с 1, с2,... , с n -1 под ней – элементы а 2, а 3,... , ап (при этом обычно все коэффициенты bi не равны нулю). Остальные элементы матрицы равны нулю.

Метод прогонки состоит из двух этапов – прямой прогонки (аналога прямого хода метода Гаусса) и обратной прогонки (аналога обратного хода метода Гаусса). Прямая прогонка состоит в вычислении прогоночных коэффициентов Ai ,Bi ,с помощью которых каждое неизвестное xi выражается через zi +1 :

Из первого уравнения системы (2.13) найдем

С другой стороны, по формуле (2.14) Приравнивая коэффициенты в обоих выражениях для х 1, получаем

(2.15)

Подставим во второе уравнение системы (2.13) вместо х 1его выражение через х 2по формуле (2.14):

Выразим отсюда х 2 через х 3:

Аналогично вычисляют прогоночные коэффициенты для любого номера i :

(2.16)

Обратная прогонка состоит в последовательном вычислении неизвестных xi . Сначала нужно найти хп. Для этого воспользуемся выражением (2.14) при i = п –1 и последним уравнением системы (2.13). Запишем их:

Отсюда, исключая х n-1 , находим

Далее, используя формулы (2.14) и вычисленные ранее по формулам (2.15), (2.16) прогоночные коэффициенты, последовательно вычисляем все неизвестные х n - 1, xn -2 ,....1. Алгоритм решения системы линейных уравнений вида (2.13) методом прогонки приведен на рис. 2.4.

Рис. 2.4. Алгоритм метода прогонки

При анализе алгоритма метода прогонки надо учитывать возможность деления на нуль в формулах (2.15), (2.16). Можно показать, что при выполнении условия преобладания диагональных элементов, т.е. если , причем хотя бы для одного значения i имеет место строгое неравенство, деления на нуль не возникает, и система (2.13) имеет единственное решение.

Приведенное условие преобладания диагональных элементов обеспечивает также устойчивость метода прогонки относительно погрешностей округлений. Последнее обстоятельство позволяет использовать метод прогонки для решения больших систем уравнений. Заметим, что данное условие устойчивости прогонки является достаточным, но не необходимым. В ряде случаев для хорошо обусловленных систем вида (2.13) метод прогонки оказывается устойчивым даже при нарушении условия преобладания диагональных элементов.

Численные методы линейной алгебры

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

Метод прогонки представляет собой простой и эффективный алгоритм решения систем линейных алгебраических уравнений с трехдиагональными матрицами коэффициентов следующего вида

Системы такого вида часто возникают при решении различных инженерных задач, например, при интерполяции функций сплайнами.

Преобразуем первое уравнение системы (8) к виду x 1 = 1 x 2 + 1 , где

1 = -с 1 / b 1 и 1 = -d 1 / b 1 . Подставим полученное для x 1 выражение во второе уравнение системы (8)

a 2 (1 x 2 + 1) + b 2 x 2 + c 2 x 3 = d 2 .

Представим это уравнение в виде x 2 = 2 x 3 + 2 , где 2 = -с 2 / (b 2 + a 2 1) и 2 = (d 2 - a 2 1) / (b 2 + a 2 1). Полученное для x 2 выражение подставим в третье уравнение системы (8) и т.д.

На i-м шаге (1 < i < n) процесса i-е уравнение системы принимает вид

x i = i x i+1 + i , (9)

где i = -с i / (b i + a i i-1) и i = (d i - a i i-1) / (b i + a i i-1).

На последнем n-м шаге подстановка в последнее уравнение системы (8) выражения x n -1 = n -1 x n + n -1 дает уравнение a n (n -1 x n + n -1) + b n x n = d n , из которого можно определить значение x n = n = (d n - a n n-1) / (b n + a n n-1).

Значения остальных неизвестных x i (i = n-1, n-2, ..., 1) легко вычисляются по формуле (9).

Таким образом, алгоритм прогонки, подобно методу Гаусса, включает два этапа - прямой ход (прямая прогонка) и обратный ход (обратная прогонка).

Прямой ход метода прогонки состоит в вычислении прогоночных коэффициентов

i (i =) и i (i =).

При i = 1 эти коэффициенты вычисляются по формулам:

1 = -с 1 / 1 ; 1 = -d 1 / 1 ; 1 = b 1 .

Для i = используются следующие рекуррентные формулы:

i = -с i / i ; i = (d i - a i i-1) / i ; i = b i + a i i-1 .

Прямая прогонка завершается при i = n:

n = (d n - a n n-1) / n ; n = b n + a n n-1 .

Обратный ход метода прогонки позволяет вычислить значения неизвестных. Сначала полагают x n = n . Затем в обратном порядке по формуле (9) определяют значения неизвестных x n -1 , x n -2 , ..., x 1 .

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

Теорема . Пусть коэффициенты системы (8) удовлетворяют следующим неравенствам

b k a k +c k ; b k >a k ; k = , где a 1 = 0; b n = 0. Тогда i 0 и i

1 для всех i =

Заметим, что при всех i 0 вычисления по формулам прямой прогонки могут быть доведены до конца (ни один из знаменателей не обратится в нуль). Одновременно все коэффициенты i , такие, что i 1, обеспечивают устойчивость по входным данным этапа обратной прогонки по формуле (9).

Вычислительная математика

Метод деления отрезка пополам является самым простым и надежным способом решения нелинейного уравнения. Пусть из предварительного анализа известно, что корень уравнения (2.1) находится на отрезке , т. е. x*, так, что f(x*) = 0...

Вычислительная математика

Метод Ньютона является наиболее эффективным методом решения нелинейных уравнений. Пусть корень x* , так, что f(a)f(b) < 0. Предполагаем, что функция f(x) непрерывна на отрезке и дважды непрерывно дифференцируема на интервале (a, b). Положим x0 = b...

Вычислительная математика

В этом и следующем разделе рассмотрим модификации метода Ньютона. Как видно из формулы (2.13), метод Ньютона требует для своей реализации вычисления производной, что ограничивает его применение. Метод секущих лишен этого недостатка...

Метод поиска глобального минимума, называемый методом поиска по координатной сетке, является надежным, но применим только для задач малой размерности (n<4). Неправильный выбор начального шага сетки может привести к тому...

Линейное и нелинейное программирование

Итерация 1. Счет итераций k = 0 Итерация 2. Счет итераций k = 1 Поиск завершен 3.3...

Математическое моделирование и численные методы в решении технических задач

Теоретические сведения. Решить дифференциальное уравнение у/=f(x,y) численным методом - это значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя функцию у=F(x), найти такие значения у1, у2,…, уn, что уi=F(xi)(i=1,2,…, n) и F(x0)=y0...

Математическое моделирование при активном эксперименте

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

Математическое программирование

Метод Ньютона, алгоритм Ньютона (также известный как метод касательных) -- это итерационный численный метод нахождения корня (нуля) заданной функции. Чтобы численно решить уравнение f(x)=0 методом простой итерации...

Метод вращений решения СЛАУ

Метод геометрических преобразований при решении геометрических задач на построение

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

Решение параболических уравнений

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

Система дифференциальных уравнений с постоянными коэффициентами

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

Системный анализ групп преобразований состояний кубика Рубика

CFOP - это название четырёх стадий сборки(рисунок 3.2): Cross, F2L, OLL, PLL: 1) Cross - сборка креста...

Численные методы линейной алгебры

Метод прогонки представляет собой простой и эффективный алгоритм решения систем линейных алгебраических уравнений с трехдиагональными матрицами коэффициентов следующего вида (8) Системы такого вида часто возникают при решении различных...

Численные методы решения трансцендентных уравнений

Пусть уравнение (1) имеет корень на отрезке , причем f (x) и f "(x) непрерывны и сохраняют постоянные знаки на всем интервале . Геометрический смысл метода Ньютона состоит в том, что дуга кривой y = f(x) заменяется касательной...

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

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

Эффективным методом решения систем уравнений, порожденных разностными схемами, является метод прогонки. Рассмотрим его алгоритм на примере разностного решения первой краевой задачи для уравнения теплопроводности. Для краевой задачи в прямоугольной области

рассмотрим неявную разностную схему


Здесь Ai = Ci = 1, Bi = 1 + /?. 2 /(2ат), Д = li 2 {-u" - г/")/(2ат). В нашем случае A j, Д и С* не зависят от индекса i , однако если шаг сетки будет переменным, то все коэффициенты будут зависеть от номера узла. Важно отметить, что А{, Bj, Ci, g n+l , / n+1 - известные величины. Соотношение (7.2) представляет собой систему линейных уравнений для неизвестных Uq + , Мдг + .

Распшренная матрица этой системы имеет вид


В этой матрице ненулевые элементы расположены по главной диагонали и двум соседним. Матрицу такого вида называют трехдиагональной.

Наличие левого граничного условия (mq +1 = n+1) позволяет искать решение в виде (для простоты обозначений верхний индекс у неизвестной опущен) соотношения

Оно называется прогоночным соотношением , а входящие в него входящие в него коэффициенты A"*_i и Li- - прогоночными коэффициентами. Для i = 1 (7.1) выполняется, если принять

Таким образом устанавливаются начальные значения про гоночных коэффициентов.

Исключим с помощью прогоиочного соотношения (7.3) неизвестную щ -1 из (7.2):

Проведя простейшие ачпгсбраическис преобразования, получим

в форме, совпадающей с прогоночным соотношением. Сравнение (7.5) и (7.3) дает рекуррентные соотношения для прогоночных коэффициентов:

Пользуясь начальными значениями Ко = 0, Lq = , можно последовательно вычислить К, L ], К 2 , ^2, ..., Ln- - компоненты векторов прогоночных коэффициентов. Этот вычислительный процесс называют прямой прогонкой. Нетрудно убедиться, что прямая прогонка с помощью элементарных преобразований переводит трехдиагональную матрицу исходной линейной системы в верхнюю двухдиагональную, причем число арифметических операций (из-за особого вида исходной матрицы) пропорционально числу неизвестных 1 .

Двухдиагональный вид полученной матрицы позволяет легко построить процесс вычисления неизвестных. Прогоночное соотношение для последнего узла wjv-i = Kn-Un + L^~ 1, совместно с правым краевым условием = I, позволяет вычислить идг_ 1, а затем по рекуррентной формуле (7.3) последовательно определить все неизвестные un-2, un-3, ..., щ разностной задачи. Последовательное вычисление неизвестных с помощью прогоночного соотношения (7.3) называют обратной прогонкой. По своей сути, метод прогонки представляет собой вариант гауссового исключения, который учитывает особенности структуры трехдиагональной матрицы и устраняет операции над ее нулевыми элементами.

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

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

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

  • Отклонения от двухдиагональности для последней переменной в случае краевого условия второго или третьего рода легко преодолеваются.
  • Условис устойчивости выполняется, если матрица обладает свойством диагонального преобладания. Это свойство выполняется для матриц, порожденныхразностными схемами рассматриваемого класса.

Введение………………………………………………………………………..3

    Суть метода прогонки…………………………………………………..4

    Теоретическая часть. ................................................................................5

    Виды прогонки…………………………………………………………..7

    Теорема о корректности и устойчивости прогонки…………………..10

    Решение системы методом прогонки. Код, реализующий метод прогонки…………………………………………………………………..12

    Трёхдиагональная матрица (матрица Якоби)…………………………15

Заключение……………………………………………………………………..19

Список литературы…………………………………………………………….20

ВВЕДЕНИЕ

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

1. Суть метода прогонки

Суть метода прогонки заключается в том, что, используя специфику структуры матрицы системы уравнений (наличие трех диагоналей), удается получить рекуррентные формулы для вычисления последовательности коэффициентов прогонки, которые позволяют на обратном ходу вычислить значения функции в узлах сетки. Рассматривая конечно-разностное уравнение для первой тройки узлов:

b1U1+c1U2=-a1U0,

видим, что оно связывает между собой два соседних значения U1, и U 2 . Перепишем его в виде:

d1U2+e=U1, (1)

где d 1 и е1вычисляются по известным значениям. Наблюдательный читатель заметит, что это справедливо только для задач первого рода. Чуть позже мы получим общее решение. Теперь мы можем исключить £/, из уравнения для следующей тройки узлов:

a2U1+b2U2+c2U2=f2,

подставив значение U1 из уравнения (8). После этой процедуры последнее уравнение также может быть приведено к виду:

d3U3+e2=U2,

di-1Ui+ei-1=Ui-1,

в уравнение

aiUi-1+biUi+ciUi+1=fi,

Ui=-+ (2)

Это соотношение дает две рекуррентные формулы для коэффициентов:

di=-Ci/(ai*di-1+bi) (3)

ei=(fi-ai*ei-1)/(aidi-1+bi) (4)

Цикл вычисления последовательности коэффициентов в соответствии с этими формулами носит название прямого хода прогонки.

do=yo , eo=бo,

Цикл прямого хода повторяется N-1 раз. Последними будут вычислены коэффициенты d N-1 и e N-1 , которые связывают функции в двух узлах вблизи правой границы:

Un-1=dn-1Un+en-1 (5)

Если на правой границе задано условие первого рода U n = с, то уже можно вычислить U n-1 и далее продолжать обратный ход прогонки при I = N - 1,..., 1, 0. Если условие более сложное, то надо рассмотреть уравнение (6), определяющее граничное условие на правой границе. Напомним его:

Un=ynUn-1+бn (6)

Соотношения (6) и (5) составляют систему из двух уравнений с двумя неизвестными. Используя определители, запишем ее решение.

Un-1=(en-1+бndn-1)/(1-yndn-1) (7)

Un=(бn+ynen-1)/(1-yndn-1)

Таким образом, мы нашли значения в двух узлах, лежащих вблизи правой границы расчетной области. Теперь, используя формулу (2) и уменьшая индекс i от N= 2 до 0, можно вычислить все неизвестные £/.. Этот процесс носит название обратного хода прогонки. Почему-то в голову приходит лозунг нашего времени: «Цели ясны, задачи определены.

2. Теоретическая часть

Пусть Ax=b, где A – трехдиагональная матрица. Матрица A= называется (2m+1) – диагональной, если a ij =0 при |i-j|>m.

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

Получаем , используем метод прогонки, исходя из следующего рекуррентного соотношения:,(2) получаем:

Эти формулы представляют собой прямой проход метода. Обратный проход:

Остальные x i находим из формулы (2).

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

Алгоритм:

1. Вводим str/stlb – количество строк/столбцов, A – элементы расширенной матрицы

2. Проверяем матрицу на диагональное преобладание

3. Если матрица с диагональным преобладанием тогда п.4, иначе п.8

4. Выполняем прямой ход метода (формулы (3), (4)): c:=A/A; d:=A/A;

c[i]:= (-A)/(A*c+A);

d[i]:= (A-A*d)/(A*c+A)

x:=(A-A*d)/(A+A*c);

x[i]:=c[i]*x+d[i];

6. Выводим x;

7. Проверки на невязку;

8. Заканчиваем алгоритм.

В программе : A = B i , A = C i , A = A i , A = b i , d[i] = ? i , c[i] = ? i , str = n.

Описание входной информации: Str (Stlb) – количество строк (столбцов) в расширенной матрице, A – матрица A (i – строки, j – столбцы)

3. Виды прогонки

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

Рассмотрим наиболее простой случай ленточных систем , к которым, как увидим впоследствии, сводится решение задач сплайн-интерполяции функций, дискретизации краевых задач для дифференциальных уравнений методами конечных разностей, конечных элементов и др. А именно, будем искать решение такой системы, каждое уравнение которой связывает три “соседних” неизвестных:

b i x i -1 + c i x i + d i x i = r i (1)

где i =1,2 ,...,n ; b 1 = 0, d n = 0. Такие уравнения называются трехточечными разностными уравнениями второго порядка . Система (1) имеет трёхдиагональную структуру, что хорошо видно из следующего, эквивалентного (1), векторно-матричного представления:

c 1 d 1 0 0 ... 0 0 0 x 1 r 1

b 2 c 2 d 2 0 ... 0 0 0 x 2 r 2

0 b 3 c 3 d 3 ... 0 0 0 x 3 r 3

. . . . ... . . . * ... = ...

0 0 0 0 ... b n -1 c n -1 d n -1 x n -1 r n-1

0 0 0 0 ... 0 b n c n x n r n

Как и в решении СЛАУ методом Гаусса, цель избавится от ненулевых элементов в поддиаганальной части матрицы системы, предположим, что существуют такие наборы чисел δ i и λ i (i =1,2 ,...,n ) , при которых

x i = δ i x i+1 + λ i (2)

т.е. трехточечное уравнение второго порядка (1) преобразуется в двухточечное уравнение первого порядка (2). Уменьшим в связи (2) индекс на единицу и полученое выражение x i -1 = δ i -1 x i + λ i -1 подставим в данное уравнение (1):

b i δ i-1 x i + b i λ i-1 + c i x i + d i x i+1 = r i

x i = - ((d i /( c i + b i δ i-1 )) x i-1 + (r i - b i λ i-1 )/( c i - b i δ i-1 )).

Последнее равенство имеет вид (2) и будет точно с ним совпадать, иначе говоря, представление (2) будет иметь место, если при всех i =1,2,…, n выполняются рекуррентные соотношения

δ i = - d i /( c i + b i δ i-1 ) , λ i = (r i - b i λ i-1 )/( c i - b i δ i-1 ) (3)

Легко видеть, что, в силу условия b 1 =0 , процесс вычисления δ i , λ i может быть начат со значений

δ 1 = - d 1 / c 1 , λ 1 = r 1 / c 1

и продолжен далее по формулам (3) последовательно при i =2,3,..., n , причем при i = n , в силу d n =0, получим δ n = 0.Следовательно, полагая в (2) i = n ,будем иметь

x n = λ n = (r n b n λ n-1 )/( c n b n δ n-1 )

(где λ n -1 , δ n -1 уже известные с предыдущего шага числа). Далее по формулам (2) последовательно находятся x n -1 , x n -2 ,…, x 1 при i = n -1, n -2,...,1 соответственно.

Таким образом, решение уравнений вида (1) описываем способом, называемым методом прогонки , сводится к вычислениям по трём простым формулам: нахождение так называемых прогоночных коэффициентов δ i , λ i по формулам (3) при i =1,2,…, n (прямая прогонка ) и затем неизвестных x i по формуле (2) при i = n -1, n -2,...,1 (обратная прогонка ).

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

Будем называть прогонку корректной , если знаменатели прогоночных коэффициентов (3) не обращаются в нуль, и устойчивой , если |δ i |< 1 при всех i {1,2, ..., n }.

Приведем простые достаточные условия корректности и устойчивости прогонки, которые во многих приложениях метода автоматически выполняются.

4. Теорема о корректности и устойчивости прогонки

Пусть коэффициенты b i и d i уравнения (1) при i =2,3,..., n -1 отличны от нуля и пусть

| c i |>| b i |+| d i | i =1,2,…, n . (4)

Тогда прогонка (3), (2) корректна и устойчива (т.е. с i + b i δ i -1 0, i |< 1).

Доказательство . Воспользуемся методом математической индукции для установления обоих нужных неравенств одновременно.

При i = 1, в силу (4), имеем:

| c 1 |>| d 1 |≥ 0

Неравенство нулю первой пары прогоночных коэффициентов, а так же

1 |=|- d 1 / c 1 |< 1

Предположим, что знаменатель (i -1)-x прогоночных коэффициентов не равен нулю и что i -1 |< 1. Тогда, используя свойства модулей, условия теоремы и индукционные предположения, получаем:

|с i + b i δ i -1 |≥| c i | - | b i δ i -1 |>| b i |+| d i | - | bi |*| δi -1 |= | d i |+| bi | (1 - | δ i -1 |)> | d i | >0

а с учетом этого

|δ i |=|- d i / с i +b i δ i-1 |=| δ i |/| с i +b i δ i-1 |< |δ i |/ |δ i |= 1

Следовательно, с i + b i δ i -1 0 и i |< 1 при всех i {1,2, ..., n }, т.е. имеет место утверждаемая в данных условиях корректность и устойчивость прогонки. Теорема доказана.

Пусть А – матрица коэффициентов данной системы (1), удовлетворяющих условиям теоремы, и пусть

δ 1 = - d 1 / c 1 , δ i =|- d i / c i +b i δ i-1 (i=2,3,...,n -1 ), δ n =0

Прогоночные коэффициенты, определяемые первой из формул (3), а

i = с i + b i δ i -1 (i =2,3,..., n )

Знаменатели этих коэффициентов (отличные от нуля согласно утверждению теоремы). Непосредственной проверкой легко убедится, что имеет место представление A = LU , где

c 1 0 0 0 ... 0 0 0

b 2 2 0 0 ... 0 0 0

L = 0 b 3 3 0 ... 0 0 0

…………………………

0 0 0 0 ... b n -1 n -1 0

0 0 0 0 ... 0 b n n

1 -δ 1 0 0 ... 0 0 0

0 1 δ 2 0 ... 0 0 0

U = 0 0 1 δ 3 ... 0 0 0

…………………………

0 0 0 0 ... 0 1 -δ n-1

0 0 0 0 ... 0 0 1

Единственное в силу утверждение теоремы LU -разложения матриц. Как видим, LU-разложение трехдиагональной матрицы А может быть выполнено очень простым алгоритмом, вычисляющем i δ i при возрастающих значениях i . При необходимости попутно может быть вычислен

det A = c 1 ∏ i .

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

5. Решение системы методом прогонки. Код, реализующий метод прогонки

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

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

Поделив первую строку матрицы, приведенной выше, на -b 1 очевидно, что:

и можно вывести формулу для прямого хода:

Затем необходимо выполнить обратный ход - найти вектор X, из последней строки преобразованной матрицы следует, что x n = Q n .

В тоже время остальные элементы вектора считаются по формуле:

Следует заметить, что метод устойчив если(следует из диагонального преобладания матрицы А):

и корректен, если(иначе формулы прямого хода не имеют смысла):

Ниже представлен код, реализующий метод прогонки, принимает трехдиагональную матрицу a размерности N*N, и вектор правых частей b размерности N, результат возвращается в b:

void sweep(double a[N][N],double b[N])

for(i=1;i < N-1;i++)

znam=-a[i][i]-a[i]*a[i]; //общий знаменатель для формул нахождения Pi, Qi

a[i]/=znam; //P i

b[i]=(a[i]*b-b[i])/znam; //Q i

//строка ниже для вычисления Q N

b=(a*b-b)/(-a-a*a);

//обратный ход

for(i=N-2;i > -1;i--)

b[i]+=b*a[i];

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

Преобразуем первое уравнение системы к виду , где ,

Подставим полученное выражение во второе уравнение системы и преобразуем его к виду и т.д. На i -ом шаге уравнение преобразуется к виду , где , . На m -ом шаге подстановка в последнее уравнение выражения дает возможность определить значение :

Значения остальных неизвестных находятся по формулам: , i = m-1, m-2, ..., 1.

Пример 4 . Решение системы уравнений методом прогонки.

Прямой ход прогонки . Вычислим прогоночные коэффициенты:

, ,

Обратный ход прогонки. Находим значения неизвестных:

, , ,

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

6. Трёхдиагональная матрица (матрица Якоби)

Трёхдиагональной матрицей или матрицей Якоби называют матрицу следующего вида:

.

Системы линейных алгебраических уравнений с такими матрицами встречаются при решении многих задач математики и физики. Краевые условия x 1 и x n , которые берутся из контекста задачи, задают первую и последнюю строки. Так краевое условие первого рода F (x = x 1) = F 1 определит первую строку в виде C 1 = 1, B 1 = 0, а условие второго рода dF / dx (x = x 1) = F 1 будет соответствовать значениям C 1 = − 1, B 1 = 1.

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

Для решения систем вида или, что то же самое,

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

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

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

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

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

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

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

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

.

Вычисления проводятся в два этапа. На первом этапе вычисляются компоненты матрицы и вектора , начиная с до

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

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

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

Описание выходной информации: x – матрица-ответ

Заключение

Таким образом, мы:

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

    реализовали программный код

    доказали теорему о корректности и устойчивости прогонки

    рассмотрели на примере решение СЛАУ методом прогонки.

Список литературы

В.М. Вержбитский «Численные методы. Линейная алгебра и нелинейные уравнения», Москава «Высшая школа 2000».

Федеральное агентство по образованию

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

«Читинский Государственный Университет»

(ЧитГУ)

Энергетический институт

Кафедра прикладной информатики и математики

РЕФЕРАТ

По дисциплине: Численные методы

Тема: Метод прогонки

Выполнил: студентка группы ПИ-08

Цыренжапова Е.В.

Проверил: Станкова М.Г.

#���#####################################################5#=#O###n##########################�X##�###�X##�##8�X##�##T�X##�##p�X##�##x�X##�##��X##�##��X##�###X##�

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

Приведём первое уравнение системы (31) к виду (32):

y 1+

−f 0

Сравнивая уравнения (33) и (34) получим

α 0=

β 0 = −

Рассматривая остальные уравнения системы (31) получим общие рекуррентные формулы для коэффициентов α i иβ i .

; β i =

− 1 Ai − fi

(i = 1,2,..,n ).

− α i− 1 A i

− α i− 1 A i

Запишем систему уравнений, состоящую из последнего уравнения системы (31) и уравнения (32) для i = n-1 .

A ny n− 1 − C ny n= f n,

y n − 1= α n − 1y n + β n − 1(37)

Решая систему (37) находим выражение для y n :

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

2Y 1

2 +Y 3

2Y 3 -Y

Y 3 -Y

Матрица А для этой системы имеет следующий вид

Прямой ход метода прогонки

С0 =1; B0 =1; f0 =-2

−2

; β i

β i− 1 A i

− f i

(i = 1,2,..,n ).

− α i− 1 A i

C i− α i− 1 A i

Реализация метода прогонки в среде программы MS Excel Постановка задачи

Рассмотрим процедуру применения этой методики для решения конкретной краевой задачи. Определим конкретную форму уравнения

(1), задав формулы для вычисления его коэффициентов:

p(x) =

−2

; q(x) =

− 12

f (x) =

3x + 1

2x +

(2x + 1)

(2x + 1)

и граничные условия

x0 = 2, xk = 6 , y(2)= Y0 = 4

и y(6) = Yk

Запишем рассматриваемый пример при n равном 5. Таким образом, число узлов сетки равно 6, а формат системы соответствует

Как уже отмечено выше, в рассматриваемом нами случае системы (30), если следовать традиционной записи, использованной в (31), значениеА 0 = 0, С 0 =-1, а значениеВ 0 =0 . Аналогично для последнего уравнения имеем значениеА n = 0 иС n =-1, В n =0 .

Рассмотрим последовательность шагов решения на примере уравнения (20) с учетом (32), (33), приведенных выше.

Для того чтобы обеспечить в дальнейшем наглядность и понятность вычислений, заполним таблицу значениями функций p(x), q(x) иf(x), вычисленными в узловых точках приn=5 . Для определения значенияh выполним на листе Excel следующие операции (рис.6.3):

▬ в ячейки А1, С1, Е1 иG1 введём комментарии:"Х 0 =", "Х k =", "n=" и"h=" ,

▬ в ячейку В1 введем значение аргументаХ 0 равное 2,

▬ в ячейку D1 введем значение аргументаХ k равное 6,

▬ в ячейку F1 введем значение аргументаn равное 5,

▬ в ячейку H1 введем формулу "=(D1-B1)/F1" 2 , определяющую значение шага между узлами формируемой сетки как

h = x k− n x 0.

▬ В ячейках второй строки таблицы оформим заголовок таблицы так, как это показано на рис. 6.3.

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

1. В ячейки А3:А8 введём индексы строк. Для этого в ячейкуА3 введём цифру0 – индекс первого узла. ПереводимУМ 3 в правый нижний угол ячейкиА3 ,ФЛКМ и, зафиксировав клавишуCtrl , протянемУМ от ячейкиА3 до ячейкиА8 .

2. В ячейку B3 вводим ссылку на ячейку с начальным значением

аргумента Х 0 : "=В1". Значение ссылки формируется, если

2 ) Формулы вводятся в ячейки таблиц, начиная с символа “=” (равно). Двойные кавычки использованы в тексте для выделения формулы. Вводить их в ячейки таблицы не нужно.

3 ) Терминология и сокращения, используемые в тексте методических указаний, приведены в начальном разделе методических указаний к первой лабораторной работе:.

подвести УМ к ячейке, на которую делается ссылка и сделать

3. Заполняем ячейки столбца В , выполняя вычисление значений аргументах в соответствии с формулой

xi + 1 = xi + h (i= 0,1, ... , n− 1).

Для этого в ячейку B4 вводим формулу"=В3+$H$1", которую протягиваем до ячейкиB8 , в которой достигается значение равное значениюx n =Х k . (Для формирования абсолютной ссылки на ячейкуН1 послеЩЛК по ячейкеН1 следует нажать функциональную клавишуF4 ).

4. В ячейках от C3 доC8 вычисляем значения вспомогательной

функции 1/(2 х i + 1) , входящей в знаменатели функцийp(x), q(x) иf(x) . Вводим вC3 формулу"=1/(2*B3+1)" и протягиваем эту формулу до ячейкиC8;

5. В ячейки D3 ,E3 иF3 записываем формулы, соответствующие (32), для вычисления значений функцийp(x), q(x) иf(x). Запись этих формул при вводе их в ячейки таблицы имеет следующий вид:"=- 2*C3" ,"= -12*C3*C3" и"=(3*B3+1)*C3*C3" соответственно.

При протягивании этих формул по столбцам D, Е иF до восьмой строки таблица заполняется так, как показано на рис. 6.4.

коэффициентов A i , C i , B i иF i в соответствии с форматом системы уравнений (30). В ячейкиG3, H3, I3 записываем значения,

определяемые форматом первого уравнения системы (30): A 0 =0, C 0 =-1, В 0 =0. В ячейкуJ3 записываем ссылку на ячейкуJ1, в которой записано начальное значениеF 0 =Y 0 :A i = 1 − p(xi ) h 2

для вычисления коэффициента A 1 . После чего протягиваем эту формулу доячейки G7 .

9. Аналогично в ячейку Н4 вводим формулу для вычисления

коэффициента С 1 : "2-Е4*$H$1*$H$1", а в ячейкуI4 вводим формулу для вычисления коэффициентаB 1 B : "1+D4*$H$1/2",

реализуя соответствующие формулы

− q(xi ) h2 ; Bi = 1 + p(xi )

Протягиваем эти формулы до ячеек Н7 иI7 .

10. В ячейках столбца J формируем вектор правых частей системы

уравнений (30). В ячейку J4 вводим формулу“=F4*$H$1*$H$1”, соответствующую формулеF i = f i h 2 . Протягиваем эту формулу до ячейкиJ7. В результате получаем таблицу, показанную на рис. 6.5. Следует отметить, что в столбцахG, H, I иJ этой таблицы записаны элементы матрицы, решаемой системы уравнений (30).

11. Используя вычисленные значения коэффициентов A i , C i , B i иF i , находим в соответствии с формулами (37) и (38) значения

коэффициентов α i иβ i . В ячейкуK3 запишем формулу для вычисленияα 0 : "=I3/H3", а в ячейкуL3 формулу для вычисленияβ 0 .: "=-J3/H3". И далее в ячейкиK4 иL4 вводим формулы, соответствующие (38), для вычисления коэффициентов