Тема третьего урока: действия над матрицами. В рамках нее будут рассмотрены следующие вопросы: умножение матрицы на число, сложение и умножение матриц.
Действия над матрицами
Умножение матрицы на число
При умножении матрицы на число, все элементы матрицы умножаются на это число:

![]()

➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2 3; 4 5 6')
>>> C = 3 * A
>>> print(C)
[[ 3 6 9]
[12 15 18]]
Рассмотрим свойства операции умножения матрицы на число.
Свойство 1. Произведение единицы и любой заданной матрицы равно заданной матрице:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> L = 1 * A
>>> R = A
>>> print(L)
[[1 2]
[3 4]]
>>> print(R)
[[1 2]
[3 4]]
Свойство 2. Произведение нуля и любой матрицы равно нулевой матрице, размерность которой равна исходной матрицы:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> Z = np.matrix('0 0; 0 0')
>>> L = 0 * A
>>> R = Z
>>> print(L)
[[0 0]
[0 0]]
>>> print(R)
[[0 0]
[0 0]]
Свойство 3. Произведение матрицы на сумму чисел равно сумме произведений матрицы на каждое из этих чисел:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> p = 2
>>> q = 3
>>> L = (p + q) * A
>>> R = p * A + q * A
>>> print(L)
[[ 5 10]
[15 20]]
>>> print(R)
[[ 5 10]
[15 20]]
Свойство 4. Произведение матрицы на произведение двух чисел равно произведению второго числа и заданной матрицы, умноженному на первое число:
![]()
➣ Численный пример

➤Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> p = 2
>>> q = 3
>>> L = (p * q) * A
>>> R = p * (q * A)
>>> print(L)
[[ 6 12]
[18 24]]
>>> print(R)
[[ 6 12]
[18 24]]
Свойство 5. Произведение суммы матриц на число равно сумме произведений этих матриц на заданное число:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> k = 3
>>> L = k * (A + B)
>>> R = k * A + k * B
>>> print(L)
[[18 24]
[30 36]]
>>> print(R)
[[18 24]
[30 36]]
Сложение матриц
Складывать можно только матрицы одинаковой размерности — то есть матрицы, у которых совпадает количество столбцов и строк.
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 6 3; 8 2 7')
>>> B = np.matrix('8 1 5; 6 9 12')
>>> C = A + B
>>> print(C)
[[ 9 7 8]
[14 11 19]]
Рассмотрим свойства сложения матриц.
Свойство 1. Коммутативность сложения. От перестановки матриц их сумма не изменяется:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> L = A + B
>>> R = B + A
>>> print(L)
[[ 6 8]
[10 12]]
>>> print(R)
[[ 6 8]
[10 12]]
Свойство 2. Ассоциативность сложения. Результат сложения трех и более матриц не зависит от порядка, в котором эта операция будет выполняться:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> C = np.matrix('1 7; 9 3')
>>> L = A + (B + C)
>>> R = (A + B) + C
>>> print(L)
[[ 7 15]
[19 15]]
>>> print(R)
[[ 7 15]
[19 15]]
Свойство 3. Для любой матрицы существует противоположная ей , такая, что их сумма является нулевой матрицей :
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> Z = np.matrix('0 0; 0 0')
>>> L = A + (-1)*A
>>> print(L)
[[0 0]
[0 0]]
>>> print(Z)
[[0 0]
[0 0]]
Умножение матриц
Умножение матриц это уже более сложная операция, по сравнению с рассмотренными выше. Умножать можно только матрицы, отвечающие следующему требованию: количество столбцов первой матрицы должно быть равно числу строк второй матрицы.
Для простоты запоминания этого правила можно использовать диаграмму умножения, представленную на рисунке 1.

Рисунок 1 — Диаграмма матричного умножения
Рассмотрим умножение матриц на примере.
➣ Численный пример

Каждый элемент cij новой матрицы является суммой произведений элементов i-ой строки первой матрицы и j-го столбца второй матрицы. Математически это записывается так:

➤Пример на Python
Решим задачу умножения матриц на языке Python. Для этого будем использовать функцию dot() из библиотеки Numpy:
>>> A = np.matrix('1 2 3; 4 5 6')
>>> B = np.matrix('7 8; 9 1; 2 3')
>>> C = A.dot(B)
>>> print(C)
[[31 19]
[85 55]]
Ниже представлены свойства произведения матриц. Примеры свойств будут показаны для квадратной матрицы.
Свойство 1. Ассоциативность умножения. Результат умножения матриц не зависит от порядка, в котором будет выполняться эта операция:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> C = np.matrix('2 4; 7 8')
>>> L = A.dot(B.dot(C))
>>> R = (A.dot(B)).dot(C)
>>> print(L)
[[192 252]
[436 572]]
>>> print(R)
[[192 252]
[436 572]]
Свойство 2. Дистрибутивность умножения. Произведение матрицы на сумму матриц равно сумме произведений матриц:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> C = np.matrix('2 4; 7 8')
>>> L = A.dot(B + C)
>>> R = A.dot(B) + A.dot(C)
>>> print(L)
[[35 42]
[77 94]]
>>> print(R)
[[35 42]
[77 94]]
Свойство 3. Умножение матриц в общем виде не коммутативно. Это означает, что для матриц не выполняется правило независимости произведения от перестановки множителей:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> L = A.dot(B)
>>> R = B.dot(A)
>>> print(L)
[[19 22]
[43 50]]
>>> print(R)
[[23 34]
[31 46]]
Свойство 4. Произведение заданной матрицы на единичную равно исходной матрице:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> E = np.matrix('1 0; 0 1')
>>> L = E.dot(A)
>>> R = A.dot(E)
>>> print(L)
[[1 2]
[3 4]]
>>> print(R)
[[1 2]
[3 4]]
>>> print(A)
[[1 2]
[3 4]]
Свойство 5. Произведение заданной матрицы на нулевую матрицу равно нулевой матрице:
![]()
➣ Численный пример

➤ Пример на Python
>>> A = np.matrix('1 2; 3 4')
>>> Z = np.matrix('0 0; 0 0')
>>> L = Z.dot(A)
>>> R = A.dot(Z)
>>> print(L)
[[0 0]
[0 0]]
>>> print(R)
[[0 0]
[0 0]]
>>> print(Z)
[[0 0]
[0 0]]
P.S.
Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта. Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Спасибо большое за познавательную статью по матрицам в Python