О. О. Метешкін, д-р техн наук, проф. Харківського військового університету; > Н. А. Кизим, д-р екон. наук, проф. Харківського

Вид материалаДокументы

Содержание


Матричні операції
Способи задання масивів
Операції над масивами
Подобный материал:
1   ...   4   5   6   7   8   9   10   11   ...   26

МАТРИЧНІ ОПЕРАЦІЇ




  • Вектори й матриці;
  • нумерація елементів масивів;
  • операції над масивами та їх елементами: скалярний і векторний добуток векторів; зворотна й транспонована матриці; визначник (детермінант) матриці; вибірка елементів і стовпців матриці; об’єднання матриць;
  • операція векторизації;
  • убудовані функції роботи з масивами;
  • матричний спосіб розв’язання систем лінійних рівнянь;
  • функція lsolve( ) розв’язання систем лінійних рівнянь;
  • властиві значення і вектори матриць (модель міжнародної торгівлі).



    1. МАСИВ



Масив – це сукупність деякого числа впорядкованих елементів, що має унікальне ім’я. Це можуть бути числові або символьні елементи. У пакеті MathCAD використовуються масиви двох найбільш поширених типів:
  • одновимірні (вектори);
  • двовимірні (матриці).

Наприклад, змінна А – це матриця розміром 33, а змінна В – вектор-стовпець розміром 31 (тобто 3 рядки й 1 стовпець).



;

.



MathCAD дозволяє працювати з матрицями обсягом до восьмі мільйонів елементів у залежності від можливостей Вашого комп’ютера.

Порядковий номер елемента, що є його адресою, називається індексом. Індекси можуть мати тільки цілочислові значення. Вони можуть починатися з нуля або іншого значення відповідно до значення системної змінної ORIGIN. За умовчання ця змінна має значення 0. Це означає, що перший елемент вектора має індекс 0, що не дуже звично. Для зміни значення цієї змінної скористайтеся меню Математика / Параметри. (При цьому введене значення буде застосоване до всіх масивів).

    1. СПОСОБИ ЗАДАННЯ МАСИВІВ



Вектори й матриці можна задавати різними способами:
  • за допомогою команди Вставка / Матриця, або комбінації клавіш Ctrl + M, або клацнувши на кнопці панелі Матриця, заповнивши масив порожніх полів для не дуже великих масивів;
  • поелементним присвоюванням значення кожному елементу масиву.

Так, для матриці А це буде мати такий вигляд:

і т. д.

Двовимірний масив має два індекси, що відраховуються від 0; перший з них нумерує рядки, другий – стовпці. Індекси розділяються комами. Якщо якимось елементам масиву явно не присвоєне значення, то за умовчання їм присвоюється 0;
  • з використанням ранжируваного аргументу й формульного виразу, коли є деяка явна залежність для обчислення елементів масиву через їх індекси. Наприклад:


i := 0. .3; j := 0..2; ci := i2; qi,j := i+j.


Крім того, у цьому випадку матрицю можна задати також і за допомогою функції matrix(m,n,F), що формує матрицю, значеннями якої є F(i,j), де i=0. .m–1; j=0..n–1.

Для видалення/додавання рядків або стовпців матриці викличте вікно визначення матриці (див. вище перший спосіб) і скористайтеся кнопками Додати або Видалити.

    1. ОПЕРАЦІЇ НАД МАСИВАМИ



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

Для цих операцій застосовуються загальноприйняті позначки. Тобто оператор * означає множення, якщо він застосований до двох чисел. Якщо його операндами виступають два вектори, він означає скалярний добуток. Коли він застосований до двох матриць – множення матриць; до матриці й числа – множення матриці на скаляр тощо.

Зворотну матрицю отримуємо просто, зазначивши степінь –1, а операцію транспонування вибираємо з палітри векторів і матриць або комбінацією клавіш Ctrl + 1.

Зверніть увагу, що оператори, які очікують у якості операнда вектор, завжди очікують вектор-стовпець, а не вектор-рядок!


.


Можна зробити вибірку елементів: В0 = 1, А1,2 = –1.

Можна вибрати один стовпець двовимірного масиву. Для цього треба ввести його порядковий номер як верхній індекс командою Ctrl+6 (або кнопкою палітри векторів і матриць). Для вибору першого стовпця матриці А:

.

Це не піднесення до степеня! (тобто не те ж саме, що Shift+6).

Якщо його транспонувати: .

Тоді , , .

Як Ви вважаєте, яким чином можна вибрати рядок із масиву?

  1. Можна обчислити визначник матриці. Для цього можна використовувати палітру векторів і матриць або комбінацію клавіш Ctrl + |

|A| = 39.
  1. Також MathCAD дозволяє обчислити скалярний (знак звичайного множення або Shift + 8) та векторний (Ctrl + 8) добутки.

Скалярні добутки



Векторний добуток
  1. Можна обчислити суму елементів вектора, наприклад:

Дві матриці можна об’єднати в одну. Для цього використовуються дві спеціальні матричні функції. Функція augment( ) формує нову матрицю, розташовуючи початкові матриці поруч. Функція stack( ) розташовує початкові матриці одна над іншою.

Для додавання в матрицю А в якості 4-го стовпця вектора В варто написати augment(A,B).

Можна вийняти фрагмент матриці для обчислень або присвоєння його якомусь іншому масиву. Для цього існує функція submatrix( ). У неї 5 аргументів: перший – із якого масиву виймається фрагмент, інші – з якого до якого рядка і з якого до якого стовпця.

Наприклад, щоб вийняти з матриці А елементи першого рядка й першого стовпця: submatrix(A,1,2,1,2). (Не забувайте, що за умовчання нумерація рядків і стовпців починається з 0)!

Існують також інші функції, які працюють з масивами. Усі вони зосереджені в категорії функцій «Вектори й матриці» (Vectors and Matrix) у меню Вставка / Функція. Зокрема:
  • функції max( ) і min( ) знаходять максимальний і мінімальний елементи масиву;
  • rows( ) і cols( ) повертають число рядків і стовпців;
  • identity( ) і diag( ) формують одиничну й діагональну матриці зазначеного розміру;
  • rank( ) і tr( ) обчислюють ранг і слід матриці;
  • last( ) повертає номер останнього елемента вектора;
  • length( ) – число елементів у векторі;
  • функція lookup( ) аналогічна функції Excel ПРОСМОТР, vlookup() – ВПР, hlookup( ) – ГПР, match( ) – ПОИСКПОЗ. Однак є й відмінності – у них немає аргументу «Інтервальний перегляд» (або «Тип» – Істина або Неправда; 0, 1 або –1), отже, не треба сортувати масиви. Якщо шуканих елементів у переглядуваній матриці декілька, то всі вони включаються в результат (тобто ці функції можуть обертати масиви!);
  • sort( ) сортує вектор за зростанням, csort( ) і rsort( ) сортують матрицю за зростанням зазначеного стовпця або рядка, reverse( ) обертає вектор (або матрицю), у якого всі елементи (або рядки) у зворотному порядку та інші функції.