МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
МЕТОД ГАУССА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ
ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ
Методичні вказівки
до лабораторної роботи № 2
з курсу
"Комп’ютерні методи дослідження інформаційних процесів та систем"
для студентів базових напрямів 6.170101 "Безпека інформаційних і комунікаційних систем", 6.170102 "Системи технічного захисту інформації",
6.170103 "Управління інформаційною безпекою"
Затверджено
на засіданні кафедри
«Безпека інформаційних
технологій»
Протокол № 12 від 12.05.2011р.
Львів – 2011
Метод Гаусса для розв’язування систем лінійних алгебраїчних рівнянь: Методичні вказівки до лабораторної роботи №2 з курсу "Комп’ютерні методи дослідження інформаційних процесів та систем " для студентів базових напрямів 6.170101 "Безпека інформаційних і комунікаційних систем", 6.170102 "Системи технічного захисту інформації", 6.170103 "Управління інформаційною безпекою" / Укл.: Л.В. Мороз, А.Я. Горпенюк, Н.М. Лужецька - Львів: Видавництво НУ“ЛП”, 2011.- 14 с.
Укладачі: Л.В. Мороз, к.т.н., доц.
А.Я. Горпенюк, к.т.н., доц.
Н.М. Лужецька, асист.
Відповідальний за випуск: В.М. Максимович, д.т.н., проф.
Рецензент: В.В. Хома, д.т.н., проф.
А.Е. Лагун, к.т.н., доц.,
Мета роботи – ознайомлення з прямими методами розв’язування систем лінійних алгебраїчних рівнянь.
Методи розв’язування систем лінійних алгебраїчних рівнянь
Нехай задано систему лінійних алгебраїчних рівнянь:
,
де А – квадратна невироджена матриця розмірності , X – вектор-стовпець невідомих розмірності n, В – вектор-стовпець вільних членів розмірності n.
Методи розв’язування систем такого виду поділяються на дві групи : прямі та ітераційні.
1) Прямі методи зводяться до скінчених алгоритмів для обчислення коренів рівнянь (тобто розв’язки шукають за певними формулами). Вони дають розв’язки після виконання відомого для даного n (n – порядок системи) числа арифметичних операцій.
Іншими словами, прямими методом розв’язування лінійної системи називають будь-який метод, котрий дозволяє знайти елементи вектора X з допомогою скінченого числа елементарних математичних операцій: додавання, віднімання, ділення, множення, та, можливо, кореня квадратного.
Оцінити ефективність будь-якого методу можна за допомогою таких основних характеристик:
числа операцій, необхідних для реалізації даного методу;
об’єму пам’яті;
чутливості до переносу похибок заокруглення (або обчислювальної стійкості).
Практично всі прямі методи розв’язування систем базуються на зведені матриці А до матриці простішої структури – діагональної (тоді розв’язок очевидний) або трикутної, та методів розв’язування таких систем.
До групи прямих методів розв’язування систем лінійних алгебраїчних рівнянь належать:
– метод Гаусса та його різновиди:
а) класичний метод Гаусса із зведенням матриці А до верхньої трикутної матриці і одержанням розв’язків з допомогою обернених підстановок. Число операцій (вартість методу) – операцій додавання, множення та операцій ділення (можна ними знехтувати в порівнянні з ).
б) метод Гаусса з вибором головного елемента (частковим або повним). Число арифметичних операцій при цьому складає ~ додавань та ~ множень.
Повна вартість методу в основному визначається вартістю зведення матриці А до трикутного вигляду, оскільки вартість розв’язку вже самої трикутної системи незначна в порівнянні з вартістю зведення матриці до трикутного вигляду.
– LU-розклад (lower-upper –нижній-верхній)
Якщо використовувати алгоритм Краута, то число операцій складе .
З точки зору об’єму обчислень метод LU- розкладу еквівалентний методу Гаусса з частковим вибором головного елемента; його переваги – це можливість роботи з різними векторами вільних членів В та з транспонованими матрицями (розв’язок рівняння знаходиться за тим же LU-розкладом).
– метод (схема) Халецького.
При розкладі симетричних матриць можна зменшити число операцій і необхідний об’єм пам’яті. Повна вартість методу Халецького складає половину вартості методу Гаусса + n обчислень квадратного кореня. Метод чисельно стійкий.
– метод Жордана (роблять діагональну матрицю замість трикутної). Метод рідко використовується на практиці.
До прямих методів відносяться також методи для кліткових та розріджених матриць.
2) Ітераційні (або наближені) методи – це методи послідовних наближень. В них необхідно задати деякий наближений розв’язок – так зване початкове наближення. Після цього з допомогою деякого алгоритму проводиться один цикл обчислень, котрий називається ітерацією. В результаті ітерації знаходять нове наближення. Ітерації проводять до тих пір, доки не одержать розв’язок із заданою похибкою. Об’єм обчислень при цьому наперед не відомий.
Основний недолік прямих методів – це нагромадження похибок в процесі розв’язування, оскільки обчислення на будь-якому етапі використовують результати (з похибками) попередніх операцій. Це особливо небезпечно для великих систем ( і більше) – наростає число операцій, а також для погано обумовлених систем () (малі похибки обчислень або вхідних даних можуть породити значні похибки в розв’язку). Тому прямі методи використовують для відносно невеликих () систем з густо заповненою матрицею та .
Перевагою ітераційних методів над прямими є те, що окремі похибки, що виникають при обчисленнях, не впливають на кінцевий результат (ітерації закінчуються тільки тоді, коли одержано розв’язок із наперед заданою точністю), а ведуть лише до збільшення числа необхідних ітерацій.
Крім того, розв’язування систем ітераційними методами спрощується ще й тому, що на кожній ітерації розв’язується система з одними і тими ж матрицями.
До ітераційних належить: метод простої ітерації, метод Зейделя, метод верхньої релаксації, та інші.
Прямі методи розв’язування систем лінійних алгебраїчних рівнянь
Класичний метод Гаусса.
Розглянемо систему рівнянь четвертого порядку:
(1)
Зауважимо, що елементи вектора-стовпчика вільних членів занесені в матрицю коефіцієнтів А.
Будемо вважати, що . З першого рівняння знаходимо х1:
, (2)
де , .
З допомогою рівняння (2) можна виключити з решти рівнянь, для чого достатньо підставити праву частину (2) замість в друге, третє і четверте рівняння системи. Це і є першим кроком – кроком виключення невідомого .
Перехід від початкової системи (1) до новоствореної:
відбувається за такою формулою:
Другий крок – виключення невідомого відбувається аналогічно:
Третій крок – виключення невідомого
,
;
Останнє рівняння модифікованої системи можна переписати у вигляді:
де
або .
Отже, в результаті прямого ходу одержимо систему рівнянь:
Знаходження невідомих проводиться в оберненому ході методу Гаусса шляхом зворотніх підстановок.
Якщо п – кількість рівнянь (порядок) системи, то програмування обчислювального процесу проводиться так:
L – кількість кроків виключення ;
j – позначення другого індексу при визначенні коефіцієнта ;
і – номер рядка системи ;
k – номер стовпця.
Можна записати, що для всіх
Обернений хід: ; , .
Отже, обчислювальна схема прямого ходу методу Гаусса має вигляд:
Для
Для
Для
Для
i піддається спрощенню.
Початкове обчислення всіх коефіцієнтів c не є обов’язковим. Це випливає з наступного. Наприклад, перехід від початкової системи коефіцієнтів до наступної відбувається так:
Наприклад, коефіцієнти першого чи другого стовпця нової системи утворюються за правилом
,
або
Отже, визначивши, наприклад c12 зразу ж можна переходити до визначення коефіцієнтів нової системи і т.п. Таким чином цикли по J i по K можна об’єднати (оскільки J i K змінюються в однакових межах).
Якщо замінити на (адже верхній рядок коефіцієнтів матриці А на наступному кроці виключення не перераховується, а тому може бути перерахований і використаний як коефіцієнти ) та цикли по J та по K об’єднати в один, одержимо загальну форму методу виключення Гаусса із стовпцевою формою розкладу матриці А до трикутного вигляду:
В кінці цих перетворень (зворотній хід методу) одержимо:
Таким чином, стовпцева форма розкладу зображується наступною обчислювальною схемою:
Для до
Для до +1
(3)
Для до
В цій обчислювальній схемі права частина системи (1) також обробляється в ході зведення матриці А до трикутного вигляду. Тобто коефіцієнти приєднані до і-го рядка матриці А (член ) (саме тому в циклі по "k" верхня межа зростає до ). Можна залишити на місці, не вносячи в масив А. В цьому випадку в результаті виконання прямого ходу методу Гаусса одержується система рівнянь:
(4)
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
.
Обернений хід при стовпчиковій формі розкладу описується загальною формулою:
, (5)
Розглянемо тепер рядкову форму розкладу матриці А. Вона базується на зведенні системи лінійних рівнянь до трикутного вигляду. Для цього спочатку нормують перше рівняння системи (1), ділячи його на а11(0), тобто роблять коефіцієнт при х1 рівним 1. Потім це перше рівняння домножують відповідно на коефіцієнт аі,1(0) при х1 всіх інших рівнянь і послідовно віднімають від усієї решти рівнянь. В результаті х1 буде виключене із всіх рівнянь, крім першого. На другому кроці виключають х2 з третього, четвертого, ..., п –го рівнянь. Цю процедуру повторюють до тих пір, доки вся система не буде зведена до такого трикутного вигляду:
(6)
Рядкова форма зображається наступною обчислювальною схемою (у випадку внесення коефіцієнтів b в матрицю A):
Для до
Для до
(7)
Для до +1
Тобто, на відміну від стовпчикової форми, обчислення коефіцієнтів нової матриці відбувається по рядках. Результат же одержується той самий.
При (обертанні) обчисленні оберненої матриці доцільно використовувати розклад матриці А до трикутного вигляду за рядковою формою.
Метод Гаусса з вибором головного елемента.
Запишемо розширену прямокутну матрицю коефіцієнтів системи з рівнянь.
Серед елементів матриці вибираємо найбільший за модулем елемент, який називається головним елементом. Нехай ним буде . Рядок з номером називається головним рядком. Обчислюємо множники для всіх .
Далі перетворюємо матрицю наступним чином: з кожного го неголовного рядка віднімаємо почленно головний рядок, домножений на . Отримаємо матрицю, у якої всі елементи го стовпця за винятком , дорівнюють нулю. Відкидаючи цей стовпець і головний рядок, отримуємо нову матрицю з меншою на одиницю кількістю рядків та стовпців. Над матрицею повторюємо такі ж дії й тримаємо матрицю і т.д. Ці перетворення продовжуємо доки не отримаємо матрицю, що містить один рядок з двох елементів, який вважаємо головним.
Об’єднаємо всі головні рядки починаючи з останнього. Після перестановки вони утворять трикутну матрицю, еквівалентну початковій матриці . Цей етап називають прямим ходом обчислень. Розв’язавши систему з отриманою трикутною матрицею коефіцієнтів, знайдемо послідовно невідомі . Цей етап обчислень називають зворотним ходом. Усі описані обчислення проводять аналогічно до методу Гауса. Сенс вибирання головного елемента полягає в тому, щоб зробити як найменшими числа і завдяки цьому зменшити похибку обчислень.
Метод LU – розвитку
Це одна з модифікацій методу Гауса. Матрицю А зображають у вигляді добутку двох трикутних матриць: , де
(8)
Тоді система коефіцієнтів системи з рівнянь набуде вигляду
(9)
(10)
Прямий хід тут – це розв’язування системи (9), зворотний – розв’язування системи (10). Елементи матриць і обчислюють послідовно: спочатку елементи першого стовпця матриці , потім – першого рядка матриці і перший елемент вектора ; далі – другий стовпець матриці , другий рядок матриці і другий елемент вектора і так далі:
Під час зворотного ходу визначають невідомі :
2. ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Розв’язати систему лінійних алгебраїчних рівнянь методом Гаусса.
2.1. Домашня підготовка до роботи
1. Ознайомитися з основними теоретичними відомостями.
2. Розробити блок-схему алгоритму методу.
3.Написати програму, яка забезпечить розв’язок та виведення на екран результатів роботи. Варіанти завдань беруть за вказівкою викладача.
2.2. Робота в лабораторії
1. Ввести в комп'ютер програму, згідно з отриманим завданням.
2. Здійснити відладку введеної програми, виправивши виявлені компілятором помилки.
3. Виконати програму. Текст відлагодженої програми та отримані результати оформити у звіт з лабораторної роботи.
3. ЗМIСТ ЗВIТУ
1. Мета роботи.
2. Короткі теоретичні відомості.
3. Повний текст завдання.
4. Блок-схему алгоритму програми.
5. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення.
6. Остаточно відлагоджений текст програми згідно з отриманим завданням.
7. Результати виконання програми.
8. Висновок.
Контрольні запитання
1 На які групи поділяються методи розв’язування систем лінійних алгебраїчних рівнянь?
2. Параметри оцінки ефективності методів розв’язування систем лінійних алгебраїчних рівнянь.
3. В чому полягає відмінність між ітераційними та Гауссівськими методами розв’язування систем лінійних алгебраїчних рівнянь. Назвіть основні переваги та недоліки.
4. Який з методів дозволяє контролювати точність результату?
5. Назвати основні етапи розв’язування систем лінійних алгебраїчних рівнянь методом Гауссса.
6. Назвати основні етапи розв’язування систем лінійних алгебраїчних рівнянь методом LU – розкладу.
Література
Корн Г., Корн Т. Справочник по математике для инженеров и научных работников. – М.: Наука, 1974. – 830 с.
Маликов В.Т., Кветный Р.Н. Вычислительные методы и применение ЭВМ: Учеб. пособие. – Киев: Выща шк., Головное изд-во, 1989. – 213 с.
Щуп Т. Решение инженерных задач на ЭВМ. – М.: Мир, 1982. – 235 с.
Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение. – М.: Мир, 1998. –570 с.
Джон Г. Мэтьюз, Куртис Д. Финк Чисельнные методы. Использование Matlab. Издательский дом «Вильямс» Москва – Санкт-Петербург – Киев, 2001.
НАВЧАЛЬНЕ ВИДАННЯ
МЕТОД ГАУССА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ
ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ
Методичні вказівки
до лабораторної роботи № 2
з курсу
"Комп’ютерні методи дослідження інформаційних процесів та систем"
для студентів базових напрямів 6.170101 "Безпека інформаційних і комунікаційних систем", 6.170102 "Системи технічного захисту інформації",
6.170103 "Управління інформаційною безпекою"
Укладачі: Мороз Леонід Васильович
Горпенюк Андрій Ярославович
Лужецька Наталія Миколаївна
Редактор
Комп’ютерне верстання