Матрицы и операции
Матрица — прямоугольная таблица чисел с строками и столбцами. Элемент в строке i и столбце j обозначают A[i,j] (или Aᵢⱼ). Размер m × n — m строк, n столбцов.
Матрицы строятся из векторов: каждая строка (или столбец) — вектор. В ML batch изображений — матрица (или тензор) пикселей; слой нейросети — матрица весов.
Виды матриц
| Вид | Условие | Пример 3×3 |
|---|---|---|
| Произвольная | любые m, n | любая таблица |
| Квадратная | m = n | 3 строки и 3 столбца |
| Нулевая | все элементы 0 | все нули |
| Диагональная | вне главной диагонали — нули | diag(2, 5, −1) |
| Единичная I | диагональ = 1, остальное 0 | единицы на диагонали |
Главная диагональ — элементы A[0,0], A[1,1], …
Побочная диагональ (для квадратной n×n) — элементы от правого верхнего к левому нижнему углу.
Базовые операции
Вынесение минуса
−A — каждый элемент меняет знак.
A = [[ 3, -2],
[ 0, 4]]
−A = [[-3, 2],
[ 0, -4]]
Сложение и вычитание
Только для матриц одного размера — поэлементно.
A = [[1, 2], B = [[5, 0],
[3, 4]] [−1, 2]]
A + B = [[6, 2],
[2, 6]]
Умножение на число
Каждый элемент умножается на скаляр k.
k = 2, A = [[1, −3],
[0, 4]]
k·A = [[2, −6],
[0, 8]]
Транспонирование Aᵀ
Строки становятся столбцами.
A = [[1, 2, 3],
[4, 5, 6]]
Aᵀ = [[1, 4],
[2, 5],
[3, 6]]
Умножение матриц
A (m×k) × B (k×n) = C (m×n) возможно, когда число столбцов A = число строк B (внутренняя размерность k).
Элемент C[i,j] = скалярное произведение i-й строки A и j-го столбца B:
C[i,j] = Σₜ A[i,t] · B[t,j]
Пример: A (2×2), B (2×3):
A = [[1, 2], B = [[3, 0, −1],
[0, −1]] [2, 1, 4]]
C[0,0] = 1·3 + 2·2 = 7
C[0,1] = 1·0 + 2·1 = 2
…
C = [[7, 2, 7],
[−2, −1, −4]]
B × A в этом примере не определено: у B три столбца, у A две строки — внутренние размерности не совпадают.
Почему AB ≠ BA (в общем случае)
P = [[1, 0], Q = [[0, 1],
[0, 2]] [1, 0]]
P·Q = [[0, 1], Q·P = [[0, 2],
[2, 0]] [1, 0]]
Порядок множителей меняет результат — как порядок преобразований в графике.
Задачи для тренировки
1. Суммы диагоналей (5×5)
M = [[2, 1, 0, 4, 1],
[0, 3, 5, −1, 2],
[1, 0, 4, 2, 0],
[3, 2, 1, 5, 1],
[0, 1, 2, 0, 6]]
- Главная диагональ: 2 + 3 + 4 + 5 + 6 = 20
- Побочная: 1 + (−1) + 1 + 2 + 0 = 3
2. Сумма двух матриц 3×3
A = [[1, 0, 2], B = [[−1, 3, 0],
[2, −1, 1], [1, 2, 2],
[0, 3, 4]] [2, 0, 1]]
A + B = [[0, 3, 2],
[3, 1, 3],
[2, 3, 5]]
3. Единичная матрица 9×9
Постройте циклом: на диагонали 1, вне — 0. Решение — Lab 1129 — практикум.
NumPy
import numpy as np
A = np.array([[1, 2], [0, -1]])
B = np.array([[3, 0, -1], [2, 1, 4]])
C = A @ B # матричное умножение
I = np.eye(3) # единичная 3×3
At = A.T # транспонирование
Теория массивов и справочник функций — 337 — NumPy; практика — Lab 1129.
Дальше: NumPy → Перцептрон на NumPy.
Чек-лист самопроверки
- Чем вектор-столбец отличается от вектора-строки при умножении на матрицу?
- Вычислите скалярное произведение
(2, −1) · (3, 4)без калькулятора. - Почему в общем случае AB ≠ BA?
- Что такое единичная матрица и зачем
np.eye(n)? - Как связаны
np.trace(M)и главная диагональ?