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

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

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

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

Добавлен: 27.05.2024

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

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

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

Лабораторна робота №5

Тема: Робота з масивами. Знаходження коренів СЛАР.

Мета роботи. Вивчення способів представлення масивів в MATLAB. Основні операції над векторами. Знаходження коренів систем лінійних алгебраїчних рівнянь (СЛАР) прямими методами.

1 Робота з масивами

1.1 Способи представлення масивів в matlab

У MATLAB всі дані представляються у вигляді масивів. Масиви бувають одновимірними, коли використовується один індекс (номер), а можуть бути і багатовимірними (зокрема — двовимірними).

Таким чином, вектор представляється як одновимірний масив, а матриця – як двовимірний. Вектор може представлятися як вектор-стовпець або вектор-рядок, якщо це важливо для обчислень.

Значення елементів вектора-рядка записуються в квадратних дужках через пробіл або кому.

Наприклад:

V1=[1 2 3 4 5]

Значення елементів вектора-стовпця записуються в квадратних дужках через крапку з комою (‘;’).

Наприклад:

V2=[1;2;3;4;5]

Матриця (двовимірний масив) також записується в квадратних дужках, але як роздільник між рядків може використовуватися ‘;’ або Enter (новий рядок).

Наприклад: Наступні вирази еквівалентні.

M1=[1 2 3; 4 5 6; 7 8 9]

M2 = [1 2 3

4 5 6

7 8 9]

1.2 Звернення до елементів масиву в середовищі Matlab

Для доступу до окремого елемента одновимірного масиву потрібно після його імені вказати в круглих дужках індекс (номер) цього елемента. Наприклад, третій елемент масиву a1 позначається як a1(3), перший елемент — як a1(1), другий елемент — як a1(2). Нумерація елементів масиву починається з 1 (на відміну від багатьох мов програмування, в яких нумерація виконується з нуля).

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

Приклад

a3(1,1) = 1

a3(1,2) = 2

Поелементні операції над векторами

Якщо вектор використовується як аргумент математичних функцій, результатом яких є вектор значень функції, то це означає, що значення функції обчислюються поелементно. В MATLAB для виконання поелементних операцій над векторами призначені операції, наведені в таблиці 3.1. При цьому вектори повинні бути однакової розмірності.


Таблиця 3.1 - Основні поелементні операції над векторами

.+

Поелементне складання

.-

Поелементне віднімання

.^

Поелементне піднесення до ступеню

.*

Поелементне множення

./

Поелементне ділення (першого вектора на другий)

.\

Зворотне поелементне ділення (другого вектора на перший)

Приклад

Введемо два вектори-рядки

>>v1=[2 -3 3 1];

>>v2=[7 5 -6 9];

>>u=v1.*v2

Отримаємо

u= 14 -15 -18 9

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

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

Приклад

>>v=[1 1 1 1 1]

>>2*v

Відповідь

2 2 2 2 2


1.4 Обернення невироджених матриць

Матриця А розміру N*N називається невиродженою, якщо існує така матриця B розміру N*N, що

A*B=B*A=E

де E – одинична матриця.

Якщо така матриця B не існує, то говорять, що матриця А – вироджена.

В Matlab для знаходження оберненої матриці призначена функція inv з вхідним аргументом – матрицею.

Приклад:

Знайдемо для матриці обернену матрицю B.

A=[2 3 8

-4 5 –1

7 –6 9]

>>B=inv(A)

Відповідь:

B =

0.5065 -0.9740 -0.5584

0.3766 -0.4935 -0.3896

-0.1429 0.4286 0.2857

Перевіримо правильність відповіді, перемноживши матриці А і B.

>> A*B

ans =

1.0000 0 0

0.0000 1.0000 -0.0000

-0.0000 0.0000 1.0000

1.5. Знаходження визначника матриці

Визначник квадратної матриці - це скалярна величина (дійсне число). За значенням визначника можна судити про те, чи є матриця виродженою чи ні. Так, якщо визначник рівний 0, то матриця вироджена.

Для знаходження визначника в Matlab використовується функція det.

Приклад 1

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

>>A=[2 3 8

-4 5 –1

7 –6 9]

>>d=det(A)

Відповідь:

d =77

Приклад 2

Розглянемо інший приклад. Нехай є матриця С вигляду:

С =[ 2 6 4

4 12 8

7 6 5]

Знайдемо її визначник і обернену матрицю

>> det(C)

ans = 0

>> inv(C)

Попередження: Матриця вироджена до робочої точності.

(Type "warning off MATLAB:singularMatrix" to suppress this warning.)

ans =

Inf Inf Inf

Inf Inf Inf

Inf Inf Inf

2 Розв’язування систем лінійних алгебраїчних рівнянь (слар)

2.1 Розв’язування невеликих невироджених слар

Для розв’язування невеликих невироджених СЛАР можна використовувати оператор косої риски \ .

При цьому потрібно ввести два масиви: матрицю коефіцієнтів системи і вектор правої частини (вільних членів).

Приклад

Введемо матрицю системи А і вектор вільних членів b.

>>А= [1.2 0.3 -0.2

0.5 2.1 1.3

-0.9 0.7 5.6];

>>b=[1.3; 3,9; 5.4];

>>х=A\b

х=

1.0000

1.0000

1.0000

Алгоритм розв’язку СЛАР визначається MATLAB виходячи із структури матриці коефіцієнтів системи. Якщо матриця є виродженою (її визначник = 0), то цей спосіб не підходить.

Застосування різних методів розв’язування розглянемо на прикладі.

Приклад 1


Знайти розв’язок СЛАР, матриця коефіцієнтів А і вектор вільних членів 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];

Перевіримо матрицю А на виродженість знаходженням її визначника.

>>det(A)

ans = 1.9798e+003

Тепер знайдемо вектор рішень СЛАР

>> х=A\b

Відповідь:

х = [0.8246, 0.2619, 0.0728, 0.9638, 0.5653]

Отже, розв’язок СЛАР існує і він єдиний.

Приклад 2.

Спробуємо знайти розв’язок для виродженої СЛАР.

С =[ 2 6 4 5

4 12 8 10

  1. 6 5 1

  1. 0 5 3]

b=[1, 0, 3, 5]

>> х=C\b

Відповідь

??? Помилка використовування ==> \

Розміри матриць повинні узгоджуватися.

Матриця С вироджена, СЛАР не може бути вирішена вказаним методом (рядки 1 і 2 лінійно залежні). Можна переконатися, що визначник С=0.

2.2 Розв’язування слар за допомогою функції linsolve

Більші можливості надає функція linsolve, яка допускає вибір методу вирішення відповідно до властивостей матриці. Але вона також може використовуватися тільки для невироджених матриць.

В найпростішому випадку виклик linsolve має вигляд:

>> х=linsolve(A,b)

де А – матриця коефіцієнтів, b – вектор вільних членів.

Приклад 3.

Знайдемо розв’язок розглянутої вище СЛАР за допомогою функції linsolve.

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];

Застосовуючи її до нашої СЛАР отримаємо розв’язок.

>> х=linsolve(A,b)

х =

[ 16324993377865/19798326349273]

[ 5184473968831/19798326349273]

[ 1440872575743/19798326349273]

[ 19081584437538/19798326349273]

[ 11192118917753/19798326349273]

Якщо привести значення коренів системи до виду десяткових дробів, отримаємо той самий розв’язок, що і за допомогою операції \.

Для вибору методу розв’язування СЛАР потрібно сформувати управляючу структуру options, яка містить поля із значеннями true або false залежно від властивостей матриці і вказати її третім вхідним аргументом функції linsolve.

>>options.SYM=true;

>>у=linsolve(A,b,options)

Параметри, які визначають властивості матриці, наведено в таблиці 3.2.

Таблиця 3.2 - Прапорці, які визначають властивості матриці СЛАР


Прапорець

Властивість матриці

LT

Нижня трикутна

UT

Верхня трикутна

UHESS

Верхня майже трикутна

SYM

Симетрична

POSDEF

Позитивно визначена

RECT

Прямокутна