Визначення матриць та векторів
Описання матриць та векторів здійснюється через визначення змінних. У цьому разі використовують три прості правила.
1. Усі елементи матриці або вектора необхідно брати у квадратні дужки.
2. Між числами, які відповідають елементам вектора або рядка матриці, можна ставити пробіл або кому.
3. Між рядками матриці ставлять крапку з комою.
Приклади визначення матриць та векторів:
>> v=[1, 2, 3, 4]
v=
1 2 3 4
>> MAT =[1,2;3,4]
M=
1 2
3 4
>>
Нескладно також звернутися до елементів вектора або матриці для виведення на екран або використання у виразах. Для цього достатньо вказати в круглих дужках порядковий номер елемента вектора або номер рядка та стовпця матриці через кому. Ці правила запису цілком відповідають відповідним правилам у математиці. Продовжуючи попередній приклад, розглянемо таку послідовність командних рядків:
>> v(1)=
>> M(1,1)=
>>
Найважливіше, що є у системі MatLab і чого немає в інших системах програмування та математичних САПР — це можливість виконання арифметичних дій із матрицями та векторами та їх використання як параметрів математичних функцій. У цьому разі обчислення проводяться з кожним елементом матриці бо вектора. З основ програмування відомо, що в кожній з мов програмування запис типу sin(v) або exp(M) , де М — матриця, v — вектор, був би некоректним. Щоб виконати будь-яку математичну дію з елементами вектора або матриці, потрібно організувати цикл. Обчислення функції від всіх елементів вектора або матриці є можливим у системі MathCAD, але там це робиться через спеціальну функцію векторизації. З точки зору точного математичного опису в цьому є певна рація, оскільки у математиці такі операції заборонені. Але під час розробки реальних програм найчастіше необхідно обробляти масиви великих чисел саме таким чином, наприклад, поелементно додавати, множити поелементно або на константу, обчислювати функції від елементів масиву. А такі дії, як множення матриць або векторний добуток двох векторів, потрібні програмісту значно рідше, тому їх можна реалізувати через внутрішні функції системи. Розробники MatLab виходили, ймовірно, саме із цих міркувань, адже система створювалася для професіоналів?програмістів. Тому у MatLab використані записи типу exp(M) або sin(v) як поелементні дії з матрицями та векторами. Адже програмісту зручно працювати саме так, хоча такий запис неправильний з математичної точки зору. До того ж, такий підхід відповідає всій ідеології системи, тому що вона розроблена для роботи з матрицями, і вони розглядаються як звичайні числа. А спеціальні матричні та векторні операції тут також введені, але через окремі функції.
Тому множення, ділення, піднесення у степінь умові MatLab реалізовані як за правилами лінійної алгебри, так і для поелементних операцій, але запис цих функцій різний. Якщо визначені дії слід виконувати поелементно, використовуються оператори .* для поелементного множення, ./ для по елементного ділення та .^ для поелементного піднесення у ступінь, у цьому разі розмірність масивів для поелементних операцій має бути однаковою. При використанні операторів */ та ^математичні дії виконуються за правилами лінійної алгебри. У випадку множення вектора або матриці на числову константу по елементні операції повністю збігаються з операціями лінійної алгебри.
Дії додавання та віднімання для матриць або векторів та числових констант мають єдине значення. Під час додавання або віднімання двох матриць або векторів ці операції також виконуються поелементно, у цьому разі для уникнення помилок програмування розмірності векторів або матриць повинні бути однаковими. Наведемо приклад використання по елементних операцій та операцій лінійної алгебри мовою MatLab.
Приклад
>> format short
>> v=[1,2,3,4];
>> sin(v)
ans=
0,8415 0,9093 0.1411 ?0,7568
>> 3*v
ans=
3 6 9 12
>> v^2
???Error using= =>^Matrix must be square.
>> v.^2
ans=
1 4 9 16
>> v+2
ans=
3 4 5 6
MAT=[1,2;3,4]
MAT =
1 2
3 4
>> sin (MAT)
ans =
0.8415 0.9093
0.1411 ?0.7568
>> MAT^2
ans =
7 10
15 22
>> MAT.^2
ans =
1 4
9 16
>> 3*MAT
ans =
3 6
9 12
>> 2+MAT
ans =
3 4
5 6
>>
У наведеному прикладі повідомлення ???Error using =>^ Matrix must be square (Помилкове використання оператора ^. Повинна бути квадратна матриця) означає, що використання операції множення векторів за правилами лінійної алгебри неможливе, можна множити одну на одну тільки квадратні матриці. Як бачимо, для квадратної матриці система дійсно не видає помилку і виконує операцію множення матриці саму на себе за правилами лінійної алгебри, але результат суттєво відрізняється від поелементного множення. Усі результати поелементних операцій для вектора v та матриці MAT однакові оскільки містять ті самі елементи.
Дата добавления: 2016-05-11; просмотров: 1146;