Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота №6.pdf
Скачиваний:
18
Добавлен:
30.05.2020
Размер:
162.93 Кб
Скачать

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

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

Мета роботи. Вивчення способів представлення масивів 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

1

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

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

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

.+

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

.-

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

.^

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

.*

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

./

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

.\

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

Приклад 1

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

>>v1=[2 -3 3 1]; >>v2=[7 5 -6 9]; >>u=v1.*v2

Отримаємо u= 14 -15 -18 9

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

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

Приклад 2

>>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 з вхідним аргументом – матрицею.

Приклад 3:

Знайдемо для матриці обернену матрицю B. A=[2 3 8

-4 5 –1 7 –6 9]

>>B=inv(A)

2

Відповідь:

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.

Приклад 4

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

>>A=[2 3 8 -4 5 –1 7 –6 9]

>>d=det(A)

Відповідь: d =77

Приклад 5

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

С =[ 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

3

2 Розв’язування систем лінійних алгебраїчних рівнянь (СЛАР) 2.1 Розв’язування невеликих невироджених СЛАР

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

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

Приклад 6

Введемо матрицю системи А і вектор вільних членів 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), то цей спосіб не підходить.

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

Приклад 7

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

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

Приклад 8.

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

С =[ 2 6 4 5 4 12 8 10 7 6 5 1

4