Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практична робота2.doc
Скачиваний:
9
Добавлен:
25.04.2019
Размер:
1 Мб
Скачать
☆

Приклад 1

У пакеті MATHCAD можна виконувати багато матричних операцій, які дозволяють ду­же просто обчислювати визначник матриці, обернену матрицю і розв'язувати систему рівнянь за наведеними вище формулами (3), (4). Продемонструємо можливості паке­та на простих прикладах. Введемо розширену матрицю системи рівнянь Ах = b:

Елементи розширеної матриці вводяться послідовно у вигляді списку. Для наочності во­на зображена традиційно. Перші три стовпчики в ній — це матриця системи А, остан­ній стовпчик — вектор правих частин рівнянь b. Виділимо з розширеної матриці мат­рицю системи А:

Знайдемо визначник матриці А:

Det(A) = 142.999

В ін відмінний від нуля. За правилом Крамера знайдемо значення невідомих. Для цього замінимо в матриці системи А стовпець, що відповідає номеру невідомої, на стовпець правих частин системи рівнянь. Отримаємо таку матрицю для першої невідомої:

Тепер за правилом Крамера можемо знайти значення першої невідомої:

x1= Det(A1) / Det(A) = 9.51471

Аналогічно знаходимо значення решти невідомих:

x2 = -0.0899587

хз = -1.50637

Використаємо для розв'язання системи формулу (3). Спочатку знайдемо обернену мат­рицю А-1, яку позначимо АІ, а потім значення невідомих:

ІП[]: = АІ = ІПУЄГ5Є[А];

х = АІ * b

Якщо це необхідно, можна вивести на екран і обернену матрицю AI:

Легко перевірити, що, помноживши цю обернену матрицю на її саму, отримаємо оди­ничну матрицю.

Похибки обчислення елементів оберненої матриці малі, і можна вважати, що зображена матриця є одиничною. Аналогічні команди і матричні операції присутні й в інших матема­тичних пакетах. Розглянемо більш детально алгоритми, реалізовані такими матричними операціями.

Метод виключення Гаусса

Розв'язання системи лінійних алгебраїчних рівнянь методом Гаусса полягає в послідовному виключенні невідомих х1,х2,..., хп із цієї системи. Припустимо, що визначник матриці А відмінний від нуля, що свідчить про те, що систе­ма (1) має єдиний розв'язок. Якщо а11 ≠ 0, то, поділивши перше рівняння (1) на а11, отримаємо:

(5)

Розглянемо решту рівнянь системи (1)

(6)

і у кожному з них виключимо невідому х1, виконавши таку послідовність дій. Помножимо (5) на аi1 і віднімемо отримане рівняння від i-го рівняння систе­ми (6), і = 2, 3....,n.

У результаті отримаємо таку систему рівнянь:

(7)

Тут позначено

(8)

У системі (7) невідома х1 є тільки в першому рівнянні, тому надалі достатньо мати справу зі скороченою системою рівнянь:

(9)

У такий спосіб здійснено перший крок методу Гаусса. Якщо а22 (1)≠ 0, то з систе­ми (9) аналогічно можна виключити х2 і перейти до системи, яка еквівалент­на (1). При цьому перше рівняння системи (7) залишиться без змін.

Виключаючи послідовно в такий спосіб невідомі х3, х4.....хn, прийдемо оста­точно до системи рівнянь, яка має такий вигляд:

(10)

У матриці цієї системи, що еквівалентна системі (1), всі елементи, які розта­шовані нижче головної діагоналі, дорівнюють нулю. Такі матриці називаються верхніми трикутними, на відміну від нижніх трикутних матриць, у яких дорів­нюють нулю всі елементи, розташовані вище головної діагоналі.

Перехід від системи (1) до системи (10) являє собою прямий хід методу Гаусса. Зворотний хід полягає в знаходженні невідомих х1,x2,...,хn з систе­ми (10). Це зробити дуже просто, оскільки матриця системи трикутна і за її допомогою можна послідовно, починаючи з хn, знайти всі невідомі. Загальні формули зворотного ходу мають такий вигляд:

(11)

Тепер виведемо розрахункові формули прямого ходу. Припустимо, що ви­конані перші k-1 кроків, тобто вже виключені змінні x1, x2, …, хk-1. Тоді для виключення матимемо аналогічну (9) скорочену систему:

(12)

Нехай аkk(k-1)≠ 0. Поділивши обидві частини k-го рівняння на аkk(k-1), отримаємо

(13)

д е

Помножимо рівняння (13) на аik(k-1)і віднімемо отримане співвідношення з і-го рівняння скороченої системи (12), де і = k + 1, k + 2,..., п. У результаті група рівнянь (12) набуде такого вигляду:

Отже, під час прямого ходу методу Гаусса коефіцієнти системи рівнянь обчислюються за наведеними нижче формулами:

(14)

(15)

О бчислення правих частин системи (10) здійснюється за такими формулами:

(16)

Основним обмеженням методу є припущення про те, що всі елементи аkk(k-1), на які проводиться ділення на кожному кроці методу, відмінні від нуля. Еле­мент аkk(k-1) називається ведучим елементом на k-му кроці виключення. Слід мати на увазі, що навіть якщо якийсь ведучий елемент не дорівнює нулю, а просто близький до нього, в процесі обчислень може відбуватися значне накопичення похибок. Уникнути цього дозволяє метод Гаусса з вибором головного елемента. Ідея методу полягає в тому, щоб на черговому кроці виключати ту невідому, коефіцієнт за якої найбільший за модулем. Отже, ведучим елементом тут виби­рається головний, тобто найбільший за модулем елемент матриці. Тим самим, якщо det А ≠ 0, то в процесі обчислень не відбуватиметься ділення на нуль.

Для зменшення помилок округлювання чинять так. Серед елементів першого рядка аkj(k-1) кожної проміжної матриці (12) вибирають найбільший за модулем елемент mах | аkj(k-1)|, j = k, k + 1,..., п і роблять цей елемент ведучим. Вказаний спо­сіб виключення називається методом Гаусса з вибором головного елемента по ряд­ку. Він еквівалентний застосуванню звичайного методу Гаусса до системи, в якій на кожному кроці виключення проводиться відповідна перенумерація змінних.

Застосовується також метод із вибором головного елемента по стовпцю (рис. 1, а). Він еквівалентний застосуванню звичайного методу Гаусса до системи, в якій на кожному кроці виключення проводиться відповідна перенуме­рація рівнянь.

(17)

Проте головний елемент можна вибирати і серед всіх елементів неперетво-реної частини матриці (рис. 1, б):

(18)

а б

Рис. 2.1. Вибір головного елемента: а - серед елементів стовпця матриці;

б - серед елементів неперетвореної частини матриці

Визначимо складність алгоритму, що реалізує метод Гаусса на однопроцесор-ній ЕОМ. Розглянемо задачу розв'язання системи лінійних рівнянь з р прави­ми частинами:

На кожному k-му кроці прямого ходу Гаусса необхідно виконати (п - k) ділень, (п - k)(п - k + р + 1) множень та додавань. Використовуючи формулу для ряду 12 + 22 + 32 +... + т2 = т(т + 1) (2т + 1)/6, отримаємо

П ід час зворотного ходу необхідно виконати п ділень

та множень і додавань, тому, коли p = 1, маємо

(19)

Отже, для реалізації методу Гаусса потрібно близько n3/3 операцій множення. Це поліномний алгоритм, але навіть він для великої розмірності задачі ускладнює обчислювальний процес, про що свідчать дані табл. 2.1. У ній наве­дено тривалість прямого і зворотного ходів залежно від розмірності розв'язу­ваної системи рівнянь для комп'ютера з середньою швидкістю виконання опе­рації ділення/множення 15 мкс.

Алгоритм Гаусса є послідовним алгоритмом, орієнтованим на виконання на однопроцесорній ЕОМ.