Skip to main content
LibreTexts - Ukrayinska

5.1: Основний алгоритм

Найкращий спосіб зрозуміти, як працює гаусова елімінація, - це працювати на конкретному прикладі. Розглянемо наступнуN=3 проблему:

[123322262][x0x1x2]=[344].

Алгоритм гаусової елімінації складається з двох різних фаз: зменшення рядків та зворотної заміщення.

5.1.1 Зменшення R рядків

У фазі скорочення рядків алгоритму ми маніпулюємо матричним рівнянням так, щоб матриця стала верхньою трикутною (тобто всі записи нижче діагоналі дорівнюють нулю). Щоб цього домогтися, зауважимо, що один ряд ми можемо відняти з іншого ряду, не змінюючи розчин. Насправді, ми можемо відняти будь-яке кратне рядка.

Усунемо (обнулити) елементи нижче діагоналі в певному порядку: зверху вниз по кожному стовпчику, потім зліва направо для послідовних стовпчиків. Для нашого3×3 прикладу елементи, які ми маємо намір усунути, і порядок, в якому ми їх усунемо, позначаються кольоровими цифрами01, а на2 наступному малюнку:

clipboard_ee51b6655ea8f5114a5fdf27ae6c5a4fd.png
Малюнок5.1.1

Перший елемент матриці, який ми хочемо усунути, знаходиться в(1,0) (помаранчеве коло). Щоб її усунути, віднімаємо, з цього ряду, кратний ряду0. Ми будемо використовувати коефіцієнт3/1=3:

(3x0+2x1+2x2)(3/1)(1x0+2x1+3x2)=4(3/1)3

Використовуваний нами3 коефіцієнт визначається наступним чином: ми ділимо елемент матриці на(1,0) (який ми маємо намір усунути) на елемент at(0,0) (який є тим, що по діагоналі в тому ж стовпці). В результатіx0 зникає термін пропорційний, і ми отримуємо наступні модифіковані лінійні рівняння, що володіють тим же розв'язком:

clipboard_ea9ac17b2d6a51a7ab06a9dfded14addf.png
Малюнок5.1.2

(Зауважте, що ми змінили запис у векторі з правого боку, а не тільки матрицю на лівій стороні!) Далі усуваємо елемент при(2,0) (зелене коло). Для цього віднімаємо, з цього ряду, кратний ряду0. Коефіцієнт, який слід використовувати2/1=2, який є елементом при(2,0) діленні на(0,0) (діагональний) елемент:

(2x0+6x1+2x2)(2/1)(1x0+2x1+3x2)=4(2/1)3

Результатом є

clipboard_e2f868d69e640f2417ce294c0831f5479.png
Малюнок5.1.3

Далі усуваємо(2,1) елемент (синій коло). Цей елемент лежить у стовпці1, тому ми усуваємо його, віднімаючи кратну рядку1. Коефіцієнтом використання є2/(4)=0.5, який є(2,1) елементом, розділеним на(1,1) (діагональний) елемент:

(0x0+2x14x2)(2/(4))(0x04x17x2)=5(2/(4))(2)

Результатом є

clipboard_e2b08908b35369e1242c4b67cc2443259.png
Малюнок5.1.4

Ми завершили фазу скорочення рядків, так як матриця з лівого боку верхньо-трикутна (тобто всі записи нижче діагоналі встановлені на нуль).

5.1.2 Зворотна заміна

У фазі зворотного заміщення зчитуємо розчин від самого нижнього ряду до самого верхнього ряду. Спочатку оглядаємо нижній ряд:

clipboard_e88050c7d67e5377372205efdc8d491ca.png
Малюнок5.1.5

Завдяки скороченню рядків всі елементи матриці в цьому рядку дорівнюють нулю, крім останнього. Отже, ми можемо прочитати рішення

x2=(4.5)/(7.5)=0.6.

Далі дивимося на ряд вище:

clipboard_e1a889d08902264079ef840ac8e9c2cfd.png
Малюнок5.1.6

Це рівняння за участюx1 іx2. Але з попереднього кроку зворотної підміни ми знаємоx2. Отже, ми можемо вирішити

x1=[5(7)(0.6)]/(4)=0.2.

Нарешті, дивимося на рядок вище:

clipboard_e88e368fb3f4b56d5b06e6434386c14d4.png
Малюнок5.1.7

Це включає в себе всі три змінніx0x1, іx2. Але ми вже знаємоx1 іx2, тому можемо прочитати рішення дляx0. Кінцевий результат

[x0x1x2]=[0.80.20.6].

5.1.3 Виконання

Давайте підсумуємо складові алгоритму гаусової елімінації, і проаналізуємо, скільки кроків проходить кожна частина:

Зменшення рядків
Крок вперед через ряди. Для кожного рядуn Nсходинок
Виконуємо поворот (мова піде нижче). Nn+1Nсходинок
Крок вперед через ряди більше ніжn. Для кожного такого рядуm NnNсходинок
Відніміть(Amn/Ann) час рядкаn з рядкаm (Aде поточна матриця). Це виключає елемент матриці при(m,n). O(N)арифметичні операції
Задня заміна
Крок назад через ряди. Для кожного рядуn Nсходинок
Підставляємо в розчиниxm дляm>n (які вже знайдені). Значить, знайтиxn. NnO(N)арифметичні операції

(Процедура «повороту» ще не обговорювалася; ми зробимо це в наступному розділі.)

Зроблено висновок, що час виконання фази скорочення рядківO(N3) масштабується як, а час виконання фази зворотного заміщення масштабується якO(N2). Отже, загальний час виконання алгоритму масштабується якO(N3).