Линейная алгебра на Python. [Урок 3]. Действия над матрицами

Автор: | 21.04.2019

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

Действия над матрицами

Умножение матрицы на число

При умножении матрицы на число, все элементы матрицы умножаются на это число:

Исходная матрица

Умножение матрицы на число

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

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

Пример на 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”.
Книга: Линейная алгебра на Python
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas.  Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Книга: Pandas. Работа с данными

Линейная алгебра на Python. [Урок 3]. Действия над матрицами: 1 комментарий

  1. Андрей

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

Добавить комментарий

Ваш адрес email не будет опубликован.