5.1: Основний алгоритм
Найкращий спосіб зрозуміти, як працює гаусова елімінація, - це працювати на конкретному прикладі. Розглянемо наступнуN=3 проблему:
[123322262][x0x1x2]=[344].
Алгоритм гаусової елімінації складається з двох різних фаз: зменшення рядків та зворотної заміщення.
5.1.1 Зменшення R рядків
У фазі скорочення рядків алгоритму ми маніпулюємо матричним рівнянням так, щоб матриця стала верхньою трикутною (тобто всі записи нижче діагоналі дорівнюють нулю). Щоб цього домогтися, зауважимо, що один ряд ми можемо відняти з іншого ряду, не змінюючи розчин. Насправді, ми можемо відняти будь-яке кратне рядка.
Усунемо (обнулити) елементи нижче діагоналі в певному порядку: зверху вниз по кожному стовпчику, потім зліва направо для послідовних стовпчиків. Для нашого3×3 прикладу елементи, які ми маємо намір усунути, і порядок, в якому ми їх усунемо, позначаються кольоровими цифрами01, а на2 наступному малюнку:

Перший елемент матриці, який ми хочемо усунути, знаходиться в(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 зникає термін пропорційний, і ми отримуємо наступні модифіковані лінійні рівняння, що володіють тим же розв'язком:

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

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

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

Завдяки скороченню рядків всі елементи матриці в цьому рядку дорівнюють нулю, крім останнього. Отже, ми можемо прочитати рішення
x2=(−4.5)/(−7.5)=0.6.
Далі дивимося на ряд вище:

Це рівняння за участюx1 іx2. Але з попереднього кроку зворотної підміни ми знаємоx2. Отже, ми можемо вирішити
x1=[−5−(−7)(0.6)]/(−4)=0.2.
Нарешті, дивимося на рядок вище:

Це включає в себе всі три змінніx0x1, іx2. Але ми вже знаємоx1 іx2, тому можемо прочитати рішення дляx0. Кінцевий результат
[x0x1x2]=[0.80.20.6].
5.1.3 Виконання
Давайте підсумуємо складові алгоритму гаусової елімінації, і проаналізуємо, скільки кроків проходить кожна частина:
Зменшення рядків | ||||
---|---|---|---|---|
• | Крок вперед через ряди. Для кожного рядуn | Nсходинок | ||
• | Виконуємо поворот (мова піде нижче). | N−n+1∼Nсходинок | ||
• | Крок вперед через ряди більше ніжn. Для кожного такого рядуm | N−n∼Nсходинок | ||
• | Відніміть(A′mn/A′nn) час рядкаn з рядкаm (A′де поточна матриця). Це виключає елемент матриці при(m,n). | O(N)арифметичні операції | ||
Задня заміна | ||||
• | Крок назад через ряди. Для кожного рядуn | Nсходинок | ||
• | Підставляємо в розчиниxm дляm>n (які вже знайдені). Значить, знайтиxn. | N−n∼O(N)арифметичні операції |
(Процедура «повороту» ще не обговорювалася; ми зробимо це в наступному розділі.)
Зроблено висновок, що час виконання фази скорочення рядківO(N3) масштабується як, а час виконання фази зворотного заміщення масштабується якO(N2). Отже, загальний час виконання алгоритму масштабується якO(N3).