Файл: Лабораторна робота 5.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.05.2024

Просмотров: 28

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2.3 Розв’язування слар методом оберненої матриці

Для того щоб розв’язати систему лінійних рівнянь методом оберненої матриці, необхідно виконати наступні дії:

1. Сформувати матрицю коефіцієнтів і вектор вільних членів заданої системи;

2. Розв’язати систему, задавши вектор невідомих як добуток матриці, оберненої до матриці системи, і вектора вільних членів.

Для обернення матриці призначена функція inv.

Приклад 4

Розглянемо ту саму СЛАР. Її розв’язок знаходимо множенням оберненої матриці на вектор вільних членів:

>> х=inv(A)*b

Відповідь:

х =

0.8246

0.2619

0.0728

0.9638

0.5653

Перевірка розвязку. Підставимо знайдені корені в рівняння системи (це рівнозначно множенню матриці А на вектор х. Введемо вектор С – результат підстановки.

>> C=A*х

Відповідь

С =

6.54

3.21

3.93

6.25

5.30

Можемо переконатися, що значення вектора С = b початкової СЛАР:

b = [6.54; 3.21;3.93;6.25;5.3]

Якщо матриця близька до виродженої, то видається відповідне діагностичне повідомлення.

2.4 Розв’язування слар методом Гауса

Розв’язування СЛАР за допомогою методу Гауса ґрунтується на тому, що від заданої системи, переходять до еквівалентної системи, яка розв'язується простіше, ніж початкова.

Метод Гауса складається з двох етапів:

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

На другому етапі (зворотний хід) трикутну матрицю перетворюють таким чином, щоб в перших n стовпцях вийшла одинична матриця. Останній, n +1 стовпець цієї матриці містить розв’язок системи лінійних рівнянь.

Розглянемо як розвязати цю задачу в MATLAB:

  1. Сформувати матрицю коефіцієнтів А і вектор вільних членів b заданої системи;

  2. Сформувати розширену матрицю системи, об'єднавши А і b;

  3. Привести розширену матрицю до трикутного вигляду, використовуючи функцію rref;

  4. Знайти розв’язок системи, виділивши останній стовпець матриці, отриманої в попередньому пункті;

  5. Виконати обчислення; якщо в результаті вийшов нульовий вектор, задача вирішена вірно.


Приклад 5

Скористаємося тим самим прикладом системи, що і раніше. Матриця А і вектор b в нас вже сформовані і мають вигляд:

A= [5.38 1.12 0.95 1.32 0.83

1.12 4.08 2.12 0.57 0.91

0.95 2.12 6.33 1.29 1.57

1.32 0.57 1.29 4.37 1.25

0.83 0.91 1.57 1.25 5.41];

b = [6.54; 3.21;3.93;6.25;5.3];

Сформуємо розширену матрицю С і приведемо її до трикутного вигляду. Для приведення матриці до трикутного вигляду призначена функція rref, а позначення [A,b] означає побудову розширеної матриці:

C=rref([A,b]);

Виділимо останній стовпець з матриці. Оскільки розширена матриця має розмір 6х5, то останній стовпець – це вектор 1:5, 6:6

>> х=C(1:5,6:6)

х =

0.82456140350877

0.26186291739895

0.07277628032345

0.96380090497738

0.56530612244898

Зручно записати виконані дії у файл-програму і викликати з Вікна команд за іменем файла.


2.4 Схема lu – розкладання матриць

Як видно з попереднього прикладу, розв’язування СЛАР спрощується, якщо привести матрицю А до трикутного вигляду. Тепер введемо поняття «розкладання» матриці на добуток нижньої трикутної матриці і верхньої трикутної матриці.

Визначимо нижню трикутну матрицю L з одиничною головною діагоналлю таким чином, щоб вище діагоналі були розташовані нульові елементи, а нижче діагоналі – ненульові елементи, значення яких отримані при приведенні матриці.

Визначимо верхню трикутну матрицю U на головній діагоналі якої розміщені ненульові і не одиничні елементи, а нижче діагоналі – нульові елементи.

Має місце наступне визначення:

Визначення 1:

Невироджену матрицю А можна розкласти на трикутні матриці, якщо її можна представити як добуток нижньої трикутної матриці і верхньої трикутної матриці.

Представлення матриці А у вигляді A=LU називається LU – розкладанням. Розв’язування початкової СЛАР, заданою матрицею коефіцієнтів А еквівалентно розв’язанню двох систем з трикутними матрицями:

Для розкладання матриці на трикутні і матрицю перестановок P використовується функція Matlab [L,U,P] = lu(A)

Введемо в робочому вікні Matlab:

>>[L,U,P] = lu(A)

Отримаємо:

L =

1.0000 0 0 0 0

0.2082 1.0000 0 0 0

0.1766 0.4997 1.0000 0 0

0.2454 0.0767 0.1748 1.0000 0

0.1543 0.1916 0.2028 0.2084 1.0000

U =

5.3800 1.1200 0.9500 1.3200 0.8300

0 3.8468 1.9222 0.2952 0.7372

0 0 5.2017 0.9094 1.0551

0 0 0 3.8645 0.8053

0 0 0 0 4.7589

P =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> g=L\b

g =

6.5400

1.8485

1.8515

4.1798

2.6902

>> х=U\g

х =

0.8246

0.2619

0.0728

0.9638

0.5653

Перевіримо знайдений розв’язок підстановкою х в СЛАР.

ans =

6.5400

3.2100

3.9300

6.2500

5.3000

Всі розглянуті методи розв’язування СЛАР в MATLAB відносяться до прямих методів і призначені для вирішення добре визначених СЛАР. В інших випадках слід застосовувати ітераційні методи.


Завдання і порядок виконання самостійної роботи

1. Для конкретного варіанту завдання вибрати систему лінійних рівнянь і побудувати матрицю її коефіцієнтів (А) і вектор вільних членів (B).

2. Ввести значення елементів матриці і вектора в MATLAB.

3. Знайти визначник матриці. Якщо він = 0, то матриця вироджена.

4. Якщо визначник не рівний 0, розв’язати систему з використанням оператора / .

5. За зовнішнім виглядом матриці визначити її властивості (по таблиці 3.2). Якщо жодна з властивостей не виконується, розв’язати систему за допомогою функції linsolve з двома аргументами, інакше – третім аргументом вказати потрібну властивість за допомогою структури options.

6. Розв’язати систему методами зворотної матриці і Гауса.

7. Виконати LU-розкладання матриці і знайти розв’язок СЛАР цим методом.

Результати подати в звіті з точністю eps=0.0001.

Індивідуальні завдання.

      1. Гаврилов В.Г. Чисельні методи в інформатиці. Методичний посібник. К: МНТУ. -2004.