Модифицированный метод Гаусса

В данном случае помимо соблюдения требования akk ¹ 0 при реализации формул (6) накладываются дополнительные требования, чтобы ведущий (главный) элемент в текущем столбце в процессе преобразований исходной матрицы имел максимальное по модулю значение. Это также достигается перестановкой строк матрицы.

Пример. В качестве иллюстрации преимущества модифицированного метода Гаусса, рассмотрим систему третьего порядка:

Модифицированный метод Гаусса - student2.ru (а)

Прямой ход метода Гаусса

Исключаем х1 из второго и третьего уравнений. Для этого первое уравнение умножаем на 0,3 и складываем со вторым, а затем умножаем первое уравнение на (–0,5) и складываем с третьим. В результате получаем

Модифицированный метод Гаусса - student2.ru (б)

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

Умножая второе уравнение на 25, и складывая с третьим, получим

Модифицированный метод Гаусса - student2.ru (в)

Обратный ход метода Гаусса

Выполняем вычисления, начиная с последнего уравнения в полученной системе:

Модифицированный метод Гаусса - student2.ru

Подставляя полученное решение [0; –1; 1] в исходную систему, убеждаемся в его истинности.

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

Модифицированный метод Гаусса - student2.ru (г)

Прямой ход метода для системы (г) повторим по аналогичной технологии с исходной системой (а).

Модифицированный метод Гаусса - student2.ru (д)

После исключения х2 третье уравнение примет вид (остальные – без изменения)

15005 х3 = 15004. (е)

Выполняя обратный ход, получим

Модифицированный метод Гаусса - student2.ru

Очевидно, что полученные решения [0; –1; 1] и [–0,35; –1,4; 0,99993] различны. Причиной этого является малая величина ведущего элемента во втором уравнении преобразования в (д). Чтобы это исключить, переставим в (д) вторую и третью строки

Модифицированный метод Гаусса - student2.ru º Модифицированный метод Гаусса - student2.ru (ж)

Для данной системы после исключения х2 из третьего уравнения, оно примет следующий вид

6,002 х3 = 6,002. (з)

В данном случае, выполняя обратный ход

Модифицированный метод Гаусса - student2.ru

мы получим решение системы (г) [0; –1; 1], которое в точности совпадает с решением исходной системы.

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

Рассмотрим блок-схему модифицированного метода Гаусса (рис. 2.1).

Модифицированный метод Гаусса - student2.ru

Рис. 2.1. Блок-схема модифицированного метода Гаусса

Проведем анализ предложенной схемы на примере системы n=3 (e=0,001)

Модифицированный метод Гаусса - student2.ru (8)

Модифицированный метод Гаусса - student2.ru ; Модифицированный метод Гаусса - student2.ru . (*)

Блок 1. Ввод исходных данных: n – порядок системы, A – матрица коэффициентов при неизвестных, b – вектор свободных членов.

Блок 2. I-й цикл прямого хода (для k, изменяющегося от 1 до предпоследнего значения, т.е. до n–1) обеспечивает исключение из главной диагонали матрицы А элемента akk=0 благодаря поиску максимального элемента akk в текущем столбце, осуществляемому в блоках 3¸6 с помощью цикла II.

Далее с помощью цикла III в блоках 7¸13 выполняется перестановка текущей строки и строки с максимальным элементом в k-ом столбце (ее номер р).

Затем реализуются расчеты по формулам (6) прямого хода Гаусса в блоках циклов IV и V.

Проведем поблочный анализ в среде рассмотренных циклов I¸V на примере (8).

Блок 3 p = k = 1

Вход в цикл II

Блок 4 m = k+1 = 2 до n = 3

Блок 5 a11 = 2 < a21 = 4 из (*)

Блок 6 p = 2

Блок 4 m = 2+1 = 3

Блок 5 a21 = 4 < a31 = 6 из (*)

Блок 6 p = 3

Выход из цикла II и вход в цикл III, блоки 7¸10 выполняют перестановку строк матрицы А поэлементно

Блок 7 j = 1 (j от 1 до 3)

Блок 8 r = a11 = 2 из (*)

Блок 9 a11 = a31 = 6

Блок 10 a31 = r

Блок 7 j = 2

Блок 8 r = a12 = 1

Блок 9 a12 = a32 = 5

Блок 10 a32 = r = 1

Блок 7 j = 3 и по аналогии r = a13; a13 = a33; a33 = r = −1.

Выход из цикла III и вход в Блок 11 и далее 12¸13 выполняют аналогичную перестановку значений свободных членов

r = b1 = 1; b1 = b3 = 14; b3 = r = 1.

Вход в цикл IV с измененной системой

Модифицированный метод Гаусса - student2.ru ; Модифицированный метод Гаусса - student2.ru ; (**)

для пересчета b2 вектора Модифицированный метод Гаусса - student2.ru

m = k+1 = 1+1 = 2 до n = 3

c = amk / akk = a21 / a11 = 4/6 из (**)

b2 = b2 – c b1 = 6 – 4/6 × 14 = −20/6 из (**)

Вход во вложенный цикл V для пересчета второй строки

i = 1 (i от 1 до 3); a21 = a21 – с × a11 = 4 – 4/6 × 6 = 0;

i = 2; a22 = a22 – с × a12 = 6 – 4/6 × 5 = 16/6;

i = 3; a23 = a23 – с × a13 = 2 – 4/6 × 8 = −20/6.

Выход из цикла V и вход в цикл IV

m = 3; c = a31 / a11 = 2/6.

Вход в Блок 16

b3 = b3 – c b1 = 1 – 2/6 × 14 = −22/6.

Выход из цикла IV и вход в цикл V и вход в Блок 17

i = 1 (i от 1 до 3); a31 = a31 – с × a11 = 2 – 2/6 × 6 = 0;

i = 2; a32 = a32 – с × a12 = 1 – 2/6 × 5 = −4/6;

i = 3; a33 = a33 – с × a13 = −1 – 2/6 × 8 = −22/6.

Выход из цикла V с преобразованной системой

Модифицированный метод Гаусса - student2.ru ; Модифицированный метод Гаусса - student2.ru ; (***)

и вход по линии А в цикл I

k = 2; p = k = 2; m = k+1 = 3; вход в Блок 5

| a22 | < | a32 | = | 16/6 | > | 4/6 | из (***).

Выход из цикла II и вход в цикл III

j = 2 (j от 2 до 3);

r = akj = a22 = 16/6; a22 = a22 ; a22 = r = 16/6; из (***)

j = 3;

r = a23 = −20/6; a23 = a23 ; a23 = r = −20/6; из (***)

В данном случае на диагонали оказался максимальный элемент, поэтому перестановка 2-ой и 3-ей строк не выполняется.

Выход из цикла III и вход в цикл I в Блок 11

r = b2 ; b2 = b2 ; b2 = r = −20/6.

Свободный член b2 остается на своем месте.

Вход в цикл IV

m = k+1 = 2+1 = 3;

c = amk / akk = a32 / a22 = (–4/6) / (16/6); из (***)

b3 = b3 – c b2 = −22/6 – (–1/4) × (–20/6) = −27/6 из (***)

Выход из цикла IV и вход в цикл V

i = 2 (i от 2 до 3); a32 = a32 – с × a22 = −4/6 – (–1/4) × 16/6 = 0;

i = 3; a33 = a33 – с × a23 = −22/6 – (–1/4) × (–20/6) = −27/6.

Выход из цикла V и выход из цикла I.

Обратный ход метода Гаусса

В Блоках 19¸24 реализуются формулы (7).

В Блоке 19 из последнего уравнения находится значение xn (n = 3)

x3 = bn / ann = b3 / a33 = (–27/6) / (–27/6) = 1.

Вход в цикл VI (Блок 20), в котором значение переменной цикла k изменяется от n–1 до 1 с шагом (–1)

Блок 21 s = 0

Вход в цикл VII (Блок 22)

i = k+1 = 2+1 = 3; n = 3; s = s + aki× xi = 0 + a23 ×x3 = −20/6 ×1 = −20/6.

Выход из цикла VII на Блок 24 в цикл VI:

k = 2; x2 = (bk – s)/ ann = (b2 – s)/ a22 = (–20/6 +20/6)/ a22 = 0.

Далее по аналогии

k = k–1 = 2–1 = 1;

s = 0;

i = k + 1 = 2; s = 0 + a12 ×x2 = 5 × 0 = 0;

i = k + 1 = 3; s = 0 + a13 ×x3 = 8 × 1 = 8;

x1 = (b1 – s)/ a11 = (14 – 8) / 6 = 1.

Выход из последнего цикла VII.

В Блоке 25 (цикл опущен) выполняется вывод на экран полученного решения СЛАУ – вектора Модифицированный метод Гаусса - student2.ru т.е. xi, i=1, ..., n. В нашем случае (1; 0; 1).

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

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

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

aixi–1 + bixi + cixi+1 = di; i= Модифицированный метод Гаусса - student2.ru ; a1 = cn = 0, (9)

Модифицированный метод Гаусса - student2.ru или в развернутом виде

b1x1 + c1x2 = d1;

a2x1 + b2x2 + c2x3 = d2;

a3x2 + b3x3 + c3x4 = d3;

. . . (10)

an–1xn–2 + bn–1xn–1 + cn–1xn = dn–1;

anxn–1 + bnxn = dn .

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

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

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

xi = Ai × xi+1+ Bi для i = 1,2, ..., n–1, (11)

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

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

Модифицированный метод Гаусса - student2.ru .

Из уравнения (11) при i=1: x1= A1× x2+ B1 . Следовательно

Модифицированный метод Гаусса - student2.ru . (12)

Из второго уравнения системы (10) определяем x2 через x3, подставляя найденное значение x1

а2( A1 x2+ B1) + b2 x2 + c2 x3 = d2 ,

откуда

Модифицированный метод Гаусса - student2.ru ; (12*)

и согласно (11) при i = 2: x2= A2× x3+ B2 , следовательно

Модифицированный метод Гаусса - student2.ru , где е2= а2× А1+ b2 .

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

Модифицированный метод Гаусса - student2.ru , где еi = аi × Аi–1+ bi (i=2,3, ..., n–1) . (13)

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

Модифицированный метод Гаусса - student2.ru . (14)

Далее посредством (11) и прогоночных коэффициентов (12), (13) последовательно вычисляем xn–1, xn–2, ..., x1.

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

| bi | ³ | ai | + | ci | , (15)

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

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

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

Модифицированный метод Гаусса - student2.ru

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

Наши рекомендации