Як помножити матрицю на стовпець вектор. Розмноження матриць

Визначення 1

Добуток матриць (С = АВ) - операція тільки для узгоджених матриць А і В, у яких число стовпців матриці А дорівнює числу рядків матриці:

C ∟ m × n = A ⏟ m × p × B ⏟ p × n

Приклад 1

Дані матриці:

  • A = a (i j) розмірів m × n;
  • B = b (i j) розмірів p × n

Матрицю C , елементи c i j якої обчислюються за такою формулою:

c i j = a i 1 x b 1 j + a i 2 x b 2 j +. . . + a i p × b p j, i = 1,. . . m, j = 1,. . . m

Приклад 2

Обчислимо твори АВ = ВА:

А = 1 2 1 0 1 2 , В = 1 0 0 1 1 1

Рішення, використовуючи правило множення матриць:

А ⏟ 2 × 3 × В ⏟ 3 × 2 = 1 2 1 0 1 2 × 1 0 0 1 1 1 = 1 × 1 + 2 × 0 + 1 × 1 1 × 0 + 2 × 1 + 1 × 1 0 × 1 + 1 × 0 + 2 × 1 0 × 0 + 1 × 1 + 2 × 1 = = 2 3 2 3 ⏟ 2 × 2

В ⏟ 3 × 2 × А ⏟ 2 × 3 = 1 0 0 1 1 1 × 1 2 1 0 1 2 = 1 × 1 + 0 × 0 1 × 2 + 0 × 1 1 × 1 + 0 × 2 0 × 1 + 1 × 0 0 × 2 + 1 × 1 0 × 1 + 1 × 2 1 × 1 + 1 × 0 1 × 2 + 1 × 1 1 × 1 + 1 × 2 = 1 2 1 0 1 2 1 3 3 ⏟ 3 × 3

Твір АВ і ВА знайдені, але є матрицями різних розмірів: АВ не дорівнює ВА.

Властивості множення матриць

Властивості множення матриць:

  • (А В) С = А (В С) – асоціативність множення матриць;
  • А (В + С) = А В + АС - дистрибутивність множення;
  • (А + В) С = АС + В С - дистрибутивність множення;
  • λ (АВ) = (λ А) В
Приклад 1

Перевіряємо властивість №1: (АВ) С = А (ВС) :

(А × В) × А = 1 2 3 4 × 5 6 7 8 × 1 0 0 2 = 19 22 43 50 × 1 0 0 2 = 19 44 43 100 ,

А (В × С) = 1 2 3 4 × 5 6 7 8 1 0 0 2 = 1 2 3 4 × 5 12 7 16 = 19 44 43 100 .

Приклад 2

Перевіряємо властивість №2: А (В+С) = АВ+АС:

А × (В + С) = 1 2 3 4 × 5 6 7 8 + 1 0 0 2 = 1 2 3 4 × 6 6 7 10 = 20 26 46 58 ,

АВ + АС = 1 2 3 4 × 5 6 7 8 + 1 2 3 4 × 1 0 0 2 = 19 22 43 50 + 1 4 3 8 = 20 26 46 58 .

Твір трьох матриць

Добуток трьох матриць А В обчислюють двома способами:

  • знайти АВ і помножити на С: (АВ) С;
  • або знайти спочатку ВС, а потім помножити А (ВС) .
Приклад 3

Перемножити матриці двома способами:

4 3 7 5 × - 28 93 38 - 126 × 7 3 2 1

Алгоритм дій:

  • знайти добуток 2-х матриць;
  • потім знову знайти добуток 2-х матриць.

1). А В = 4 3 7 5 × - 28 93 38 - 126 = 4 (-28) + 3 × 38 4 × 93 + 3 (- 126) 7 (- 28) + 5 × 38 7 × 93 + 5 (- 126 ) = 2 - 6 - 6 21

2). А В С = (А В) С = 2 - 6 - 6 21 7 3 2 1 = 2 × 7 - 6 × 2 2 × 3 - 6 × 1 - 6 × 7 + 21 × 2 - 6 × 3 + 21 × 1 = 2 0 0 3 .

Використовуємо формулу АВС = (АВ) С:

1). В С = - 28 93 38 - 126 7 3 2 1 = - 28 × 7 + 93 × 2 - 28 × 3 + 93 × 1 38 × 7 - 126 × 2 38 × 3 - 126 × 1 = - 10 9 14 - 12

2). А В С = (А В) С = 7 3 2 1 - 10 9 14 - 12 = 4 (-10) + 3 × 14 4 × 9 + 3 (- 12) 7 (- 10) + 5 × 14 7 × 9 + 5 (-12) = 2 0 0 3

Відповідь: 4 3 7 5 - 28 93 38 - 126 7 3 2 1 = 2 0 0 3

Розмноження матриці на число

Визначення 2

Добуток матриці А на число k - це матриця В = А k того ж розміру, яка отримана з вихідною множенням на задане число всіх її елементів:

b i , j = k × a i , j

Властивості множення матриці на число:

  • 1 × А = А
  • 0 × А = нульова матриця
  • k (A + B) = k A + k B
  • (k + n) A = k A + n A
  • (k × n) × A = k (n × A)
Приклад 4

Знайдемо добуток матриці А = 4 2 9 0 на 5.

5 А = 5 4 2 9 0 5 × 4 5 × 2 5 × 9 5 × 0 = 20 10 45 0

Розмноження матриці на вектор

Визначення 3

Щоб знайти добуток матриці та вектора, необхідно множити за правилом «рядок на стовпець»:

  • якщо помножити матрицю на вектор-стовпець число стовпців у матриці має збігатися з числом рядків у векторі-стовпці;
  • результатом множення вектора-стовпця є лише вектор-стовпець:

А В = а 11 а 12 ⋯ а 1 n а 21 а 22 ⋯ а 2 n ⋯ ⋯ ⋯ ⋯ а m 1 а m 2 ⋯ а m n b 1 b 2 ⋯ b 1 n = a 11 × b 1 + a 2 + ⋯ + a 1 n × b n a 21 × b 1 + a 22 × b 2 + ⋯ + a 2 n × b n ⋯ ⋯ ⋯ ⋯ a m 1 × b 1 + a m 2 × b 2 + ⋯ + a m n × b 1 c 2 ⋯ c 1 m

  • якщо помножити матрицю на вектор-рядок, то матриця повинна бути виключно вектором-стовпцем, причому кількість стовпців повинна збігатися з кількістю стовпців у векторі-рядку:

А В = а ⋯ a b b ⋯ b = a 1 × b 1 a 1 × b 2 ⋯ a 1 × b n a 2 × b 1 a 2 × b 2 ⋯ a 2 × b n ⋯ ⋯ ⋯ ⋯ a n × b 1 a n × b 2 ⋯ a n × b n = c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋯ ⋯ ⋯ ⋯ c n 1 c n 2 ⋯ c n n

Приклад 5

Знайдемо добуток матриці А і вектора-стовпця В:

А В = 2 4 0 - 2 1 3 - 1 0 1 1 2 - 1 = 2 × 1 + 4 × 2 + 0 × (-1) - 2 × 1 + 1 × 2 + 3 × (- 1) - 1 × 1 + 0 × 2 + 1 × (-1) = 2 + 8 + 0 - 2 + 2 - 3 - 1 + 0 - 1 = 10 - 3 - 2

Приклад 6

Знайдемо добуток матриці А та вектора-рядок В:

А = 3 2 0 - 1, В = - 1 1 0 2

А В = 3 2 0 1 × - 1 1 0 2 = 3 × (-1) 3 × 1 3 × 0 3 × 2 2 × (- 1) 2 × 1 2 × 0 2 × 2 0 × (- 1) 0 × 1 0 × 0 0 × 2 1 × (- 1) 1 × 1 1 × 0 1 × 2 = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Відповідь: А В = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Якщо ви помітили помилку в тексті, будь ласка, виділіть її та натисніть Ctrl+Enter


Кожен вектор можна розглядати як одностовпцеву або однорядкову матрицю. Одностовпцеву матрицю будемо називати вектор-стовпцем, а однорядкову матрицю - вектор-рядком.

Якщо A-матриця розміру m*n, вектор стовпець b має розмір n, а вектор рядок b має розмір m.

Таким чином, щоб помножити матрицю на вектор, треба розглядати вектор як вектор-стовпець. При множенні вектора на матрицю, його слід розглядати як вектор рядок.

Помножити матрицю

на комплексний вектор

Отримуємо результат

Як бачите за постійної розмірності вектора, у нас можуть існувати два рішення.

Хотілося б звернути Вашу увагу на те, що матриця в першому і другому варіанті, незважаючи на однакові значення, абсолютно різні (мають різну розмірність)

У першому випадку вектор вважається стовпець і тоді необхідно множити матрицю на вектор, а у другому випадку у нас вектор-рядок і тоді у нас твір вектор на матриці.

Цей бот примножує в тому числі вектори і матриці, які мають комплексні значення. Створений на основі повнішого калькулятора Розмноження матриць з комплексними значеннями онлайн

Властивості множення матриці на вектор

Матриця

Вектор стовпець

Вектор рядок

Довільне число

1. Твір матриці на суму векторів-стовпців дорівнює сумі творів матриці на кожен із векторів

2. Добуток суми векторів-рядків на матрицю дорівнює сумі творів векторів на матрицю

3. Загальний множник вектора можна винести за межі твору матриці на вектор/вектор на матрицю

4.Виробництво вектора-рядка на добуток матриці та вектора стовпця, рівноцінно добутку добутку вектора-рядка на матрицю та вектора-стовпчика.

Лекція 6. Паралельні чисельні алгоритми на вирішення типових завдань обчислювальної математики: множення матриць.

Розмноження матриці на вектор. Досягнення максимально можливої ​​швидкодії. Використання паралелізму середнього рівня. Організація паралельних обчислень за p = n. Використання обмеженого набору процесорів. Матричне множення. Макроопераційний аналіз алгоритмів розв'язання задач. Організація паралелізму з урахуванням поділу даних.

Розмноження матриці на вектор

Завдання множення матриці на вектор визначається співвідношенням

Тим самим отримання результуючого вектора передбачає повторення однотипних операцій з множення рядків матриці і вектора . Одержання кожної такої операції включає поелементне множення елементів рядка матриці та вектора та подальше підсумовування отриманих творів. Загальна кількість необхідних скалярних операцій оцінюється за величиною

Як випливає з дій, що виконуються при множенні матриці і вектора, паралельні способи вирішення задачі можуть бути отримані на основі паралельних алгоритмів підсумовування (див. параграф 4.1). У цьому розділі аналіз способів розпаралелювання буде доповнено розглядом питань організації паралельних обчислень в залежності від кількості доступних для використання процесорів. Крім того, на прикладі завдання множення матриці на вектор буде звернено увагу на необхідність вибору найбільш підходящої топології обчислювальної системи (існуючих комунікаційних каналів між процесорами) зниження витрат для організації міжпроцесорної взаємодії.

Досягнення максимально можливої ​​швидкодії ()

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



Розмноження кожного рядка на вектор включає незалежні операції поелементного множення і також можуть бути виконані паралельно;

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

Таким чином, максимально необхідна кількість процесорів визначається величиною

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

,

кожна з яких представляє набір процесорів виконання операції множення окремого рядка матриці на вектор. На початку обчислень на кожен процесор групи пересилаються елемент рядка матриці та відповідний елемент вектора. Далі кожен процесор виконує операцію множення. Наступні обчислення виконуються за каскадною схемою підсумовування. Для ілюстрації на рис. 6.1 наведено обчислювальну схему для процесорів групи при розмірності матриці .

Мал. 6.1. Обчислювальна схема операції множення рядка матриці на вектор

Час виконання паралельного алгоритму під час використання процесорів визначається часом виконання паралельної операції множення та часом виконання каскадної схеми

Як результат, показники ефективності алгоритму визначаються такими співвідношеннями:

Для завдання множення матриці на вектор найбільш підходящими топологіями є структури, в яких забезпечується швидка передача даних (шляху одиничної довжини) в каскадній схемі підсумовування (див. рис. 4.5). Такими топологіями є структура з повною системою зв'язків ( повний граф) та гіперкуб. Інші топології призводять до зростання комунікаційного часу через подовження маршрутів передачі. Так, при лінійному впорядковуванні процесорів із системою зв'язків тільки з найближчими сусідами зліва та справа ( лінійкаабо кільце) для каскадної схеми довжина шляху передачі кожної одержуваної часткової суми на ітерації є рівною . Якщо прийняти, що передача даних за маршрутом довжини в топологіях з лінійною структурою вимагає виконання операцій передачі, загальна кількість паралельних операцій (сумарної тривалості шляхів) передачі визначається величиною

(без урахування передачі даних для початкового завантаження процесорів).

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

Комунікаційні дії, що виконуються при вирішенні поставленого завдання, полягають у передачі між парами процесорів МВС. Детальний аналіз тривалості реалізації таких операцій проведено у п. 3.3.

4. Рекомендації щодо реалізації паралельного алгоритму. При реалізації паралельного алгоритму доцільно виділити початковий етап із завантаження використовуваних процесорів вихідними даними. Найбільш просто така ініціалізація забезпечується при топології обчислювальної системи з топологією у вигляді повного графа(Завантаження забезпечується за допомогою однієї паралельної операції пересилання даних). При організації множини процесорів у вигляді гіперкубаможе виявитися корисною дворівневе управління процесом початкового завантаження, при якій центральний процесор забезпечує розсилку рядків матриці і вектора до керуючих процесорів процесорних груп , які, в свою чергу, розсилають елементи рядків матриці і вектора по виконавчих процесорів. Для топологій у вигляді лінійкиабо кільцяпотрібно послідовних операцій передачі даних з послідовно спадаючим обсягом даних, що пересилаються від до елементів.

Використання паралелізму середнього рівня ()

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

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

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

Безліч процесорів розбивається на процесорні групи, що не перетинаються.

,

при цьому група складається з процесорів і використовується для виконання ітерації каскадного алгоритму (група застосовується для реалізації поелементного множення); загальна кількість процесорів;

Ініціалізація обчислень полягає в поелементному завантаженні процесорів групи значеннями 1 рядка матриці та вектора; після початкового завантаження виконується паралельна операція поелементного множення та подальшої реалізації звичайної каскадної схеми підсумовування;

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

Внаслідок застосування описаного алгоритму безліч процесорів реалізує конвеєр для виконання операції множення рядка матриці на вектор. На подібному конвеєрі одночасно можуть бути кілька окремих рядків матриці на різних стадіях обробки. Так, наприклад, після поелементного множення елементів першого рядка та вектора процесори групи виконуватимуть першу ітерацію каскадного алгоритму для першого рядка матриці, а процесори групи виконуватимуть поелементне множення значень другого рядка матриці і т.д. Для ілюстрації на рис. 6.2 наведено ситуацію процесу обчислень після 2 ітерацій конвеєра при .

Мал. 6.2. Стан конвеєра для операції множення рядка матриці на вектор після виконання 2 ітерацій

2. Оцінка показників ефективності алгоритму. Примноження першого рядка на вектор відповідно до каскадної схеми буде завершено, як і зазвичай, після виконання () паралельних операцій. Для інших рядків – відповідно до конвеєрної схеми організації обчислень - поява результатів множення кожного чергового рядка відбуватиметься після завершення кожної наступної ітерації конвеєра. Як результат, загальний час виконання операції множення матриці на вектор може бути виражений величиною

Ця оцінка є дещо більшою, ніж час виконання паралельного алгоритму, описаного в попередньому пункті (), проте знову пропонований спосіб вимагає меншої кількості даних, що передаються (вектор пересилається тільки одноразово). Крім того, використання конвеєрної схеми призводить до більш ранньої появи частини результатів обчислень (що може бути корисним у ряді ситуацій обробки даних).

Як результат, показники ефективності алгоритму визначаються співвідношеннями такого виду:

3. Вибір топології обчислювальної системи. Доцільна топологія обчислювальної системи повністю визначається обчислювальною схемою – це повне бінарне деревозаввишки. Кількість передач даних за такої топології мережі визначається загальною кількістю ітерацій, виконуваних конвеєром, тобто.

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

Аналіз трудомісткості виконуваних комунікаційних процесів для обчислювальних систем з іншими топологіями міжпроцесорних зв'язків передбачається здійснити як самостійне завдання (див. також п. 3.4).

Організація паралельних обчислень при

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

Подібна схема обчислень може бути визначена в такий спосіб. Уявимо безліч процесорів у вигляді лінійної послідовності (див. рис. 4.7):

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

Вимагається черговий елемент стовпця матриці;

Виконується множення елементів та ;

Запрошується результат обчислень попереднього процесора;

Виконується складання значень;

Отриманий результат надсилається наступному процесору.

Мал. 6.3. Стан лінійного конвеєра для операції множення рядка матриці на вектор після виконання двох ітерацій

При ініціалізації описаної схеми необхідно виконати низку додаткових дій:

При виконанні першої ітерації кожен процесор додатково запитує елемент вектора;

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

Крім того, для однорідності описаної схеми для першого процесора, у якого немає попереднього процесора, доцільно ввести порожню операцію додавання ( ).

Для ілюстрації на рис. 6.3 показано стан процесу обчислень після другої ітерації конвеєра при .

2. Оцінка показників ефективності алгоритму. Примноження першого рядка на вектор відповідно до описаної конвеєрної схеми буде завершено після виконання () паралельних операцій. Результат множення наступних рядків відбуватиметься після завершення кожної чергової ітерації конвеєра (нагадаємо, ітерація кожного процесора включає виконання операцій множення та додавання). Як результат, загальний час виконання операції множення матриці на вектор може бути вираженим співвідношенням:

Ця оцінка також є більшою, ніж мінімально можливий час виконання паралельного алгоритму при . Корисність використання конвеєрної обчислювальної схеми полягає, як зазначалося в попередньому пункті, у зменшенні кількості даних, що передаються, і в більш ранній появі частини результатів обчислень.

Показники ефективності цієї обчислювальної схеми визначаються співвідношеннями:

, ,

3. Вибір топології обчислювальної системи. Необхідна топологія обчислювальної системи до виконання описаного алгоритму однозначно визначається пропонованої обчислювальної схемою – це лінійно впорядковане безліч процесорів ( лінійка).

Використання обмеженого набору процесорів ()

1. Вибір паралельного способу обчислень. При зменшенні кількості процесорів до величини паралельна обчислювальна схема множення матриці вектор може бути отримана в результаті адаптації алгоритму множення множення. У цьому випадку каскадна схема підсумовування результатів поелементного множення вироджується і операція множення рядка матриці вектор повністю виконується на єдиному процесорі. Обчислювальна схема, що отримується при такому підході, може бути конкретизована наступним чином:

На кожен із наявних процесорів пересилається вектор і рядків матриці;

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

Слід зазначити, що розмір матриці може виявитися кратним кількості процесорів і тоді рядки матриці не можуть бути розділені порівну між процесорами. У цих ситуаціях можна відступити від вимоги рівномірності завантаження процесорів і для отримання більш простої обчислювальної схеми прийняти правило, що розміщення даних на процесорах здійснюється лише рядковим чином (тобто елементи одного рядка матриці не можуть бути розділені між кількома процесорами). Неоднакова кількість рядків призводить до різного обчислювального навантаження процесорів; тим самим, завершення обчислень (загальна тривалість розв'язання задачі) визначатиметься часом роботи найбільш завантаженого процесора (при цьому частину від цього загального часу окремі процесори можуть простоювати через вичерпання своєї частки обчислень). Нерівномірність завантаження процесорів знижує ефективність використання МВС і, як результат розгляду цього прикладу можна зробити висновок, що проблема балансування

3. Вибір топології обчислювальної системи. Відповідно до характеру виконуваних міжпроцесорних взаємодій у запропонованій обчислювальній схемі як можлива топологія МВС може служити організація процесорів у вигляді зірки(Див. рис. 1.1). Керуючий процесор подібної топології може використовуватися для завантаження обчислювальних процесорів вихідними даними та прийому результатів виконаних обчислень.

Матричне множення

Завдання множення матриці на матрицю визначається співвідношеннями

.

(Для простоти викладу матеріалу будемо припускати, що матриці, що перемножуються, і є квадратними і мають порядок ).

Аналіз можливих способів паралельного виконання цієї задачі може бути проведений за аналогією з розглядом задачі множення матриці на вектор. Залишивши подібний аналіз самостійного вивчення, покажемо з прикладу завдання матричного множення використання кількох загальних підходів, дозволяють формувати паралельні способи розв'язання складних завдань.

У системі MatLab досить просто виконуються математичні операції над матрицями та векторами. Розглянемо спочатку прості операції складання та множення матриць та векторів. Нехай дані два вектори

a =; % вектор-рядок
b =; % вектор-стовпець

тоді множення цих двох векторів можна записати так

c = a * b; % c=1+2+3+4+5=16
d = b * a; % d – матриця 5х5 елементів

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

Складання та віднімання двох векторів записується так

a1 =;
a2 =;
c = a1+a2; % c =;
з = a2-a1; % c =;

Слід звернути увагу, що операції складання та віднімання можна виконувати між двома векторами-стовпцями або двома векторами-рядками. Інакше MatLab видасть повідомлення помилку, т.к. різнотипні вектори складати не можна. Така справа з усіма неприпустимими арифметичними операціями: у разі неможливості їх обчислення система MatLab повідомить про помилку і виконання програми буде завершено на відповідному рядку.

Аналогічним чином виконуються операції множення та додавання між матрицями:

A =;
B = ones (3);
C = A+B; % додавання двох матриць однакового розміру
D = A+5; % додавання матриці та числа
E = A * B; % множення матриці А на В
F = B * A; % множення матриці на А
G = 5 * A; % множення матриці на число

Операції обчислення зворотної матриці, а також транспонування матриць та векторів записуються наступним чином:

a =; % вектор-рядок
b = a'; % вектор-стовпець, утворений
% транспонування вектора-рядка а.
A =; % матриця 3х3 елемента
B = a * A; % B = - Вектор-рядок
C = A * b; % C = – вектор-стовпець
D = a*A*a'; % D = 45 - число, сума ел-ів матриці А
E = A'; % E – транспонована матриця А
F = inv (A); % F – обернена матриця А
G = A^-1; % G – зворотна матриця А

З наведеного прикладу видно, що операція транспонування матриць і векторів позначається символом (апостроф), який ставиться після імені вектора або матриці. Обчислення зворотної матриці можна робити шляхом виклику функції inv() або зводячи матрицю ступінь -1. Результат в обох випадках буде однаковим, а два способи обчислення зроблено для зручності використання під час реалізації різних алгоритмів.

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

.* - поелементне множення;
./ і. \ - поелементні поділки;
.^ - поелементне зведення у ступінь.

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

a =; % вектор-рядок
b =; % вектор-рядок
c = a. * b; % c =
A = ones (3); % матриця 3х3, що складається з одиниць
B =; % матриця 3х3
C = A. * B; % матриця 3х3, що складається з
D = A./B; % матриця 3х3, що складається з
E = A.B; % матриця 3х3, що складається з
F = A.^2; % зведення елементів матриці А квадрат

Наприкінці даного параграфа розглянемо кілька функцій корисних під час роботи з векторами і матрицями.

Для пошуку максимального значення елемента вектора використовується стандартна функція max(), яка повертає знайдене максимальне значення елемента та його позицію (індекс):

a =;
= max(a); % v = 6, i = 2;

v = max(a); % v = 6;

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

У випадку з матрицями дана функція визначає максимальні значення, що стоять у стовпцях, як показано нижче в прикладі:

A =;
= max(A); % V =, I =
V = max(A); % V =

Повний синтаксис функції max() можна дізнатися, набравши у командному вікні MatLab команду

help<название функции>

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

Іншою корисною функцією роботи з матрицями та векторами є функція sum(), яка обчислює суму значень елементів вектора або стовпців матриці:

a =;
s = sum(a); %s = 3+5+4+2+1=15
A =;
S1 = sum(A); % S1=
S2 = sum(sum(A)); % S2=39

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

Для сортування значень елементів вектора або матриці за зростанням або зменшенням використовується функція sort() таким чином:

a =;

b1 = sort(a); % b1=
b2 = sort(a, 'descend'); % b2=
b3 = sort(a, 'ascend'); % b3=

для матриць

A =;
B1 = sort(A); % B1=
B2 = sort(A, 'descend'); % B2=

Багато практичних завданнях часто потрібно знайти певний елемент у векторі чи матриці. Це можна виконати за допомогою стандартної функції find(), яка як аргумент приймає умову, відповідно до якої і знаходяться необхідні елементи, наприклад:

a =;
b1 = find(a == 2); % b1 = 4 – індекс елемента 2
b2 = find (a ~ = 2); % b2 = – індекси без 2
b3 = find (a> 3); % b3 =

У наведеному прикладі символ == означає перевірку на рівність, а символ ~= виконує перевірку на нерівність значень елементів вектора а. Докладніше про цих операторів буде описано у розділі умовні оператори.

Ще однією корисною функцією роботи з векторами та матрицями є функція mean() для обчислення середнього арифметичного значення, яка працює наступним чином:

a =;
m = mean(a); % m = 3
A =;
M1 = mean(A); % M1 =
M2 = mean(mean(A)); % M2 = 4.333

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

Однак ви рано радієте. Халява закінчилася - переходимо до множення. Відразу попереджу: помножити дві матриці - це зовсім не перемножити числа, що стоять у клітинах з однаковими координатами, як би ви могли подумати. Тут все набагато веселіше. І почати доведеться з попередніх визначень.

Узгоджені матриці

Одна з найважливіших показників матриці - це її розмір. Ми вже сто разів говорили про це: запис $A = \ left [m \ times n \ right] $ означає, що в матриці рівно $ m $ рядків і $ n $ стовпців. Як не плутати рядки зі стовпцями, ми також вже обговорювали. Зараз важливе інше.

Визначення. Матриці виду $A=\left[ m\times n \right]$ і $B=\left[ n\times k \right]$, у яких кількість стовпців у першій матриці збігається з кількістю рядків у другій, називаються узгодженими.

Ще раз: кількість стовпців у першій матриці дорівнює кількості рядків у другій! Звідси отримуємо одразу два висновки:

  1. Нам важливий порядок матриць. Наприклад, матриці $A=\left[ 3\times 2 \right]$ і $B=\left[ 2\times 5 \right]$ є узгодженими (2 стовпці в першій матриці і 2 рядки в другій), а ось навпаки - матриці $ B = \ left [2 \ times 5 \ right] $ і $ A = \ left [3 \ times 2 \ right] $ - вже не узгоджені (5 стовпців в першій матриці - це як би не 3 рядки в другій ).
  2. Узгодженість легко перевірити, якщо виписати всі розміри один за одним. На прикладі попереднього пункту: «3 2 2 5» — посередині однакові числа, тому матриці узгоджені. А ось «2 5 3 2» — не узгоджені, оскільки всередині різні числа.

Крім того, капітан очевидність натякає, що квадратні матриці однакового розміру $ \ left [n \ times n \ right] $ узгоджені завжди.

У математиці, коли важливим є порядок перерахування об'єктів (наприклад, у розглянутому вище визначенні важливий порядок матриць), часто говорять про впорядковані пари. Ми зустрічалися з ними ще в школі: думаю, і їжу зрозуміло, що координати $ \ left (1; 0 \ right) $ і $ \ left (0; 1 \ right) $ задають різні точки на площині.

Так ось: координати - це теж упорядковані пари, які складаються з чисел. Але ніщо не заважає скласти таку пару із матриць. Тоді можна буде сказати: «Упорядкована пара матриць $\left(A;B \right)$ є узгодженою, якщо кількість стовпців у першій матриці збігається з кількістю рядків у другій».

Ну, і що з того?

Визначення множення

Розглянемо дві узгоджені матриці: $ A = \ left [m \ times n \ right] $ і $ B = \ left [n \ times k \ right] $. І визначимо їм операцію множення.

Визначення. Твір двох узгоджених матриць $A=\left[m\times n\right]$ і $B=\left[n\times k \right]$ - це нова матриця $C=\left[m\times k \right] $, елементи якої вважаються за формулою:

\[\begin(align) & ((c)_(i;j))=((a)_(i;1))\cdot ((b)_(1;j))+((a)_ (i;2))\cdot ((b)_(2;j))+\ldots +((a)_(i;n))\cdot ((b)_(n;j))= \\ & =\sum\limits_(t=1)^(n)(((a)_(i;t))\cdot ((b)_(t;j))) \end(align)\]

Позначається такий твір стандартно: $ C = A \ cdot B $.

У тих, хто вперше бачить це визначення, одразу виникає два питання:

  1. Що це за люта дичина?
  2. А чому так складно?

Що ж, про все по порядку. Почнемо з першого питання. Що означають усі ці індекси? І як не помилитися під час роботи з реальними матрицями?

Насамперед зауважимо, що довгий рядок для розрахунку $((c)_(i;j))$ (спеціально поставив крапку з комою між індексами, щоб не заплутатися, але взагалі їх ставити не треба — я сам задовбався набирати формулу у визначенні) насправді зводиться до простого правила:

  1. Беремо $i$-й рядок у першій матриці;
  2. Беремо $j$-й стовпець у другій матриці;
  3. Отримуємо дві послідовності чисел. Перемножуємо елементи цих послідовностей з однаковими номерами, потім складаємо отримані твори.

Цей процес легко зрозуміти по картинці:


Схема перемноження двох матриць

Ще раз: фіксуємо рядок $i$ у першій матриці, стовпець $j$ у другій матриці, перемножуємо елементи з однаковими номерами, а потім отримані твори складаємо – отримуємо $((c)_(ij))$. І так для всіх $1\le i\le m$ і $1\le j\le k$. Тобто. всього $m\times k$ таких «збочень».

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

\[\begin(align) & \vec(a)=\left(((x)_(a));((y)_(a));((z)_(a)) \right); \\ & \overrightarrow(b)=\left(((x)_(b));((y)_(b));((z)_(b)) \right). \\ \end(align)\]

Тоді їх скалярним твором буде саме сума попарних творів:

\[\overrightarrow(a)\times \overrightarrow(b)=((x)_(a))\cdot ((x)_(b))+((y)_(a))\cdot ((y )_(b))+((z)_(a))\cdot ((z)_(b))\]

По суті, в ті далекі роки, коли дерева були зеленішими, а небо яскравішими, ми просто множили вектор-рядок $\overrightarrow(a)$ на вектор-стовпець $\overrightarrow(b)$.

Сьогодні нічого не змінилося. Просто тепер цих векторів-рядків та стовпців побільшало.

Але вистачить теорії! Погляньмо на реальні приклади. І почнемо з найпростішого випадку – квадратних матриць.

Розмноження квадратних матриць

Завдання 1. Виконайте множення:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]\]

Рішення. Отже, у нас дві матриці: $ A = \ left [2 \ times 2 \ right] $ і $ B = \ left [2 \ times 2 \ right] $. Зрозуміло, що вони узгоджені (квадратні матриці однакового розміру завжди узгоджені). Тому виконуємо множення:

\[\begin(align) & \left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \ begin(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]=\left[ \begin(array)(*(35)(r)) 1\cdot \left(-2 \right)+2\cdot 3 & 1\cdot 4+2\cdot 1 \-3\cdot \left(-2 \right)+4\cdot 3 & -3\cdot 4+4\cdot 1 \\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 4 & 6 \\ 18 & -8 \\\ end(array) \right]. \end(align)\]

От і все!

Відповідь: $\left[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(array) \right]$.

Завдання 2. Виконайте множення:

\[\left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r))9 & 6 \\ -3 & -2 \\end(array) \right]\]

Рішення. Знову узгоджені матриці, тому виконуємо дії: [[]

\[\begin(align) & \left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\end(matrix) \right]\cdot \left[ \begin(array)(*(35)( r)) 9 & 6 \\ -3 & -2 \\end(array) \right]=\left[ \begin(array)(*(35)(r)) 1\cdot 9+3\cdot \ left(-3 \right) & 1\cdot 6+3\cdot \left(-2 \right) \\ 2\cdot 9+6\cdot \left(-3 \right) & 2\cdot 6+6\ cdot \left(-2 \right) \\\end(array) \right]= \\ & =\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right] . \end(align)\]

Як бачимо, вийшла матриця, заповнена нулями

Відповідь: $\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right]$.

З наведених прикладів очевидно, що множення матриць — не така вже й складна операція. Принаймні квадратних матриць розміру 2 на 2.

У процесі обчислень ми склали проміжну матрицю, де прямо розписали, які числа входять у той чи інший осередок. Саме так і слід робити під час вирішення справжніх завдань.

Основні властивості матричного твору

В двох словах. Розмноження матриць:

  1. Некоммутативно: $A\cdot B\ne B\cdot A$ у загальному випадку. Бувають, звичайно, особливі матриці, для яких рівність $A cdot B = B cdot A $ (наприклад, якщо $ B = E $ - одиничної матриці), але в більшості випадків це не працює;
  2. Асоціативно: $ \ left (A \ cdot B \ right) \ cdot C = A \ cdot \ left (B \ cdot C \ right) $. Тут без варіантів: матриці, що стоять поруч, можна перемножувати, не переживаючи за те, що стоїть лівіше і правіше цих двох матриць.
  3. Дистрибутивно: $A\cdot \left(B+C \right)=A\cdot B+A\cdot C$ і $\left(A+B \right)\cdot C=Acdot C+Bcdot C $ (через некомутативність твору доводиться окремо прописувати дистрибутивність праворуч і ліворуч.

А тепер все те ж саме, але більш докладно.

Множення матриць багато в чому нагадує класичне множення чисел. Але є відмінності, найважливіша з яких полягає в тому, що множення матриць, взагалі кажучи, некомутативно.

Розглянемо ще раз матриці із завдання 1. Прямий їхній твір ми вже знаємо:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\end(array) \right]=\left[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(array) \right]\]

Але якщо змінити матриці місцями, то отримаємо зовсім інший результат:

\[\left[ \begin(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) 1 & 2 \\ -3 & 4 \\end(array) \right]=\left[ \begin(matrix) -14 & 4 \\ 0 & 10 \\end(matrix ) \right]\]

Виходить, що $A\cdot B\ne B\cdot A$. Крім того, операція множення визначена тільки для узгоджених матриць $A=\left[ m\times n \right]$ і $B=\left[ n\times k \right]$, але ніхто не гарантував, що вони залишаться узгодженими, якщо їх поміняти місцями. Наприклад, матриці $\left[ 2\times 3 \right]$ і $\left[ 3\times 5 \right]$ цілком узгоджені у вказаному порядку, але ті ж матриці $\left[ 3\times 5 \right] $ і $\left[ 2\times 3 \right]$, записані у зворотному порядку, не узгоджені. Печаль.:(

Серед квадратних матриць заданого розміру $n$ завжди знайдуться такі, які дають однаковий результат як за перемноженні у прямому, і у зворотному порядку. Як описати всі подібні матриці (і скільки їх взагалі) – тема для окремого уроку. Сьогодні не будемо про це.

Тим не менш, множення матриць асоціативно:

\[\left(A\cdot B \right)\cdot C=A\cdot \left(B\cdot C \right)\]

Отже, коли вам треба перемножити відразу кілька матриць поспіль, зовсім необов'язково робити це напролом: цілком можливо, що деякі матриці, що поряд стоять, при перемноженні дають цікавий результат. Наприклад, нульову матрицю, як у Задачі 2, розглянутої вище.

У реальних завданнях найчастіше доводиться перемножувати квадратні матриці розміру $ \ left [n \ times n \right] $. Безліч всіх таких матриць позначається $((M)^(n))$ (тобто записи $A=\left[ n\times n \right]$ і \ означають те саме), і в ньому обов'язково знайдеться матриця $E$, яку називають одиничною.

Визначення. Одинична матриця розміру $ n $ - це така матриця $ E $, що для будь-якої квадратної матриці $ A = \ left [n \ times n \ right] $ виконується рівність:

Така матриця завжди виглядає однаково: на головній діагоналі її стоять одиниці, а в решті всіх клітин — нулі.

\[\begin(align) & A\cdot \left(B+C \right)=A\cdot B+A\cdot C; \\ & \left(A+B \right)\cdot C=A\cdot C+B\cdot C. \\ \end(align)\]

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

Зауважте: для опису дистрибутивності нам довелося прописати дві формули: де сума коштує у другому множнику та де сума коштує у першому. Це відбувається саме через те, що множення матриць некоммутативно (і взагалі, в некомутативній алгебрі купа всяких приколів, які при роботі зі звичайними числами навіть не спадають на думку). І якщо, припустимо, вам на іспиті потрібно буде розписати цю властивість, то обов'язково пишіть обидві формули, інакше препод може трохи роздратуватися.

Гаразд, все це були казки про квадратні матриці. А що щодо прямокутних?

Випадок прямокутних матриць

А нічого — те саме, що й з квадратними.

Завдання 3. Виконайте множення:

\[\left[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\end(matrix) \ \\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \right]\]

Рішення. Маємо дві матриці: $ A = \ left [3 \ times 2 \ right] $ і $ B = \ left [2 \ times 2 \ right] $. Випишемо числа, що позначають розміри, до ряду:

Як бачимо, центральні два числа збігаються. Значить, матриці узгоджені і їх можна перемножити. Причому на виході ми отримаємо матрицю $C=\left[3\times 2\right]$:

\[\begin(align) & \left[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\ \end(matrix) \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\end(array) \right]=\left[ \begin(array)(*(35)(r)) 5\cdot \left(-2 \right)+4\cdot 3 & 5\cdot 5+4\cdot 4 \\ 2 \cdot \left(-2 \right)+5\cdot 3 & 2\cdot 5+5\cdot 4 \\ 3\cdot \left(-2 \right)+1\cdot 3 & 3\cdot 5+1 \cdot 4 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 2 & 41 \\ 11 & 30 \\ -3 & 19 \ \\end(array) \right]. \end(align)\]

Все чітко: у підсумковій матриці 3 рядки та 2 стовпці. Цілком собі $ = \ left [3 \ times 2 \ right] $.

Відповідь: $\left[ \begin(array)(*(35)(r)) \begin(array)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(array) & \begin(matrix) 41 \\ 30 \\ 19 \\end(matrix) \\end(array) \right]$.

Зараз розглянемо одне з найкращих тренувальних завдань для тих, хто тільки-но починає працювати з матрицями. У ньому потрібно не просто перемножити якісь дві таблички, а спочатку визначити: чи допустиме таке множення?

Завдання 4. Знайдіть усі можливі попарні твори матриць:

\]; $B=\left[ \begin(matrix) \begin(matrix) 0 \\ 2 \\ 0 \\ 4 \\\end(matrix) & \begin(matrix) 1 \\ 0 \\ 3 \\ 0 \ \\end(matrix) \\\end(matrix) \right]$; $C=\left[ \begin(matrix)0 & 1 \\ 1 & 0 \\\end(matrix) \right]$.

Рішення. Для початку запишемо розміри матриць:

\;\ B=\left[ 4\times 2 \right];\ C=\left[ 2\times 2 \right]\]

Отримуємо, що матрицю $A$ можна узгодити лише з матрицею $B$, оскільки кількість стовпців $A$ дорівнює 4, а така кількість рядків тільки $B$. Отже, можемо знайти твір:

\\cdot \left[ \begin(array)(*(35)(r)) 0 & 1 \\ 2 & 0 \\ 0 & 3 \\ 4 & 0 \\end(array) \right]=\ left[ \begin(array)(*(35)(r))-10 & 7 \\ 10 & 7 \\\end(array) \right]\]

Проміжні кроки пропоную виконати читачеві самостійно. Зауважу лише, що розмір результуючої матриці краще визначати заздалегідь, ще до якихось обчислень:

\\cdot \left[ 4\times 2 \right]=\left[ 2\times 2 \right]\]

Іншими словами, ми просто прибираємо "транзитні" коефіцієнти, які забезпечували узгодженість матриць.

Які можливі варіанти? Безумовно, можна знайти $B\cdot A$, оскільки $B=\left[ 4\times 2 \right]$, $A=\left[ 2\times 4 \right]$, тому впорядкована пара $\left(B ;A \right)$ є узгодженою, а розмірність твору буде:

\\cdot \left[ 2\times 4 \right]=\left[ 4\times 4 \right]\]

Коротше кажучи, на виході буде матриця $\left[4\times4\right]$, коефіцієнти якої легко вважаються:

\\cdot \left[ \begin(array)(*(35)(r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\end(array) \right]=\ left[ \begin(array)(*(35)(r))1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\end(array) \right]\]

Очевидно, можна узгодити ще $ Ccdot A $ і $ B cdot C $ - і все. Тому просто запишемо отримані твори:

Це було легко.:)

Відповідь: $AB=\left[ \begin(array)(*(35)(r)) -10 & 7 \\ 10 & 7 \\\end(array) \right]$; $BA=\left[ \begin(array)(*(35)(r)) 1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\end(array) \right]$; $CA=\left[ \begin(array)(*(35)(r)) 1 & 1 & 2 & 2 \\ 1 & -1 & 2 & -2 \\\end(array) \right]$; $BC=\left[ \begin(array)(*(35)(r))1 & 0 \\ 0 & 2 \\ 3 & 0 \\ 0 & 4 \\\end(array) \right]$.

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

Але на цьому історія не закінчується. Переходимо до окремих випадків множення.:)

Векторні рядки та векторні стовпці

Однією з найпоширеніших матричних операцій є множення на матрицю, в якій один рядок або один стовпець.

Визначення. Вектор-стовпець - це матриця розміру $ \ left [m \ times 1 \ right] $, тобто. що складається з кількох рядків і лише одного стовпця.

Вектор-рядок - це матриця розміру $ \ left [1 \ times n \ right] $, тобто. що складається з одного рядка та кількох стовпців.

Насправді ми вже зустрічалися із цими об'єктами. Наприклад, звичайний тривимірний вектор із стереометрії $\overrightarrow(a)=\left(x;y;z \right)$ - це не що інше як вектор-рядок. З погляду теорії різниці між рядками та стовпцями майже немає. Уважними треба бути хіба що при узгодженні з навколишніми матрицями-множниками.

Завдання 5. Виконайте множення:

\[\left[ \begin(array)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\end(array) \right] \cdot \left[ \begin(array)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(array) \right]\]

Рішення. Перед нами твір узгоджених матриць: $ \ left [3 \ times 3 \ right] \ cdot \ left [3 \ times 1 \ right] = \ left [3 \ times 1 \ right] $. Знайдемо цей твір:

\[\left[ \begin(array)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\end(array) \right] \cdot \left[ \begin(array)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(array) \right]=\left[ \begin(array)(*(35 )(r)) 2\cdot 1+\left(-1 \right)\cdot 2+3\cdot \left(-1 \right) \\ 4\cdot 1+2\cdot 2+0\cdot 2 \ \-1\cdot 1+1\cdot 2+1\cdot \left(-1 \right) \\end(array) \right]=\left[ \begin(array)(*(35)(r) ) -3 \\ 8 \\ 0 \\end(array) \right]\]

Відповідь: $\left[ \begin(array)(*(35)(r))-3 \\ 8 \\ 0 \\\end(array) \right]$.

Завдання 6. Виконайте множення:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 & -3 \\\end(array) \right]\cdot \left[ \begin(array)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(array) \right]\]

Рішення. Знову все узгоджено: $\left[1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Вважаємо твір:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 & -3 \\\end(array) \right]\cdot \left[ \begin(array)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(array) \right]=\left[ \begin(array)(*(35)( r))5 & -19 & 5 \\\end(array) \right]\]

Відповідь: $\left[ \begin(matrix) 5 & -19 & 5 \\\end(matrix) \right]$.

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

Думаю, тут було очевидно. Переходимо до завершальної частини сьогоднішнього уроку.

Зведення матриці до ступеня

Серед усіх операцій множення окремої уваги заслуговує зведення у ступінь — це коли ми кілька разів множимо один і той самий об'єкт на самого себе. Матриці - не виняток, їх теж можна зводити в різні ступені.

Такі твори завжди узгоджені:

\\cdot \left[ n\times n \right]=\left[ n\times n \right]\]

І позначаються так само, як і звичайні ступені:

\[\begin(align) & A\cdot A=((A)^(2)); \& A\cdot A\cdot A=((A)^(3)); \\ & \underbrace(A\cdot A\cdot \ldots \cdot A)_(n)=((A)^(n)). \\ \end(align)\]

На перший погляд все просто. Подивимося, як це виглядає на практиці:

Завдання 7. Зведіть матрицю у вказаний ступінь:

$((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))$

Рішення. Ну, ОК, давайте зводити. Спочатку зведемо у квадрат:

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(2))=\left[ \begin(matrix ) 1 & 1 \\ 0 & 1 \\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\end(matrix) \right]= \\ & = \ left [ \ begin (array) (* (35) (r)) 1 \ cdot 1 + 1 \ cdot 0 & 1 \ cdot 1 + 1 \ cdot 1 \ 0 \ cdot 1 +1 \ cdot 0 & 0\cdot 1+1\cdot 1 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \ \\end(array) \right] \end(align)\]

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))=((\left[ \begin (matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end( matrix) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \\\end(array) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 3 \\ 0 & 1 \\\end(array) \right] \end(align)\]

От і все.:)

Відповідь: $\left[ \begin(matrix)1 & 3 \\ 0 & 1 \\\end(matrix) \right]$.

Завдання 8. Зведіть матрицю у вказаний ступінь:

\[((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(10))\]

Рішення. Ось тільки не треба зараз плакати з приводу того, що «ступінь занадто великий», «світ не справедливий» і «виклади берега зовсім втратили». Насправді все легко:

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(10))=((\left[ \begin (matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\ end(matrix) \right])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))\ cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left(\left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right] \right)\cdot \left(\left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\end(matrix) \right ] \right)= \\ & =\left[ \begin(matrix) 1 & 6 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 4 \\ 0 & 1 \\end(matrix) \right]= \\ & =\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\end(matrix) \right] \end(align)\ ]

Зауважте: у другому рядку ми використовували асоціативність множення. Власне, ми використовували її й у попередньому завданні, але це було неявно.

Відповідь: $\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\\end(matrix) \right]$.

Як бачите, нічого складного у зведенні матриці немає. Останній приклад можна узагальнити:

\[((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(n))=\left[ \begin(array)(*(35) (r)) 1 & n \\ 0 & 1 \\\end(array) \right]\]

Цей факт легко довести через математичну індукцію чи прямим перемноженням. Однак далеко не завжди при зведенні в ступінь можна виловити такі закономірності. Тому будьте уважні: часто перемножити кілька матриць «напролом» виявляється простіше і швидше, ніж шукати якісь там закономірності.

Загалом, не шукайте найвищого сенсу там, де його немає. На закінчення розглянемо зведення в ступінь матриці більшого розміру - аж $ \ left [3 \ times 3 \ right] $.

Завдання 9. Зведіть матрицю у вказаний ступінь:

\[((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(3))\]

Рішення. Не шукатимемо закономірності. Працюємо «напролом»:

\[((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(3))=(( \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(2))\cdot \left[ \begin (matrix)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right]\]

Для початку зведемо цю матрицю у квадрат:

\[\begin(align) & ((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^( 2))=\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right]\cdot \left[ \begin(matrix ) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\end(matrix) \right]= \\ & =\left[ \begin(array)(*(35)(r )) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \right] \end(align)\]

Тепер зведемо в куб:

\[\begin(align) & ((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^( 3))=\left[ \begin(array)(*(35)(r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \right] \cdot \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right]= \\ & =\left[ \begin( array)(*(35)(r)) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(array) \right] \end(align)\]

От і все. Завдання вирішено.

Відповідь: $\left[ \begin(matrix) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(matrix) \right]$.

Як бачите, обсяг обчислень став більшим, але сенс від цього анітрохи не змінився.

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

Як ви вже, напевно, здогадалися, мова піде про зворотну матрицю та методи її знаходження.



Останні матеріали розділу:

По вуха в оге та еге російська
По вуха в оге та еге російська

Схеми аналізу творів Алгоритм порівняльного аналізу 1. Знайти риси подібності двох текстів на рівні: · сюжету або мотиву; · Образною...

Лунін Віктор Володимирович
Лунін Віктор Володимирович

© Лунін В. В., 2013 © Звонарьова Л. У., вступна стаття, 2013 © Агафонова Н. М., ілюстрації, 2013 © Оформлення серії. ВАТ «Видавництво «Дитяча...

Ах війна ти зробила підла авторка
Ах війна ти зробила підла авторка

Ах, війна, що ж ти зробила, підла: стали тихими наші двори, наші хлопчики голови підняли, подорослішали вони до пори, на порозі ледь помаячили і...