Тема третьего урока: действия над матрицами. В рамках нее будут рассмотрены следующие вопросы: умножение матрицы на число, сложение и умножение матриц.
Действия над матрицами
Умножение матрицы на число
При умножении матрицы на число, все элементы матрицы умножаются на это число:
➣ Численный пример
➤ Пример на 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