Решение системы методом прогонки пример

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

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

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

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

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


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

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

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

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

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

Данный метод также является модификацией метода Гаусса для частного случая разреженных систем - систем с матрицей трехдиагонального типа (краевая задача ДУ).

Каноническая форма их записи


(1.6)

или в развернутом виде:

(1.7)

При этом, как правило, все коэффициенты b i  0.

Метод реализуется в два этапа - прямым и обратным ходами.

Прямой ход . Каждое неизвестное x i выражается через x i +1

(x i = A i x i +1 + B i для i = 1,2, ..., n – 1) (1.8)

посредством прогоночных коэффициентов A i и B i . Определим алгоритм их вычисления.

Из первого уравнения системы (1.7) находим x 1:

.

Из уравнения (1.8) при i = 1 x 1 = A 1 x 2 + B 1 . Следовательно,

и согласно уравнению (1.8) при i = 2 x 2 = A 2 x 3 + B 2 , следовательно:

,

где е 2 = а 2 А 1 + b 2 .

Ориентируясь на соотношения индексов при коэффициентах уравнений (1.9) и (1.9*), можно получить эти соотношения для общего случая:

,

где е i = а i А i –1 + b i (i = 2,3, ..., n – 1) . (1.10)

Обратный ход. Из последнего уравнения системы (1.7) с использованием данных выражения (1.8) при i = n – 1

.

При реализации метода прогонки нужно учитывать, что при условии

(1.12)

или хотя бы для одного b i имеет место строгое неравенство (1.12), деление на «0» исключается и система имеет единственное решение.

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

Схема алгоритма метода прогонки может иметь вид, представленный на рисунке 1.2.

Рисунок 1.2 - Блок-схема метода прогонки

Итерационные методы решения слау

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

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

Для применения метода итераций исходную систему необходимо привести к итерационному виду

(1.13)

и затем итерационный процесс выполнить по рекуррентным формулам:

, k = 0, 1, 2, ... . (1.13*)

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

Для сходимости метода (1.13*) необходимо и достаточно, чтобы | i (G )| < 1, где  i (G ) - все собственные значения матрицы G . Сходимость будет и в случае, если ||G || < 1, ибо | i (G )| <  ||G || ( - любой).

Символ ||...|| означает норму матрицы. При определении ее величины чаще всего останавливаются на проверке двух условий:

||G || =
или ||G || =
, (1.14)

где
. Сходимость гарантирована также, если исходная матрицаА имеет диагональное преобладание, т. е.

. (1.15)

Когда условия (1.14) или (1.15) выполняются, метод итерации сходится при любом начальном приближении
. Чаще всего вектор
берут или нулевым, или единичным, или сам векториз системы (1.13).

Если выполняется условие (1.15), тогда преобразование к итерационному виду (1.13) можно осуществить просто, решая каждое i -е уравнение системы (1) относительно x i по следующим рекуррентным формулам:

g ij = − a ij / a ii ; g ii = 0; f i = b i / a ii , (1.15*)

т. е.
.

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