13.1.3. Умножение матриц
1. Умножение матриц — это специфическая операция, составляющая основу алгебры матриц. Строки и столбцы матриц можно рассматривать как векторы-строки и векторы-столбцы соответствующих размерностей: иными словами, любую матрицу можно интерпретировать как совокупность векторов-строк или векторов-столбцов.
Пусть даны матрица А размером Т Х п и матрица В размером П х K. Будем рассматривать матрицу А как совокупность Т векторов-строк I размерности П каждый, а матрицу В — Как совокупность K векторов-столбцов J, каждый из которых содержит по П координат:
Векторы-строки матрицы А и векторы-столбцы матрицы В Показаны в записи этих матриц (13.3). Длина строки матрицы А равна высоте столбца матрицы В, и потому скалярное произведение этих векторов имеет смысл.
Определение 3. Произведением матриц А и В называется матрица
Произведение матриц А и В — матрица С — имеет размер Т х K, поскольку длина П векторов-строк и векторов-столбцов исчезает при суммировании произведений координат этих векторов в их скалярных произведениях, как показано в формулах (13. 4). Таким образом, для вычисления элементов первой строки матрицы С необходимо последовательно получить скалярные произведения первой строки матрицы А на все столбцы матрицы В; вторая строка матрицы С
В операции умножения матриц есть характерная особенность: произведение матриц А и В имеет смысл, если число столбцов в А равно числу строк в В. Тогда если А и В — Прямоугольные матрицы, то произведение В и А уже не будет иметь смысла, так как в скалярных произведениях, формирующих элементы соответствующей матрицы, должны участвовать векторы с одинаковым числом координат.
Если матрицы А И В квадратные размером N х N, то имеет смысл как произведение матриц АВ, так и произведение матриц BA, причем размер этих матриц такой же, как и у исходных сомножителей. При этом в общем случае перемножения матриц правило перестановочности не соблюдается, т. е. АВ ≠ ВА.
Рассмотрим примеры на умножение матриц.
Решение. Поскольку число столбцов матрицы А равно числу строк матрицы В, то произведение матриц АВ имеет смысл. По формулам (13.4) получаем в произведении матрицу размером 3 х 2:
Произведение ВА не имеет смысла, так как число столбцов матрицы В не совпадает с числом строк матрицы А.
Решение. Здесь мы найдем произведения данных матриц АВ и ВА:
Как видно из результата, матрица произведения зависит от порядка расположения матриц в произведении. В обоих случаях произведения матриц имеют тот же размер, что и у исходных сомножителей: 2 х 2.
Решение. В данном случае матрица В представляет собой вектор-столбец, т. е. матрицу, у которой три строки и один столбец. Вообще, векторы — это частные случаи матриц: вектор-строка длины
В произведении получена матрица размером 2 х 1 или вектор-столбец высоты 2.
Решение. Путем последовательного умножения матриц находим
2. Свойства произведения матриц. Пусть А, В и С — матрицы соответствующих размеров (чтобы произведения матриц были определены), а α — действительное число. Тогда следующие свойства произведения матриц имеют место:
1) (АВ)С = А(ВС),
2) (А + В)С = AC + ВС,
3) А(В + С) = АВ + АС,
4) α(АВ) = (αА)В = А(αВ).
В п. 1 этого раздела введено понятие единичной матрицы Е. Нетрудно убедиться, что в алгебре матриц она играет роль единицы, т. е. можно отметить еще два свойства, связанные с умножением на эту матрицу слева и справа в случае квадратных матриц:
5) АЕ = А,
6) ЕА = А.
Иными словами, произведение любой матрицы на единичную матрицу, если оно имеет смысл, не меняет исходную матрицу.
< Предыдущая | Следующая > |
---|
Действия с матрицами
Чтобы умножить матрицу на число, нужно умножить на это число все элементы матрицы.
Суммой двух матриц одинаковой размерности называется матрица той же размерности, каждый элемент которой равен сумме соответствующих элементов слагаемых.
Операция умножения
матрицы на матрицу определяется более сложным образом.
Пусть заданы две матрицы А и В, причем число столбцов первой из них
равно числу строк второй. Если
то произведением матриц А и В называется матрица
,
элементы которой вычисляются по формуле
Произведение матриц А и В обозначается АВ, т.е. С = АВ. Оно, вообще говоря, зависит от порядка сомножителей. Если АВ = ВА, то матрицы А и В называются перестановочными.
В множестве квадратных матриц определена единичная матрица – квадратная матрица, все диагональные элементы которой – единицы, а остальные – нули:
Единичная матрица чаще всего обозначается буквой Е или Еп, где п — порядок матрицы. Непосредственным вычислением легко проверить основное свойство единичной матрицы:
Скалярной матрицей называется диагональная
матрица с одинаковыми числами на главной
диагонали; единичная матрица – частный
случай скалярной матрицы.
Рассмотрим произвольную прямоугольную матрицу А. Матрица, получающаяся из матрицы А заменой строк столбцами, называется транспонированной по отношению к матрице А и обозначается АТ:
Квадратная матрица
Квадратная матрица А, для которой АТ = А, называется симметричной. Элементы такой матрицы, расположенные симметрично относительно главной диагонали, равны.
Квадратная
матрица U, для которой U-1 = U Модуль определителя ортогональной
матрицы равен единице; сумма квадратов
элементов любого столбца ортогональной
матрицы равна единице; сумма произведений
элементов любого столбца ортогональной
матрицы на соответствующие элементы
другого столбца равна нулю. Такими же
свойствами обладают строки ортогональной
матрицы.
ЗАДАНИЕ 1
Умножая на матрицы специального вида, сформируйте матрицу-столбец и матрицу-строку, соответственно равные столбцу и строке матрицы А с заданными в условии номерами. Вычислите суммы элементов столбца и строки, номера которых указаны в задании. Переставьте указанные в задании строки и столбцы матрицы.
Порядок выполнения задания
1. Установите режим автоматического выполнения вычислений.
2. Определите и введите матрицу А.
3. Введите матрицу,
умножение на которую выделяет столбец
и строку матрицы с указанным номером. Выполните умножение.
4. Введите матрицу, умножение на которую суммирует элементы указанных столбца и строки. Выполните умножение.
5. Введите матрицу, умножение на которую переставляет указанные столбцы и строки. Выполните умножение.
Суммирование элементов по столбцам Выделение третьего столбца
Суммирование элементов по строкам Выделение первой и второй строки
Умножение на единичную матрицу
Умножение на число, умножение на скалярную матрицу
Перестановка первой и второй, второй и третьей строк
Перестановка двух столбцов
Варианты 1-10: переставьте 1-ю и 2-ю строки и 1-й и 2-й столбцы.
Варианты 11-20:
переставьте 2-ю и 3-ю строки и 1-й и 3-й
столбцы.
ЗАДАНИЕ 2
Докажите, что матрица (v — вектор-столбец) -ортогональная матрица. Проверьте для нее свойства ортогональной матрицы. В качестве v возьмите первый столбец матрицы А из задания 1.
Порядок выполнения задания
1. Установите режим автоматических вычислений.
2. Присвойте переменной ORIGIN значение, равное единице.
3. Введите матрицу-столбец V и единичную матрицу Е соответствующей размерности.
4.Вычислите матрицу Н.
5.Вычислите
произведения НТН и ННТ.
6.Вычислите Н-1. Сравните Н-1 и НТ.
7. Покажите, что векторы-столбцы матрицы Н имеют единичную длину и попарно ортогональны. Убедитесь, что выполняется равенство |detН| = 1.
Пример выполнения задания
Фрагмент рабочего документа Mathcad с отчетом о выполнении задания для вектора v = (1 0 1 l)Т приведен ниже.
Как использовать функцию MMULT в Google Таблицах
Содержание:
Функция MMULT в Google Таблицах — это сокращение от «функция умножения матриц», и она автоматизирует умножение строки в столбец для вас.
По сути, матричное умножение пересекает две матрицы, чтобы получить одну матрицу. Он складывает произведение строк в первой матрице и соответствующих столбцов во второй матрице. Сейчас это звучит немного сложно, но не волнуйтесь, это будет более подробно объяснено в этой статье.
Просто запомните правило, согласно которому в первой матрице должно быть столько же столбцов, сколько строк во второй, чтобы выполнять функцию умножения матриц.
Возьмем пример.
Скажем, я был частью управленческой команды, управляющей этой большой компанией, которая получает продажи из разных стран. У меня была бы таблица с обновленными обменными курсами, а также таблица с общими объемами продаж наших подразделений за рубежом в их соответствующих валютах.
С помощью этих двух таблиц и только одной функции в Google Таблицах я могу конвертировать общий объем продаж в валюту нашего основного подразделения.
Функция MMULT полезна для различных практических случаев использования, особенно в сочетании с другими формулами Google Таблиц.
Но в этом руководстве мы сделаем его простым и понятным. Это означает, что вы можете гибко форматировать свои матрицы в соответствии с форматом функции.
Например, необходимо упростить оценивание классов для учителей, использующих функцию MMULT, если они хотят выписать две таблицы определенным образом. Во-первых, они составляют таблицу с весом каждого критерия оценки по длине по горизонтали и используют ее в качестве первой матрицы. Затем таблица оценок, в которой каждый студент является меткой столбца, служит второй матрицей.
Возможно, это немного сложно представить. Мы шаг за шагом рассмотрим, как использовать функцию MMULT в Документах Google, на реальном примере. Давай начнем!
Особенности функции MMULT в Google ТаблицахИтак, синтаксис (то, как мы пишем) функции MMULT следующий:
=MMULT(matrix1, matrix2)
Давайте проанализируем это и поймем, что означает каждый из этих терминов:
- = знак равенства — это то, как мы запускаем любую функцию в Google Таблицах
- MMULT () — наша функция умножения матриц.
- matrix1 — это массив или диапазон данных, которые служат нашей первой матрицей.
- matrix2 — это массив или диапазон данных, которые служат нашей второй матрицей.
Как упоминалось ранее, матрица matrix1 должна иметь такое же количество столбцов, как и строк в matrix2.
Также давайте проясним, что такое массив. Это порядок значений в вашей таблице, записанный с двоеточием между каждым значением последовательно, а затем точкой с запятой для разделения их по строкам. Затем на обоих концах идет скобка. Например, в = {1,2; 3,4} 1 будет рядом с 2, 3 будет ниже 1, а 4 будет ниже 2.
Однако было бы проще использовать диапазон данных, такой как A1: E4, в качестве матрицы для этой функции, поэтому мы будем использовать его в этом руководстве.
Реальный пример использования функции MMULT в Google ТаблицахВзгляните на приведенный ниже пример, чтобы узнать, как использовать функцию MMULT в Google Таблицах.

Чтобы получить общий объем продаж в валюте основного подразделения, долларах США, мне придется умножить обменные курсы на объем продаж каждого уникального продукта, проданного в иностранной валюте. Вручную это потребует времени и усилий, но с функцией MMULT выходная матрица (общий объем продаж) создается всего за несколько секунд.
Значения были рассчитаны следующим образом:
- А = 4500 * 0,27 + 9700 * 0,73 + 3200 * 0,13 + 58000 * 0,014 = 9524
- В = 5700 * 0,27 + 1100 * 0,73 + 1700 * 0,13 + 73000 * 0,014 = 3585
- С = 3900 * 0,27 + 6500 * 0,73 + 9000 * 0,13 + 52000 * 0,014 = 7696
- D = 8000 * 0,27 + 4700 * 0,73 + 6400 * 0,13 + 81000 * 0,014 = 7557
- E = 7200 * 0,27 + 4733 * 0,73 + 5900 * 0,13 + 64000 * 0,014 = 6016
Вы заметите, что значения в строках первой матрицы умножаются на значения в столбцах второй матрицы, слева направо и сверху вниз соответственно.
На этом этапе мы перейдем к этапам использования функции MMULT, учитывая пример ситуации, который я представил.
Как использовать функцию MMULT в Google Таблицах1. Сначала вам нужно щелкнуть первую ячейку строки, в которой вы хотите разместить матрицу вывода. Позже остальные значения заполнят строку.

Умножение матриц.
Навигация по странице:
- Умножение матриц
- Свойства умножения матриц
- Примеры умножения матриц
Онлайн калькулятор. Умножение матриц.
Определение.
Результатом умножения матрицAm×n и Bn×k будет матрица Cm×k такая, что элемент матрицы C, стоящий в i-той строке и j-том столбце (cij), равен сумме произведений элементов i-той строки матрицы A на соответствующие элементы j-того столбца матрицы B:
cij = ai1 · b1j + ai2 · b2j + . .. + ain · bnj
Замечание.
Две матрицы можно перемножить между собой тогда и только тогда, когда количество столбцов первой матрицы равно количеству строк второй матрицы.
Свойства умножения матриц
- (A · B) · C= A · (B · C) – произведение матриц ассоциативно;
- (z · A) · B= z · (A · B), где z – число;
- A · (B + C) = A · B + A · C – произведение матриц дистрибутивно;
- En · Anm = Anm · Em= Anm – умножение на единичную матрицу;
- A · B ≠ B · A – в общем случае произведение матриц не коммутативно.
- Произведением двух матриц есть матрица, у которой столько строк, сколько их у левого сомножителя, и столько столбцов, сколько их у правого сомножителя.
Примеры задач на умножение матриц
Пример 1.
Найти матрицу C равную произведению матриц A = | 4 | 2 | и B = | 3 | 1 | .![]() | ||||
9 | 0 | -3 | 4 |
Решение:
С = A · B = | 4 | 2 | · | 3 | 1 | = | 6 | 12 | ||||||
9 | 0 | -3 | 4 | 27 | 9 |
Элементы матрицы C вычисляются следующим образом:
c11 = a11·b11 + a12·b21 = 4·3 + 2·(-3) = 12 – 6 = 6
c12 = a11·b12 + a12·b22 = 4·1 + 2·4 = 4 + 8 = 12
c21 = a21·b11 + a22·b21 = 9·3 + 0·(-3) = 27 + 0 = 27
c22 = a21·b12 + a22·b22 = 9·1 + 0·4 = 9 + 0 = 9
Пример 2
Найти матрицу C равную произведению матриц A = |
| и B = |
| .![]() |
Решение:
C = A · B = |
| · |
| = |
|
Элементы матрицы C вычисляются следующим образом:
c11 = a11·b11 + a12·b21 = 2·5 + 1·(-3) = 10 – 3 = 7
c12 = a11·b12 + a12·b22 = 2·(-1) + 1·0 = -2 + 0 = -2
c13 = a11·b13 + a12·b23 = 2·6 + 1·7 = 12 + 7 = 19
c21 = a21·b11 + a22·b21 = (-3)·5 + 0·(-3) = -15 + 0 = -15
c22 = a21·b12 + a22·b22 = (-3)·(-1) + 0·0 = 3 + 0 = 3
c23 = a21·b13 + a22·b23 = (-3)·6 + 0·7 = -18 + 0 = -18
c31 = a31·b11 + a32·b21 = 4·5 + (-1)·(-3) = 20 + 3 = 23
c32 = a31·b12 + a22·b22 = (4)·(-1) + (-1)·0 = -4 + 0 = -4
c33 = a31·b13 + a32·b23 = 4·6 + (-1)·7 = 24 – 7 = 17
Онлайн калькуляторы с матрицами.
Упражнения с матрицами.
Матрицы. вступление и оглавлениеМатрицы: определение и основные понятия.Сведение системы линейных уравнений к матрице.Виды матрицУмножение матрицы на число.Сложение и вычитание матриц.Умножение матриц.Транспонирование матрицы.Элементарные преобразования матрицы.Определитель матрицы.Минор и алгебраическое дополнение матрицы.Обратная матрица.Линейно зависимые и независимые строки.Ранг матрицы.
Любые нецензурные комментарии будут удалены, а их авторы занесены в черный список!
Транспонирование и умножение матриц на Python
В этом уроке мы напишем программы на Python для транспонирования и умножения матриц и вывода результатов.
Прежде чем писать программу транспонирования матрицы на Python, давайте сначала посмотрим на обзор транспонирования.
Транспонирование матрицы
Если вы заменяете строки матрицы столбцом той же матрицы, это называется транспонированием матрицы. Обозначается как X’. Например: Элемент в i-й строке и j-м столбце в X будет помещен в j-ю строку и i-й столбец в X’.
Пример: Предположим, мы взяли следующую матрицу A:
A = [[5, 4, 3] [2, 4, 6] [4, 7, 9] [8, 1, 3]]
At будет транспонированием указанной выше матрицы, т. е. A [i] [j] = At [j] [i], и поэтому At должно быть:
В = [5, 2, 4, 8] [4, 4, 7, 1] [3, 6, 9, 3]
Программа Python для транспонирования матрицы
Теперь мы напишем программу на Python для транспонирования входной заданной матрицы, где мы выполняем операцию, как мы выполнили в приведенном выше примере. Чтобы выполнить операцию транспонирования матрицы, мы будем использовать метод вложенного цикла for.
Давайте разберемся с использованием и реализацией этого метода на следующем примере.
Пример:
# Define a matrix A A = [[5, 4, 3], [2, 4, 6], [4, 7, 9], [8, 1, 3]] # Define an empty matrix of reverse order transResult = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] # Use nested for loop on matrix A for a in range(len(A)): for b in range(len(A[0])): transResult[b][a] = A[a][b] # store transpose result on empty matrix # Printing result in the output print("The transpose of matrix A is: ") for res in transResult: print(res)
Выход:
The transpose of matrix A is: [5, 2, 4, 8] [4, 4, 7, 1] [3, 6, 9, 3]
Умножение матриц
В этом разделе мы напишем программу на Python для умножения двух входных матриц и выведем результат на выходе. Эта программа укажет, как умножать две матрицы, имеющие определенные значения.
Прежде чем писать программу на Python, давайте сначала посмотрим на обзор умножения двух матриц.
Умножение матриц — это бинарная операция, в которой используется пара матриц для создания другой матрицы. Элементы в матрице умножаются в соответствии с элементарной арифметикой.
При умножении двух матриц элементы строки первой матрицы умножаются на элементы столбца второй матрицы.
Пример: предположим, что мы взяли следующие две матрицы A и B:
A = [[5, 4, 3] [2, 4, 6] [4, 7, 9]] and, B = [[3, 2, 4] [4, 3, 6] [2, 7, 5]]
C будет объединением двух указанных выше матриц, т. е. C = A + B, и поэтому C должно быть:
C = [[37, 43, 59] [34, 58, 62] [58, 92, 103]]
Как мы видим, результирующая матрица C, также известная как произведение матриц, имеет то же количество строк, что и первая матрица (матрица A), и такое же количество столбцов, как и вторая матрица (матрица B). Мы также знаем этот тип умножения матриц как скалярное произведение матриц.
Умножение двух матриц
Теперь мы напишем программу Python для умножения двух матриц, где мы выполняем умножение, как мы это делали в приведенном выше примере. Мы можем использовать различные методы для написания такой программы на Python, но в этом руководстве будем использовать только следующие два метода:
- Использование метода вложенного цикла.
- Использование метода понимания вложенного списка.
В обоих методах мы напишем пример программы, чтобы понять их реализацию для умножения двух матриц.
Способ 1: Использование метода вложенного цикла
В этом методе мы собираемся использовать вложенный цикл for для двух матриц, выполнять над ними умножение и сохранять результат умножения в третьей матрице в качестве итогового значения.
Давайте разберемся с реализацией этого метода на следующем примере.
Пример:
# Define two matrix A and B in program A = [[5, 4, 3], [2, 4, 6], [4, 7, 9]] B = [[3, 2, 4], [4, 3, 6], [2, 7, 5]] # Define an empty matrix to store multiplication result multiResult = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] # Using nested for loop method on A & B matrix for m in range(len(A)): for n in range(len(B[0])): for o in range(len(B)): multiResult[m][n] += A[m][o] * B[o][n] # Storing multiplication result in empty matrix # Printing multiplication result in the output print("The multiplication result of matrix A and B is: ") for res in multiResult: print(res)
Выход:
The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]
Способ 2: Использование метода понимания вложенного списка
В этом методе мы будем использовать понимание вложенного списка, чтобы получить результат умножения двух входных матриц. При использовании в программе метода понимания списка мы также будем использовать «zip в Python» для вложенного списка. Давайте разберемся с реализацией этого метода на следующем примере.
Пример:
# Define two matrix A & B in the program A = [[5, 4, 3], [2, 4, 6], [4, 7, 9]] B = [[3, 2, 4], [4, 3, 6], [2, 7, 5]] # Using nested list method with zip in Python multiResult = [[sum(a * b for a, b in zip(Arow, Bcol)) for Bcol in zip(*B)] for Arow in A] # Printing multiplication result in the output print("The multiplication result of matrix A and B is: ") for res in multiResult: print(res)
Выход:
The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]
119401cookie-checkТранспонирование и умножение матриц на Pythonyes
Три способа умножения матриц в Excel
Дата публикации Jul 2, 2019
Часть-2 изФастай «Из фондов»наконец-то вышел. Я не помню, когда в последний раз я был так взволнован по поводу MOOC. Как только курс был обнародован, я начал копаться в нем, чтобы углубить свое понимание глубокого обучения и основополагающих концепций.
На этот раз я решил последовать совету Джереми и Рэйчел и написать блоги. Эта конкретная статья объясняетразличные методы умножения матриц,что Джереми реализует в Уроке-8. Я буду использоватьМайкрософт Эксельдля иллюстрации.
Итак, начнем!
Умножение матриц
Отличное и интерактивное место для понимания умножения матриц, на которое ссылается Джереми, доступно по адресу:
matrixmultiplication.xyzПо сути, как видно из изображения, мы берем транспонирование второй матрицы, умножаем и складываем элементы вместе, чтобы получить результат. Как пример, самый первый пункт15
в результирующей матрице происходит от1*2 + 6*2 + 1*1 = 2 + 12 + 1 = 15
,
Хотя это объяснение визуально приятно, по моему скромному мнению, его трудно преобразовать в код. Так что давайте использовать Excel и понимать матричное умножение по-другому!
Умножение матриц в EXCEL
Рассмотрим две матрицыа такжеВразмера4x3
а также3x4
,
Примечание: я буду использовать жирный шрифта такжеВсослаться на матрицы в этой статье. Обычная практика – ссылаться на векторы и матрицы, используя жирный шрифт.
Из изображения, которое мы видели раньше, если вы помните, мы взяли транспонированиеВи умноженные строкис колоннамиВчтобы получить результирующую матрицу. Скорее, давайте пропустим этот шаг, сделав транспонирование на этот раз, и сразу умножим строки и столбцы.
Поэтому строка 0 изумножается на столбец 0Впоэлементные и результирующие поэлементные продукты добавляются для получения первого элемента в результирующей матрицеСв положении[0][0]
,
Вот как это выглядит в Excel:
C [0] [0] = 1 * 1 + 10 * 5 + 100 * 9 = 1 + 50 + 900 = 951Точно так же мы получаемC[0][3]
поэлементно умножая строку 0 изи кол 3 изB. В Excel это выглядит так:
И, наконец, мы следуем тому же процессу, чтобы пройти каждый пустой ящик вСчтобы получить окончательный результат.
C [3] [3] = 4 * 4 + 40 * 8 + 400 * 12 = 16 + 320 + 4800 = 5136Вот и мы! Вот так мы делаем матричное умножение! Это было легко, не так ли? Мы теперь не только поняли умножение матриц, но и внедрили его в Excel! Как это круто?
Я лично считаю, что теперь вы готовы работать с некоторыми правилами, связанными с умножением матрицMatMul):
- Позволять
ar,ac
быть количеством строк и столбцов вA.Точно так же, пустьbr, bc
быть количеством строк и столбцов вB.Тогда для выполнения умножения матриц необходимо, чтобыac == br
, Зачем? Итак, как вы видели в Excel, мы умножили строки и столбцы поэлементно, а затем добавили промежуточные продукты, чтобы получить конечный результат.Если есть несоответствие в размерах, и один вектор длиннее другого, мы больше не можем выполнять поэлементное умножение!
- Размеры результирующей матрицы всегда будут
ar,bc
, То есть количество строк исходит оти количество столбцов исходит отB.
Способ 1: использование 3-х циклов FOR
Вот еще один отказ от ответственности, при реализации умножения матриц в Excel, мы не только поняли это, но и повторили первый метод Джереми, который использовал 3 цикла FOR. Вот как это выглядит в коде:
def matmul1(a,b):
ar,ac = a.shape
br,bc = b.shape
assert ac==br
c = torch.zeros(ar, bc)
for i in range(ar):
for j in range(bc):
for k in range(ac): #or br
c[i,j] += a[i,k]*b[k,j]
return c
Надеюсь, теперь вы сможете лучше понять это. Если нет, то сейчас самое время сделать паузу, поэкспериментировать с кодом и посмотреть, что на самом деле происходит. Я обещаю вам, это так же, как наша версия Excel!
Хорошо, я предполагаю, что вы потратили некоторое время на размышления о коде, поэтому давайте обсудим это!
- Почему первые две петли в
range(ar)
а такжеrange(bc)
? Ну, как вы помните изПравило-2наша результирующая матрица будет иметь размерыar,bc
, И из Excel мы увидели, что мы пересекаем каждый элементСследовательно, один за другим, чтобы пройтиar
строки иbc
столбцы нам нужно 2 цикла вrange(ar)
а такжеrange(bc)
, - Итак, почему третий цикл FOR в
range(ac) #or br
? Ну изПравило-1, мы знаем этоac==br
так что на самом деле не имеет значения, ставим ли мыrange(ac)
илиrange(br)
в третьем цикле.По сути, именно здесь отдельные элементы умножаются вместе и добавляются. Из нашего предыдущего примера Excel, для
C[0][0]
это где шагC[0][0] = 1*1 + 10*5 + 100*9 = 1 + 50 + 900 = 951
произойдет, и, наконец, мы перейдем к следующей коробке. Количество предметов, которые умножаются и складываются вместе, равноac or br
,
Это действительно так! Это метод-1 для вас! Вот песня, чтобы помнить Матричное Умножение. (Я узнал об этом первым из fast.ai, оригинальный автор неизвестен)
Надеюсь, теперь вы понимаете, как две матрицы умножаются друг на друга. Если не,Вотэто еще один учебник Хан Академии
Метод 2: Использование поэлементного умножения
Так что до сих пор мы разбираем каждую позицию в результирующей матрицеC,найти отдельные элементы, а затем суммировать их вместе. Если вы помните, что-то вродеC[0][0] = 1*1 + 10*5 + 100*9 = 1 + 50 + 900 = 951
, Конечно, должен быть другой путь? Что если вместо того, чтобы делать отдельные продукты, а затем суммировать их, мы умножаем векторы за один раз, чтобы получить результирующий вектор, и суммируем полученный вектор, чтобы получить конечный элемент?
m = tensor([1, 2, 3])
n = tensor([10, 10, 10])
m*n>>tensor([10, 20, 30])
До сих пор мы находили отдельные продукты10, 20, 30
и сложить их вместе10 + 20 + 30 = 60
, Но, действительно, все это можно заменить на:
m = tensor([1, 2, 3])
n = tensor([10, 10, 10])
(m*n).sum()>>tensor(60)
Если вы помните, самый внутренний цикл вrange(ac) #or br
находил отдельные продукты и добавлял их. Ну, мы можем заменить этот цикл, чтобы выполнить векторное поэлементное произведение и положить.sum()
в конце концов, и PyTorch / NumPy имеют возможность выполнять поэлементные операции для нас!
Вот как это выглядит в Excel:
C [0] [0] = сумма (A [строка 0] * B [столбец 0])Точно так же мы получаемC[0][3]
путем умножения вектора в строке 0с вектором на цв 3Ви суммируя полученный вектор.
И, наконец, мы следуем тому же процессу, чтобы пройти каждый пустой ящик вСчтобы получить окончательный результат.
C [3] [3] = сумма (A [строка 3] * B [столбец 3])Обратите внимание, как это отличается отМетод-1? На этот раз мы просто говорим Excel или PyTorch: умножьте строку 0с col 0 изВи суммируем полученный вектор, чтобы дать нам ответ. Вместо того чтобы делать
1*1 + 10*5 + 100*9
, Например, дляC[0][0]
этот метод умножает Vector на строку 0tensor([1,10,100])
с вектором в столбце 0 изВtensor{[1,5,9])
чтобы получить промежуточный продукт Векторtensor([1,50,900])
и суммирует это, чтобы дать результат в положенииC[0][0]
какtensor(951)
,
В коде это выглядит так:
def matmul2(a,b):
ar,ac = a.shape
br,bc = b.shape
assert ac==br
c = torch.zeros(ar,bc)
for i in range(ar):
for j in range(bc):
c[i,j] = (a[i,:]*b[:,j]).sum()
return c
Таким образом, мы просто анализируем каждую позициюC,используя две петли FOR и введите соответствующий результат в этой позиции. Еслиi,j
представляют строки и столбцы вСэто выглядит примерно так …
i:0,j:0
a:tensor([ 1, 10, 100]),b:tensor([1, 5, 9])
tensor([[951., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
---
i:0,j:1
a:tensor([ 1, 10, 100]),b:tensor([ 2, 6, 10])
tensor([[ 951., 1062., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
---
i:0,j:2
a:tensor([ 1, 10, 100]),b:tensor([ 3, 7, 11])
tensor([[ 951., 1062., 1173., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
---
i:0,j:3
a:tensor([ 1, 10, 100]),b:tensor([ 4, 8, 12])
tensor([[ 951., 1062., 1173., 1284.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
---
i:1,j:0
a:tensor([ 2, 20, 200]),b:tensor([1, 5, 9])
tensor([[ 951., 1062., 1173., 1284.],
[1902., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
И так далее .. пока мы не получим полную матрицуС,
tensor([[ 951., 1062., 1173., 1284.],
[1902., 2124., 2346., 2568.],
[2853., 3186., 3519., 3852.],
[3804., 4248., 4692., 5136.]])
Метод 3: вещание
Заметили общую тему здесь? Каждый раз мы должны умножить каждый рядс каждым столбцомВполучитьС, Вы замечаете повторение? Мы умножаем один и тот же вектор строки вbc
раз! И мы повторяем этот процессar
раз!
Есть ли способ умножить вектор строкисо всеми столбцамиВполучить соответствующий ряд вC?Да, есть! Войдите в трансляцию …
Примечание: я не буду объяснять вещание, Джереми делает это очень хорошоВот,
Вместо этого давайте посмотрим, что это за волшебный кусок кода
for i in range(ar):
c[i] = (a[i,:].unsqueeze(-1).expand_as(b)*b).sum(dim=0)
Как обычно, давайте повторим в Excel! Это сделает вещи действительно легкими. Давайте сделаем это поэтапно.
Шаг 1)Выберите i-й рядa[i,:]
, Мы выбираем строку 0 в качестве примера.
Шаг 2)Возьмите егоТранспонированиеa[i,:].unsqueeze(-1)
Шаг 3)Развернуть матрицу столбца какВa[i,:].unsqueeze(-1).expand_as(b)
Шаг-4)Элемент мудрый умножить наВa[i,:].unsqueeze(-1).expand_as(b)*b
Шаг-5)Суммируйте по строкам, чтобы получить строку 0 C
Суммируйте по измерению боковой строки, чтобы получить строку 0 CПолный процесс вещания для каждого рядавыглядит примерно так:
Вещание в целомЯ надеюсь, что теперь вы получитевещания!Итак, давайте посмотрим, как это выглядит в коде ..
def matmul3(a,b):
ar,ac = a.shape
br,bc = b.shape
assert ac==br
c = torch.zeros(ar,bc)
for i in range(ar):
c[i] = (a[i,:].unsqueeze(-1).expand_as(b)*b).sum(dim=0)
print(f"i:{i}")
print(c)
return c
Вывод выглядит так:
i:0
tensor([[ 951., 1062., 1173., 1284.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
i:1
tensor([[ 951., 1062., 1173., 1284.],
[1902., 2124., 2346., 2568.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
i:2
tensor([[ 951., 1062., 1173., 1284.],
[1902., 2124., 2346., 2568.],
[2853., 3186., 3519., 3852.],
[ 0., 0., 0., 0.]])
i:3
tensor([[ 951., 1062., 1173., 1284.],
[1902., 2124., 2346., 2568.],
[2853., 3186., 3519., 3852.],
[3804., 4248., 4692., 5136.]])
Это именно то, как мы ожидаем, что это будет так же, как нашиВерсия Excel!
Вот и все! Мы успешно рассмотрели три метода умножения матриц, включая вещание.
Google лист для вышеупомянутой иллюстрации можно найтиВот, Спасибо за чтение! Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться ко мне по адресуhttps://linkedin. com/in/aroraaman/,
Оригинальная статья
Работа с матрицами — Документация по вычислительной статистике и статистическим вычислениям 1.0
В 1]:
импортировать numpy как np
Комбинации матриц и вкладышей
Пост-умножение с вектором
Умножение матрицы на вектор представляет собой линейную комбинацию столбцов матрица
\[\begin{split}\begin{bmatrix} 1 и 2 \\ 3 и 4 \\ 5 и 6 \end{bmatrix} \begin{bматрица} 2\3 \end{bmatrix} = 2 \begin{bmatrix} 1\3\5 \end{bmatrix} + 3 \begin{bmatrix} 2\4\6 \end{bmatrix} = \begin{bматрица} 8\ 18\ 28 \end{bmatrix}\end{split}\]
\[\begin{split}\begin{bmatrix} 1 и 2 \\ 3 и 4 \\ 5 и 6 \end{bmatrix} \begin{bматрица} 1\4 \end{bmatrix} = 1 \begin{bmatrix} 1\3\5 \end{bmatrix} + 4 \begin{bmatrix} 2\4\6 \end{bmatrix} = \begin{bматрица} 9\\ 19\ 29 \end{bmatrix}\end{split}\]
Мы можем расположить столбцы горизонтально, чтобы получить умножение матриц.
\[\begin{split}\begin{bmatrix} 1 и 2 \\ 3 и 4 \\ 5 и 6 \end{bmatrix} \begin{bматрица} 2 и 1\3 и 4 \end{bmatrix} = \begin{bматрица} 8 и 9\\ 18 и 19 \\ 28 и 29 \end{bmatrix}\end{split}\]
В [2]:
A = np.arange(1, 7).reshape((3,2)) x1 = np.массив([2, 3]).изменить форму((2,1)) x2 = np.массив([1,4]).изменить форму((2,1))
В [3]:
А @ х1
Выход[3]:
массив([[ 8], [18], [28]])
В [4]:
А @ х2
Выход[4]:
массив([[ 9], [19], [29]])
В [5]:
np.c_[x1, x2]
Выход[5]:
массив([[2, 1], [3, 4]])
В [6]:
А @np.c_[x1, x2]
Выход[6]:
массив([[ 8, 9], [18, 19], [28, 29]])
Предварительное умножение с вектором
Векторно-матричное умножение представляет собой линейную комбинацию строк матрица
\[\begin{split}\begin{bmatrix} 1 и 2 и 3 \end{bmatrix} \begin{bматрица} 1 и 2 \\ 3 и 4 \\ 5 и 6 \end{bmatrix}= 1 \begin{bmatrix} 1 и 2 \end{bmatrix} + 2 \begin{bmatrix} 3 и 4 \end{bmatrix} + 3 \begin{bmatrix} 5 и 6 \end{bmatrix} = \begin{bматрица} 22 и 28 \end{bmatrix}\end{split}\]
\[\begin{split}\begin{bmatrix} 4 и 5 и 6 \end{bmatrix} \begin{bматрица} 1 и 2 \\ 3 и 4 \\ 5 и 6 \end{bmatrix}= 4 \begin{bmatrix} 1 и 2 \end{bmatrix} + 5 \begin{bmatrix} 3 и 4 \end{bmatrix} + 6 \begin{bmatrix} 5 и 6 \end{bmatrix} = \begin{bматрица} 49 и 64 \end{bmatrix}\end{split}\]
Мы можем сложить строки вертикально, чтобы получить умножение матриц.
\[\begin{split}\begin{bmatrix} 1 и 2 и 3 \\ 4 и 5 и 4 \end{bmatrix} \begin{bматрица} 1 и 2 \\ 3 и 4 \\ 5 и 6 \end{bmatrix} = \begin{bматрица} 22 и 28\ 49& 64 \end{bmatrix}\end{split}\]
Умножение матрицы на матрицу можно рассматривать как горизонтальное наложение операции со столбцами или как вертикальное наложение операций со строками.
В [7]:
y1 = np.массив([1,2,3]).изменить форму((1,3)) y2 = np.массив([4,5,6]).изменить форму((1,3))
В [8]:
у1 @ А
Выход[8]:
массив([[22, 28]])
В [9]:
у2 @ А
Выход[9]:
массив([[49, 64]])
В [10]:
np.r_[y1, y2]
Выход[10]:
массив([[1, 2, 3], [4, 5, 6]])
В [11]:
np.r_[y1, y2] @ A
Выход[11]:
массив([[22, 28], [49, 64]])
Извлечение столбцов матрицы путем постумножения на стандартный единичный вектор-столбец
В [12]:
Выход[12]:
массив([[1, 2], [3, 4], [5, 6]])
В [13]:
e2 = np.array([0,1]).reshape((-1,1)) 9T\) и обратное \(P\) является его обратным, \(P\) — наш первый пример ортогональной матрицы.
В [17]:A = np.arange(1, 17).reshape((4,4)) АВышли[17]:массив([[ 1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])В [18]:I = np.eye(4, dtype='int') яВышли[18]:массив([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])В [19]:Вышли[19]:массив([[ 1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])В [20]:р = I[:, [2,1,3,0]] пИсход[20]:массив([[0, 0, 0, 1], [0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 1, 0]])В [21]:Вышли[21]:массив([[ 3, 2, 4, 1], [7, 6, 8, 5], [11, 10, 12, 9], [15, 14, 16, 13]])В [22]:А@п@п.Т
Вышли[22]:массив([[ 1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])Разбиение матриц
Выше мы видели, что умножение матриц можно рассматривать как отдельные операции над векторами-строками или столбцами. Мы действительно можем разделить матрицы в блоки (не только векторы) для матричного умножения. Предположим, мы хотим вычислить \(AB\), где
\begin{align} А = \begin{bmatrix} 1 и 0 и 1 и 0 \\ 0 и 1 и 0 и 1 \\ 0 и 0 и 2 и 0 \\ 0 и 0 и 0 и 3 \end{bmatrix}&, & B = \begin{bmatrix} 1 и 2 и 3 и 4 \\ 5 и 6 и 7 и 8 \\ 0 и 0 и 1 и 0 \\ 0 и 0 и 0 и 1 \end{bmatrix} \end{выравнивание}
Мы можем рассматривать (скажем) \(A\) и \(B\) как каждое из \(2 \times 2\) матрица, где каждый элемент является \(2 \times 2\) подматрица (или блок). Это упрощает вычисления, так как многие блоки являются единичной или нулевой матрицей.
\begin{align} А = \begin{bmatrix} А_{11} и А_{12} \\ А_{21} и А_{22} \end{bmatrix}&, & B = \begin{bmatrix} Б_{11} и Б_{12} \\ Б_{21} и Б_{22} \end{bmatrix} \end{align}
и
\[\begin{split}AB = \begin{bmatrix} A_{11}B_{11} + A_{12}B_{21} и A_{11}B_{12} + A_{12}B_{22} \\ A_{21}B_{11} + A_{22}B_{22} и A_{21}B_{12} + A_{22}B_{22} \end{bmatrix}\end{split}\]
На самом деле, при проверке мы можем увидеть, что результатом будет
\[\begin{split}AB = \begin{bmatrix} Б_{11} и Б_{12}+I_2 \\ 0_2 и А_{22} \end{bmatrix} = \begin{bmatrix} 1 и 2 и 4 и 4 \\ 5 и 6 и 7 и 9 \\ 0 и 0 и 2 и 0 \\ 0 и 0 и 0 и 3 \end{bmatrix}\end{split}\]
В общем, любая структура подблока, совместимая с матрицей умножение (более формально, \(A\) и \(B\) созвучны для умножения) в порядке.
В частности, блоки не должны быть площадь.
В [23]:a11 = np.глаз(2) a12 = np.глаз(2) a21 = np.zeros ((2,2)) a22 = np.diag ((2,3)) b11 = np.массив([ [1,2], [5,6] ]) b12 = np.массив([ [3,4], [7,8] ]) b21 = np.zeros((2,2)) b22 = np.глаз(2)В [24]:A = np.блок ([ [а11, а12], [а21, а22] ]).astype('целое') АВышли[24]:массив([[1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 2, 0], [0, 0, 0, 3]])В [25]:B = np.блок ([ [б11, б12], [б21, б22] ]).astype('целое') БВышли[25]:массив([[1, 2, 3, 4], [5, 6, 7, 8], [0, 0, 1, 0], [0, 0, 0, 1]])В [26]:Вышли[26]:массив([[1, 2, 4, 4], [5, 6, 7, 9], [0, 0, 2, 0], [0, 0, 0, 3]])В [27]:нп.блок([ [a11@b11 + a12@b21, a11@b12 + a12@b22], [a21@b11 + a22@b21, a21@b12 + a22@b22] ]).astype('целое')
Вышли[27]:массив([[1, 2, 4, 4], [5, 6, 7, 9], [0, 0, 2, 0], [0, 0, 0, 3]])Операции с матрицами
Матрица
Матричная функция: R хочет, чтобы данные вводились по столбцам, начиная с первого столбца
1-й аргумент: c(2,3,-2,1,2,2) значения элементов заполнение столбцов
c() означает сбор
2-й аргумент: 3 количество строк
3-й аргумент: 2 количество столбцовОпределить матрицу A
A <- matrix(c(2, 3, -2, 1 , 2, 2), 3, 2) А## [1] [2] ## [1,] 2 1 ## [2,] 3 2 ## [3,] -2 2Что-то матрица
is.matrix(A)## [1] ИСТИНАЯвляется чем-то векторным
is.vector(A)## [1] ЛОЖЬУмножение на скаляр
Умножить каждый элемент матрицы на скаляр.
с <- 3 с * А## [1] [2] ## [1,] 6 3 ## [2,] 9 6 ## [3,] -6 6Сложение и вычитание матриц
Добавлять (или вычитать) поэлементно.
![]()
Сложение и вычитание матриц требуют, чтобы матрицы имели одинаковые размеры.## [1] [2] ## [1,] 2 1 ## [2,] 3 2 ## [3,] -2 2B <- матрица(с(1, 4, -2, 1, 2, 1), 3, 2) Б## [1] [2] ## [1,] 1 1 ## [2,] 4 2 ## [3,] -2 1С <- А + В С## [1] [2] ## [1,] 3 2 ## [2,] 7 4 ## [3,] -4 3Д <- А - В Д## [1] [2] ## [1,] 1 0 ## [2,] -1 0 ## [3,] 0 1Умножение матриц
Умножение матриц выполняется по столбцам. Матрицы должны быть конформными, т. е. количество столбцов первой матрицы должно равняться количеству строк второй матрицы. Размеры продукта будут иметь то же количество строк, что и первая матрица, и такое же количество столбцов, как и во второй матрице.
А(8,4)*В(4,3) = С(8,3) Математическое обозначение: AD или A*D. Обозначение R: A%*%F <- матрица (c(3, 9, 7, 1), 4, 1) Ф## [1] ## [1,] 3 ## [2,] 9 ## [3,] 7 ## [4,] 1G <- матрица(с(6, 1, 3, 6), 1, 4) грамм## [1] [2] [3] [4] ## [1,] 6 1 3 6Г %*% Ж## [1] ## [1,] 54Ф %*% Г## [1] [2] [3] [4] ## [1,] 18 3 9 18 ## [2,] 54 9 27 54 ## [3,] 42 7 21 42 ## [4,] 6 1 3 6D <- матрица(с(2, -2, 1, 2, 3, 1), 2, 3) Д## [1] [2] [3] ## [1,] 2 1 3 ## [2,] -2 2 1С <- Д %*% А С## [1] [2] ## [1,] 1 10 ## [2,] 0 4С <- А %*% Д С## [1] [2] [3] ## [1,] 2 4 7 ## [2,] 2 7 11 ## [3,] -8 2 -4D <- матрица (с(2, 1, 3), 1, 3) Д## [1] [2] [3] ## [1,] 2 1 3С <- Д %*% А С## [1] [2] ## [1,] 1 10# несоответствующая ошибка С <- А %*% Д## Ошибка: несоответствующие аргументыТранспонирование матрицы
Математические обозначения: A´ или A';.Обозначение R: функция t(A).
Примечание. Транспонирование транспонирования дает исходную матрицу.
В <- т(А) В## [1] [2] [3] ## [1,] 2 3 -2 ## [2,] 1 2 2АТТ <- т(АТ) АТТ## [1] [2] ## [1,] 2 1 ## [2,] 3 2 ## [3,] -2 2Общие векторы
Единичный вектор
U <- матрица(1, 3, 1) U## [1] ## [1,] 1 ## [2,] 1 ## [3,] 1Нулевой вектор
Z <- матрица(0, 3, 1) Z## [1] ## [1,] 0 ## [2,] 0 ## [3,] 0Общие матрицы
Единичная матрица
U <- матрица(1, 3, 2) U## [1] [2] ## [1,] 1 1 ## [2,] 1 1 ## [3,] 1 1Нулевая матрица
Z <- матрица(0, 3, 2) Z## [1] [2] ## [1,] 0 0 ## [2,] 0 0 ## [3,] 0 0Диагональная матрица
S <- матрица(c(2, 3, -2, 1, 2, 2, 4, 2, 3), 3, 3) С## [1] [2] [3] ## [1,] 2 1 4 ## [2,] 3 2 2 ## [3,] -2 2 3D <- диаг.(S) Д
## [1] 2 2 3D <- диаг(диаг(S)) Д## [1] [2] [3] ## [1,] 2 0 0 ## [2,] 0 2 0 ## [3,] 0 0 3Матрица идентичности
Диагональная матрица единиц.
Примечание: A*I = A; Я*В = В;I <- диаг.(3) я## [1] [2] [3] ## [1,] 1 0 0 ## [2,] 0 1 0 ## [3,] 0 0 1Симметричная матрица
Примечание. Если матрица A симметрична, то A' = a.;C <- матрица(с(2, 1, 5, 1, 3, 4, 5, 4, -2), 3, 3) С## [1] [2] [3] ## [1,] 2 1 5 ## [2,] 1 3 4 ## [3,] 5 4 -2КТ <- т(С) КТ## [1] [2] [3] ## [1,] 2 1 5 ## [2,] 1 3 4 ## [3,] 5 4 -2Обратная матрица
Матричный аналог скалярной обратной.
Примечание: А -1 *A = A*A -1 = IA <- матрица (c(4, 4, -2, 2, 6, 2, 2, 8, 4), 3, 3) А## [1] [2] [3] ## [1,] 4 2 2 ## [2,] 4 6 8 ## [3,] -2 2 4AI <- решить(A) ИИ## [1] [2] [3] ## [1,] 1,0 -0,5 0,5 ## [2,] -4,0 2,5 -3,0 ## [3,] 2,5 -1,5 2,0А %*% АИ## [1] [2] [3] ## [1,] 1 0 0 ## [2,] 0 1 0 ## [3,] 0 0 1АИ %*% А## [1] [2] [3] ## [1,] 1 0 0 ## [2,] 0 1 0 ## [3,] 0 0 1Определитель матрицы
C <- matrix(c(2, 1, 6, 1, 3, 4, 6, 4, -2), 3, 3) С## [1] [2] [3] ## [1,] 2 1 6 ## [2,] 1 3 4 ## [3,] 6 4 -2d <- det(C) г## [1] -102Ранг матрицы
Ранг столбца матрицы — это количество линейно независимых столбцов.
A <- матрица(с(2, 3, -2, 1, 2, 2, 4, 7, 0), 3, 3) А## [1] [2] [3] ## [1,] 2 1 4 ## [2,] 3 2 7 ## [3,] -2 2 0матА <- qr(А) матА$ранг## [1] 3A <- матрица(с(2, 3, -2, 1, 2, 2, 4, 6, -4), 3, 3) А## [1] [2] [3] ## [1,] 2 1 4 ## [2,] 3 2 6 ## [3,] -2 2 -4матА <- qr(А) матА$ранг## [1] 2# обратите внимание, столбец 3 в 2 раза больше столбца 1Количество строк и столбцов
X <- матрица(c(3, 2, 4, 3, 2, -2, 6, 1), 4, 2) Икс## [1] [2] ## [1,] 3 2 ## [2,] 2 -2 ## [3,] 4 6 ## [4,] 3 1тусклый(X)## [1] 4 2r <- nrow(X) р## [1] 4с <- ncol(X) с## [1] 2Вычисление сумм столбцов и строк
# обратите внимание на S в верхнем регистре A <- матрица (c (2, 3, -2, 1, 2, 2), 3, 2) А## [1] [2] ## [1,] 2 1 ## [2,] 3 2 ## [3,] -2 2c <- colSums(A) с## [1] 3 5r <- rowSums(A) р## [1] 3 5 0# сумма всех элементов а <- сумма (А) а## [1] 8Вычисление столбца и строки означает
# обратите внимание на заглавную букву M см <- colMeans(A) см## [1] 1.000 1.667
rm <- rowMeans(A) г.м.## [1] 1,5 2,5 0,0# среднее значение всех элементов м <- среднее (А) м## [1] 1.333Горизонтальное объединение
Две соединяемые матрицы должны иметь одинаковое количество строк.
## [1] [2] ## [1,] 2 1 ## [2,] 3 2 ## [3,] -2 2B <- матрица(с(1, 3, 2, 1, 4, 2), 3, 2) Б## [1] [2] ## [1,] 1 1 ## [2,] 3 4 ## [3,] 2 2C <- cbind(A, B) С## [1] [2] [3] [4] ## [1,] 2 1 1 1 ## [2,] 3 2 3 4 ## [3,] -2 2 2 2Вертикальная конкатенация (дополнение)
Две присоединяемые матрицы должны иметь одинаковое количество столбцов.
С <- rсвязать(А, В) С## [1] [2] ## [1,] 2 1 ## [2,] 3 2 ## [3,] -2 2 ## [4,] 1 1 ## [5,] 3 4 ## [6,] 2 2Примеры матриц
Вычисление средних значений столбца вручную, также известное как вычисление вектора среднего значения
## [1] [2] ## [1,] 1 1 ## [2,] 3 4 ## [3,] 2 2o <- матрица(1, 1, nrow(B)) о## [1] [2] [3] ## [1,] 1 1 1# итоги столбца о %*% В## [1] [2] ## [1,] 6 7# количество строк о %*% т(о)## [1] ## [1,] 3# столбец означает решить(о %*% т(о)) %*% (о %*% В)## [1] [2] ## [1,] 2 2,333Семь важных матриц для анализа данных
1) Исходная матрица оценок
# определить исходную матрицу оценок X X <- матрица(с(25, 20, 19, 26, 23, 10, 9, 10, 11, 7, 55, 53, 50, 60, 57), 5, 3) Икс## [1] [2] [3] ## [1,] 25 10 55 ## [2,] 20 9 53 ## [3,] 19 10 50 ## [4,] 26 11 60 ## [5,] 23 7 572) Необработанные суммы квадратов и перекрестных произведений
t(X) %*% X## [1] [2] [3] ## [1,] 2591 1067 6256 ## [2,] 1067 451 2586 ## [3,] 6256 2586 151833) Матрица оценок отклонений
# Вектор средних значений столбца см <- colMeans(X) см## [1] 22,6 9,4 55,0# Создать матрицу среднего ММ <- матрица (см, 5, 3, по ряду = ИСТИНА) мм## [1] [2] [3] ## [1,] 22,6 9,4 55 ## [2,] 22,6 9,4 55 ## [3,] 22,6 9,4 55 ## [4,] 22,6 9,4 55 ## [5,] 22,6 9.4 55
# Матрица оценок отклонений Д <- Х - ММ Д## [1] [2] [3] ## [1,] 2,4 0,6 0 ## [2,] -2,6 -0,4 -2 ## [3,] -3,6 0,6 -5 ## [4,] 3,4 1,6 5 ## [5,] 0,4 -2,4 24) Сумма баллов отклонения квадратов и перекрестных произведений
dsscp <- t(D) %*% D dsscp## [1] [2] [3] ## [1,] 37,2 4,8 41 ## [2,] 4,8 9,2 1 ## [3,] 41,0 1,0 585) Ковариационная матрица
nr <- nrow(D) cov <- 1/(nr - 1) * dsscp крышка## [1] [2] [3] ## [1,] 9,30 1,20 10,25 ## [2,] 1,20 2,30 0,25 ## [3,] 10,25 0,25 14,506) Стандартная матрица оценок
# Диагональная матрица отклонений var <- diag(diag(cov)) вар## [1] [2] [3] ## [1,] 9,3 0,0 0,0 ## [2,] 0,0 2,3 0,0 ## [3,] 0,0 0,0 14,5# Диагональная матрица стандартных отклонений sd <- sqrt(var) сд## [1] [2] [3] ## [1,] 3,05 0,000 0,000 ## [2,] 0,00 1,517 0,000 ## [3,] 0,00 0,000 3,808# Стандартная матрица оценок Z <- D %*% решить(sd) Z## [1] [2] [3] ## [1,] 0,7870 0,3956 0,0000 ## [2,] -0,8526 -0,2638 -0,5252 ## [3,] -1,1805 0,3956 -1,3131 ## [4,] 1,1149 1,0550 1,3131 ## [5,] 0,1312 -1,5825 0,52527) Стандартные суммы баллов квадратов и перекрестных произведений, также известные как корреляционная матрица
1/(nr - 1) * t(Z) %*% Z## [1] [2] [3] ## [1,] 1,0000 0,25946 0,88267 ## [2,] 0,2595 1,00000 0,04329 ## [3,] 0,8827 0,04329 1,00000Вычисление коэффициентов регрессии: регрессия Y на X Y
<- матрица (с (30, 25, 20, 25, 28), 5, 1) Д
## [1] ## [1,] 30 ## [2,] 25 ## [3,] 20 ## [4,] 25 ## [5,] 28
# Создать вектор из единиц о <- матрица (1, 5, 1) о
## [1] ## [1,] 1 ## [2,] 1 ## [3,] 1 ## [4,] 1 ## [5,] 1
# Объединить единицы и X X <- cbind(o, X) Икс
## [1] [2] [3] [4] ## [1,] 1 25 10 55 ## [2,] 1 20 953 ## [3,] 1 19 10 50 ## [4,] 1 26 11 60 ## [5,] 1 23 7 57
b <- решить(t(X) %*% X) %*% t(X) %*% Y б
## [1] ## [1,] 43.2528 ## [2,] 1,9919 ## [3,] -1,7301 ## [4,] -0,8437
Анализ основных компонентов и факторный анализ
# прочитать корреляционную матрицу 5x5 C <- матрица (c(1, 0,5968, 0,6623, 0,6302, 0,6215, 0,5968, 1, 0,6174, 0,5704, 0,6048, 0,6623, 0,6174, 1, 0,6307, 0,5445, 0,6302, 0,5704, 0,6307, 1, 0,4651, 0,6215, 0,6048, 0,5445, 0,4651, 1), 5, 5) # вычислить собственные значения и собственные векторы # собственные значения, также известные как характеристические значения или скрытые значения # собственные векторы, также известные как характеристические векторы или скрытые векторы г <- собственный (С) eval <- значения r$ evec <- r$vectors # анализ главных компонент оценка
## [1] 3,3808 0,5574 0,4068 0,3562 0,2988
## [1] [2] [3] [4] [5] ## [1,] 0,4664 -0,02744 -0,530988 -0,02020 0,7066 ## [2,] 0,4484 0,20776 0,806508 0,05575 0,3197 ## [3,] 0,4588 -0,26083 -0,000789 -0,78020 -0,3358 ## [4,] 0,4356 -0,61095 -0,006783 0,58930 -0,2995 ## [5,] 0,4257 0,71749 -0,259906 0,20126 -0,4427
# нагрузки фактора главного компонента # масштабировать собственные векторы по квадратному корню из собственных значений d <- sqrt (диаг (оценка)) г
## [1] [2] [3] [4] [5] ## [1,] 1,839 0,0000 0,0000 0,0000 0,0000 ## [2,] 0,000 0,7466 0,0000 0,0000 0,0000 ## [3,] 0,000 0,0000 0,6378 0,0000 0,0000 ## [4,] 0,000 0,0000 0,0000 0,5968 0,0000 ## [5,] 0,000 0,0000 0,0000 0,0000 0,5467
pcf_ld <- evec %*% d pcf_ld
## [1] [2] [3] [4] [5] ## [1,] 0,8576 -0,02048 -0,3386581 -0,01206 0,3863 ## [2,] 0,8244 0,15511 0,5143817 0,03327 0,1748 ## [3,] 0,8435 -0,19Джей Джей invC <- решить (C) smc <- diag(5) - решить(diag(diag(invC))) smc
## [1] [2] [3] [4] [5] ## [1,] 0,5886 0,0000 0,0000 0,0000 0,0000 ## [2,] 0,0000 0,5208 0,0000 0,0000 0,0000 ## [3,] 0,0000 0,0000 0,5596 0,0000 0,0000 ## [4,] 0,0000 0,0000 0,0000 0,5003 0,0000 ## [5,] 0,0000 0,0000 0,0000 0,0000 0,4772
# заменить единицы в корреляционной матрице на smcs # R - уменьшенная корреляционная матрица R <- C - diag(5) + smc р
## [1] [2] [3] [4] [5] ## [1,] 0,5886 0,5968 0,6623 0,6302 0,6215 ## [2,] 0,5968 0,5208 0,6174 0,5704 0,6048 ## [3,] 0,6623 0,6174 0,5596 0,6307 0,5445 ## [4,] 0,6302 0,5704 0,6307 0,5003 0,4651 ## [5,] 0,6215 0,6048 0,5445 0,4651 0,4772
# вычислить собственные значения и собственные векторы редуцированной корреляционной матрицы г <- собственный (R) eval <- значения r$ оценка
## [1] 2, 0,05254 -0,04770 -0,10451 -0,16715
# только первые два собственных значения положительны # оценка подмножества: первые два собственных значения d <- sqrt(diag(eval[1:2])) г
## [1] [2] ## [1,] 1,707 0,0000 ## [2,] 0,000 0,2292
# подмножество evec: первые два собственных вектора evec <- r$vectors[ 1:2] даже
## [1] [2] ## [1,] 0,4751 0,02411 ## [2,] 0,4464 -0,28499 ## [3,] 0,4630 0,32391 ## [4,] 0,4312 0,58545 ## [5,] 0,4179-0,68595
# вычислить факторные нагрузки главных осей # нагрузки - это корреляции переменных со скрытыми факторами paf_ld <- evec %*% d paf_ld
## [1] [2] ## [1,] 0,8110 0,005525 ## [2,] 0,7620 -0,065325 ## [3,] 0,7903 0,074245 ## [4,] 0,7360 0,134196 ## [5,] 0,7132 -0,157230
2.

- Последнее обновление
- Сохранить как PDF
- Идентификатор страницы
- 14506
- Кен Каттлер
- Университет Бригама Янга через Lyryx
Следующей важной операцией с матрицами, которую мы рассмотрим, является умножение матриц. Операция умножения матриц — одна из самых важных и полезных из матричных операций. В этом разделе мы также покажем, как умножение матриц связано с линейными системами уравнений. 9{th}\) столбец матрицы-строки.
Матрица \(n\times 1\) \[X=\left[ \begin{array}{c} x_{1} \\ \vdots \\ x_{n} \end{array} \right]\ nonumber \] называется вектор-столбцом . Матрица \(1\times n\) \[X = \left[ \begin{array}{ccc} x_{1} & \cdots & x_{n} \end{array} \right]\nonumber \] называется вектором-строкой .
Мы можем просто использовать термин вектор в этом тексте для обозначения либо столбца, либо вектора-строки. Если мы это сделаем, то из контекста будет ясно, о чем мы говорим.
В этой главе мы снова будем использовать понятие линейной комбинации векторов, как в определении 9.2.2. В этом контексте линейная комбинация представляет собой сумму, состоящую из векторов, умноженных на скаляры. Например, \[\left[ \begin{array}{r} 50 \\ 122 \end{array} \right] = 7\left[ \begin{array}{r} 1 \\ 4 \end{array} \right] +8\left[ \begin{array}{r} 2 \\ 5 \end{array} \right] +9\left[ \begin{array}{r} 3 \\ 6 \end{array} \right]\nonumber \] представляет собой линейную комбинацию трех векторов.
Оказывается, любую систему линейных уравнений можно представить в виде линейной комбинации векторов. На самом деле векторы, которые мы будем использовать, — это всего лишь столбцы соответствующей расширенной матрицы!
Определение \(\PageIndex{2}\): векторная форма системы линейных уравнений
Предположим, что у нас есть система уравнений, заданная \[\begin{array}{c} a_{11}x_{1} +\cdots +a_{1n}x_{n}=b_{1} \\ \vdots \\ a_{m1}x_{1}+\cdots +a_{mn}x_{n}=b_{m} \end {array}\nonumber \] Мы можем выразить эту систему в векторной форме , которая выглядит следующим образом: \[x_1 \left[ \begin{array}{c} a_{11}\\ a_{21}\\ \vdots \\ a_{m1} \end{массив} \right] + x_2 \left[ \begin{array}{c} a_{12}\\ a_{22}\\ \vdots \\ a_{m2} \end{ array} \right] + \cdots + x_n \left[ \begin{array}{c} a_{1n}\\ a_{2n}\\ \vdots \\ a_{mn} \end{array} \right] = \left[ \begin{array}{c} b_1\\ b_2\\ \vdots \\ b_m \end{array} \right]\nonumber \]
Обратите внимание, что каждый используемый здесь вектор представляет собой один столбец соответствующей расширенной матрицы. Существует один вектор для каждой переменной в системе вместе с постоянным вектором.
Первая важная форма умножения матриц — умножение матрицы на вектор. Рассмотрим произведение, заданное \[\left[ \begin{array}{rrr} 1 & 2 & 3 \\ 4 & 5 & 6 \end{array} \right] \left[ \begin{array}{r} 7 \\ 8 \\ 9 \end{array} \right]\nonumber \] Вскоре мы увидим, что это равно \[7\left[ \begin{array}{c} 1 \\ 4 \end{array} \right ] +8\left[ \begin{array}{c} 2 \\ 5 \end{array} \right] +9\left[ \begin{array}{c} 3 \\ 6 \end{array} \right] =\left[ \begin{array}{c} 50 \\ 122 \end{array} \right]\nonumber \ ]
В общих чертах, \[\begin{aligned} \left[ \begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_ {23} \end{массив} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \end{массив} \right] &= \ x_ {1}\left[ \begin{array}{c} a_{11} \\ a_{21} \end{array} \right] +x_{2}\left[ \begin{array}{c} a_{ 12} \\ a_{22} \end{массив} \right] +x_{3}\left[ \begin{array}{c} a_{13} \\ a_{23} \end{массив} \right] \\ &=\left[ \begin{array}{c} a_{11}x_{1}+a_{12}x_{2}+a_{13}x_{3} \\ a_{21}x_{1 }+a_{22}x_{2}+a_{23}x_{3} \end{array} \right] \end{aligned}\] Таким образом, вы берете \(x_{1}\) раз первый столбец, добавьте к \(x_{2}\) раз второй столбец и, наконец, \(x_{3}\) раз третий столбец. {n}x_{j}A_{j}\номер \]
Если мы запишем столбцы \(A\) с точки зрения их записей, они будут иметь вид \[A_{j} = \left[ \begin{array}{c} a_{1j} \\ a_{ 2j} \\ \vdots \\ a_{mj} \end{array} \right]\nonumber \] Тогда мы можем записать произведение \(AX\) как \[AX = x_{1}\left[ \begin {array}{c} a_{11} \\ a_{21} \\ \vdots \\ a_{m1} \end{array} \right] + x_{2}\left[ \begin{array}{c} a_{12} \\ a_{22} \\ \vdots \\ a_{m2} \end{array} \right] +\cdots + x_{n}\left[ \begin{array}{c} a_{1n } \\ a_{2n} \\ \vdots \\ a_{mn} \end{массив} \right]\nonumber \]
Обратите внимание, что умножение матрицы \(m \times n\) на вектор \(n \times 1\) дает вектор \(m \times 1\).
Вот пример.
Пример \(\PageIndex{1}\): вектор, умноженный на матрицу
Вычислить произведение \(AX\) для \[A = \left[ \begin{array}{rrrr} 1 & 2 & 1 & 3 \\ 0 & 2 & 1 & -2 \\ 2 & 1 & 4 & 1 \end{array} \right], X = \left[ \begin{array}{r} 1 \\ 2 \\ 0 \ \ 1 \end{массив} \right]\nonumber \]
Решение
Мы будем использовать определение \(\PageIndex{3}\) для вычисления произведения. Поэтому мы вычисляем произведение \(AX\) следующим образом. \[\begin{align} & 1\left[ \begin{array}{r} 1 \\ 0 \\ 2 \end{array} \right] + 2\left[ \begin{array}{r} 2 \ \ 2 \\ 1 \end{array} \right] + 0\left[ \begin{array}{r} 1 \\ 1 \\ 4 \end{array} \right] + 1 \left[ \begin{array }{r} 3 \\ -2\\ 1 \end{массив} \right] \\ &= \left[ \begin{array}{r} 1 \\ 0 \\ 2 \end{массив} \right] + \left[ \begin{array}{r} 4 \\ 4 \\ 2 \end{array} \right] + \left[ \begin{array}{r} 0 \\ 0 \\ 0 \end{array } \right] + \left[ \begin{array}{r} 3 \\ -2\\ 1 \end{array} \right] \\ &= \left[ \begin{array}{r} 8 \\ 2 \\ 5 \конец{массив} \справа]\конец{выровнено}\]
Используя описанную выше операцию, мы также можем написать систему линейных уравнений в матричной форме . В этой форме мы выражаем систему как матрицу, умноженную на вектор. Рассмотрим следующее определение.
Определение \(\PageIndex{4}\): матричная форма системы линейных уравнений
Предположим, что у нас есть система уравнений, заданная \[\begin{array}{c} a_{11}x_{1} +\cdots +a_{1n}x_{n}=b_{1} \\ a_{21}x_{1}+ \cdots + a_{2n}x_{n} = b_{2} \\ \vdots \\ a_{m1}x_{1}+\cdots +a_{mn}x_{n}=b_{m} \end{array}\nonumber \] Тогда мы можем выразить эту систему в матрица формы выглядит следующим образом. \[\left[ \begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \ \ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{массив} \right] = \left[ \begin{массив}{c} b_{1}\\ b_{2} \\ \vdots \\ b_{m} \end{array} \right]\nonumber \]
Выражение \(AX=B\) также известно как Матрица Форма соответствующей системы линейных уравнений. Матрица \(A\) - это просто матрица коэффициентов системы, вектор \(X\) - вектор-столбец, построенный из переменных системы, и, наконец, вектор \(B\) - это вектор-столбец, построенный из константы системы. Важно отметить, что в таком виде можно записать любую систему линейных уравнений.
Обратите внимание, что если мы запишем однородную систему уравнений в матричной форме, она будет иметь вид \(AX=0\) для нулевого вектора \(0\).
Из этого определения видно, что вектор \[X = \left[ \begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{array} \right]\nonumber \] будет удовлетворять уравнению \(AX=B\) только тогда, когда элементы \(x_{1}, x_{2}, \cdots, x_{n}\) вектора \(X\ ) являются решениями исходной системы.
Теперь, когда мы рассмотрели, как умножать матрицу на вектор, мы хотим рассмотреть случай, когда мы умножаем две матрицы более общих размеров, хотя, как мы увидим, эти размеры все еще должны быть подходящими. Например, в примере \(\PageIndex{1}\) мы умножили матрицу \(3 \times 4\) на вектор \(4 \times 1\). Мы хотим исследовать, как умножать другие размеры матриц.
Мы еще не дали никаких условий, когда возможно умножение матриц! Для матриц \(A\) и \(B\), чтобы образовать произведение \(AB\), количество столбцов \(A\) должно равняться количеству строк \(B.\) Рассмотрим произведение \(AB\), где \(A\) имеет размер \(m\times n\), а \(B\) имеет размер \(n \times p\). Затем произведение с точки зрения размера матриц определяется как \[(m\times\overset{\text{они должны совпадать!}}{\widehat{n)\;(n}\times p})=m\ раз p\номер\]
Обратите внимание, что две внешние цифры обозначают размер продукта. Одно из важнейших правил умножения матриц заключается в следующем. Если два средних числа не совпадают, вы не можете умножать матрицы!
Когда количество столбцов \(A\) равно количеству строк \(B\), говорят, что две матрицы созвучны , а произведение \(AB\) получается следующим образом. {th}\) столбец \(AB\).
Рассмотрим следующий пример.
Пример \(\PageIndex{2}\): умножение двух матриц
Найдите \(AB\), если возможно. \[A = \left[ \begin{array}{rrr} 1 & 2 & 1 \\ 0 & 2 & 1 \end{array} \right], B = \left[ \begin{array}{rrr} 1 & 2 & 0 \\ 0 & 3 & 1 \\ -2 & 1 & 1 \end{array} \right]\nonumber \]
Решение
Первое, что вам нужно проверить при вычислении произведения, это то, возможно умножение. Первая матрица имеет размер \(2\times 3\), а вторая матрица имеет размер \(3\times 3\). Внутренние числа равны, поэтому матрицы \(A\) и \(B\) созвучны. Согласно приведенному выше обсуждению, \(AB\) будет матрицей \(2\times 3\). Определение \(\PageIndex{5}\) дает нам способ вычислить каждый столбец \(AB\) следующим образом.
\[\left[ \overset{ \text{Первый столбец}}{\overbrace{\left[ \begin{array}{rrr} 1 & 2 & 1 \\ 0 & 2 & 1 \end{array} \ right] \left[ \begin{array}{r} 1 \\ 0 \\ -2 \end{array} \right] }},\overset{\text{Второй столбец}}{\overbrace{\left[ \ begin{array}{rrr} 1 & 2 & 1 \\ 0 & 2 & 1 \end{array} \right] \left[ \begin{array}{r} 2 \\ 3 \\ 1 \end{array} \right] }},\overset{\text{Третий столбец}}{\overbrace{\left[ \begin{array}{rrr} 1 & 2 & 1 \\ 0 & 2 & 1 \end{массив} \right ] \left[ \begin{array}{r} 0 \\ 1 \\ 1 \end{array} \right] }}\right]\nonumber \] Вы знаете, как умножить матрицу на вектор, используя Определение \ (\PageIndex{3}\) для каждого из трех столбцов. Таким образом, \[\left[ \begin{array}{rrr} 1 & 2 & 1 \\ 0 & 2 & 1 \end{array} \right] \left[ \begin{array}{rrr} 1 & 2 & 0 \\ 0 & 3 & 1 \\ -2 & 1 & 1 \end{массив} \right] = \ \left[ \begin{массив}{rrr} -1 & 9& 3 \\ -2 & 7 & 3 \end{array} \right]\nonumber \]
Поскольку векторы представляют собой просто \(n \times 1\) или \(1 \times m\) матрицы, мы также можем умножить вектор на другой вектор.
Пример \(\PageIndex{3}\): умножение вектора на вектор
Умножить, если возможно \(\left[ \begin{array}{r} 1 \\ 2 \\ 1 \end{array} \right] \ left[ \begin{array}{rrrr} 1 & 2 & 1 & 0 \end{array} \right] .\)
Решение
В этом случае мы умножаем матрицу размера \(3 \times 1\ ) матрицей размера \(1 \times 4.\) Внутренние числа совпадают, поэтому произведение определено. Обратите внимание, что произведение будет матрицей размера \(3 x 4\). Используя определение \(\PageIndex{5}\), мы можем вычислить это произведение следующим образом \(\: \) \[\left[ \begin{array}{r} 1 \\ 2 \\ 1 \end{array} \right] \left[ \begin{array}{rrrr} 1 & 2 & 1 & 0 \end{array} \right] = \left[ \overset{ \text{Первый столбец}}{\overbrace{\left[ \begin{array}{r} 1 \\ 2 \\ 1 \end{массив} \right] \left[ \begin{array}{r} 1 \end{массив} \right] }},\overset{\ text{Второй столбец}}{\overbrace{\left[ \begin{array}{r} 1 \\ 2\\ 1 \end{массив} \right] \left[ \begin{array}{r} 2 \end {массив} \right] }},\overset{\text{Третий столбец}}{\overbrace{\left[ \begin{array}{r} 1 \\ 2 \\ 1 \end{массив} \right] \ left[ \begin{array}{r} 1 \end{array} \right] }}, \overset {\text{Четвертый столбец}}{\overbrace{\left[ \begin{array}{r} 1\\ 2\\ 1 \end{массив} \right] \left[ \begin{array}{r} 0 \end{массив} \right]}} \right]\nonumber \]
Вы можете использовать определение \(\PageIndex{3}\), чтобы убедиться, что этот продукт является \[\left[ \begin{array}{cccc} 1 & 2 & 1 & 0 \\ 2 & 4 & 2 & 0 \\ 1 & 2 & 1 & 0 \end{массив} \right]\nonumber \]
Пример \(\PageIndex{4}\): умножение, которое не определено
Найдите \(BA\), если возможно. \[B = \left[ \begin{array}{ccc} 1 & 2 & 0 \\ 0 & 3 & 1 \\ -2 & 1 & 1 \end{array} \right], A = \left[ \ begin{массив}{ccc} 1 & 2 & 1 \\ 0 & 2 & 1 \end{массив} \right]\nonumber \]
Решение
Сначала проверьте, возможно ли это. Это произведение имеет вид \(\влево( 3\умножить на 3\вправо) \влево( 2\умножить на 3\вправо).\) Внутренние числа не совпадают, поэтому вы не можете выполнить это умножение.
В этом случае мы говорим, что умножение не определено. Обратите внимание, что это те же матрицы, которые мы использовали в примере \(\PageIndex{2}\). В этом примере мы попытались вычислить \(BA\) вместо \(AB\). Это демонстрирует еще одно свойство матричного умножения. Хотя произведение \(AB\) может быть определено, мы не можем предполагать, что произведение \(BA\) будет возможно. Поэтому важно всегда проверять, определено ли произведение, прежде чем выполнять какие-либо расчеты.
Ранее мы определили нулевую матрицу \(0\) как матрицу (соответствующего размера), содержащую нули во всех элементах. Рассмотрим следующий пример умножения на нулевую матрицу.
Пример \(\PageIndex{5}\): умножение на нулевую матрицу
Вычислить произведение \(A0\) для матрицы \[A= \left[ \begin{array}{rr} 1 & 2 \\ 3 & 4 \end{array} \right]\nonumber \] и \(2 \times 2\) нулевая матрица, заданная как \[0= \left[ \begin{array}{rr} 0 & 0 \\ 0 & 0 \end{массив} \right]\nonumber \]
Решение
В этом продукте мы вычисляем \[\left[ \begin{array}{rr} 1 & 2 \\ 3 & 4 \end{array} \right] \left[ \begin{array}{rr } 0 & 0 \\ 0 & 0 \end{массив} \right] = \left[ \begin{array}{rr} 0 & 0 \\ 0 & 0 \end{массив} \right]\nonumber \]
Следовательно, \(A0=0\).
Обратите внимание, что мы также можем умножить \(A\) на \(2 \times 1\) нулевой вектор, заданный как \(\left[ \begin{array}{r} 0 \\ 0 \end{array} \ Правильно]\). Результатом будет \(2 \times 1\) нулевой вектор. Поэтому всегда имеет место \(A0=0\) для нулевой матрицы или вектора соответствующего размера.
Эта страница под названием 2. 2: Умножение матриц распространяется под лицензией CC BY 4.0 и была создана, изменена и/или курирована Кеном Каттлером (Lyryx) с использованием исходного контента, который был отредактирован в соответствии со стилем и стандартами платформы LibreTexts; подробная история редактирования доступна по запросу.
- Наверх
- Была ли эта статья полезной?
- Тип изделия
- Раздел или страница
- Автор
- Кен Каттлер
- Лицензия
- СС BY
- Версия лицензии
- 4,0
- Показать страницу TOC
- нет
- Теги
- источник@https://lyryx.
com/first-course-linear-алгебра
- источник@https://lyryx.
Объяснение урока: Умножение матриц | Nagwa
В этом объяснении мы узнаем, как определить условия для матрицы умножение и вычисление произведения двух матриц, если это возможно.
Начнем с того, что вспомним скалярное умножение, которое намного проще, чем умножение матриц. Скалярное умножение включает в себя умножение матрицы скаляром (или числом). Например, рассмотрим матрицу 𝐴=2132.
Если бы мы хотели умножить эту матрицу на скаляр 2, мы бы умножили каждый из компоненты матрицы на 2: 2×𝐴=2×22×12×32×2=4264.
Мы видим, что умножить матрицу на скаляр очень просто. Однако это намного сложнее умножить матрицу на другую матрицу. Прежде чем мы сможем обсуждать, как умножить матрицу на другую матрицу, нам нужно понять когда можно перемножить пару матриц.
Напомним, что порядок матрицы определяется выражением ()×().количество строкколичество столбцов
Например, матрица с 𝑚 строк и 𝑛 столбцов называется
матрица 𝑚×𝑛. Чтобы перемножить пару матриц, их порядки
должны быть совместимы.
Правило: критерий умножения матриц
Пусть 𝐴 и 𝐵 — матрицы. Чтобы вычислить матрицу умножение 𝐴×𝐵, количество столбцов в 𝐴 должно равняться количеству строк в 𝐵. Если 𝐴 — матрица 𝑚×𝑛 для некоторого положительного целые числа 𝑚 и 𝑛, 𝐵 обязательно быть матрицей 𝑛×𝑝 для некоторого положительного целого числа 𝑝. В этом случае 𝐴×𝐵 является 𝑚×𝑝 матрица.
Из этого критерия умножения матриц видно, что
𝐴×𝐵 не то же самое, что
𝐵×𝐴 для матриц 𝐴 и 𝐵. На самом деле, возможно, что один из них может быть определен, а другой
не является. Например, скажем, что матрицы 𝐴 и
𝐵 в порядке
1×2 и 2×3 соответственно. Тогда количество столбцов
𝐴 равно количеству строк 𝐵,
который
означает, что умножение матриц 𝐴×𝐵 определено. С другой стороны, количество столбцов 𝐵 не равно
к количеству рядов 𝐴. Это означает, что матрица
умножение 𝐵×𝐴 не определено. Это говорит нам о том, что матрица
умножение некоммутативно, а это означает, что порядок матриц
в умножении матриц изменить нельзя.
В первом примере мы найдем порядок матрицы, полученной из умножение матриц.
Пример 1. Порядок матриц при умножении матриц
Заполните пропуск: Если 𝐴 — матрица порядка 2×3 и 𝐵 — матрица порядка 1×3, то матрица 𝐴𝐵 имеет порядок .
- 3×1
- 2×1
- 1×2
- 3×2
Ответ
Напомним, что количество столбцов матрицы 𝐴 должно быть равным количеству строк в матрице 𝐵 для вычисления умножение матриц 𝐴×𝐵. Мы также вспоминаем что порядок матрицы определяется выражением ()×().количество строкколичество столбцов
Поскольку порядок матрицы 𝐴 равен
2×3, это говорит нам о том, что количество столбцов
в матрице 𝐴 равно 3. Порядок
𝐵 равно 1×3, что означает
эта матрица 𝐵 имеет 1 строку и 3 столбца. 𝐵 является транспонированием 𝐵, и
мы знаем, что транспонирование матрицы меняет строки матрицы на
столбцы его транспонировать. Поскольку транспонирование
𝐵 имеет 1 строку и 3 столбца, матрица
𝐵 должно быть 3 строки и 1 столбец. Это говорит нам
что количество столбцов в матрице 𝐴 и
количество строк в матрице 𝐵 равно 3,
что означает, что умножение матриц допустимо.
Напомним, что умножение матрицы порядка 𝑚×𝑛 матрицей порядка 𝑛×𝑝 приводит к матрице порядка 𝑚×𝑝. В этом примере мы умножение матрицы 2×3 на Матрица 3×1. Это означает 𝑚×𝑛=2×3,𝑛×𝑝=3×1.
Следовательно, 𝑚=2, 𝑛=3 и 𝑝=1. Порядок матрицы 𝐴𝐵 равен 𝑚×𝑝=2×1. Это вариант B.
В следующем примере мы найдем порядок матрицы умножается на основе порядка матрицы произведения, а также порядка другой матрицы.
Пример 2: Порядок матриц при умножении матриц
Заполните пропуск: Если матрица 𝐴 имеет порядок 2×3 и матрица 𝐴𝐵 имеет порядок 2×1, тогда матрица 𝐵 по порядку.
- 1×3
- 2×1
- 1×2
- 3×1
Ответ
Напомним, что количество столбцов в матрице 𝐴 должно
быть равным количеству строк в матрице 𝐵 до
вычислить умножение матриц 𝐴×𝐵. Напомним также, что порядок матрицы определяется выражением
()×().количество строкколичество столбцов
Поскольку порядок матрицы 𝐴 равен 2×3, это говорит нам о том, что количество столбцов в матрице 𝐴 равно 3. Это число должно равняться количество строк в матрице 𝐵. Следовательно, количество строк в матрице 𝐵 должно быть равно 3.
Напомним также, что количество строк в матрице 𝐴𝐵 равно количеству строк в матрице 𝐴, а также количество столбцов в 𝐴𝐵 равно количеству столбцов в матрице 𝐵. Нам дано, что матрица 𝐴 есть порядка 2×3 и матрица 𝐴𝐵 имеет порядок 2×1, и мы видим, что количество строк в матрицах 𝐴 и 𝐴𝐵 одинаковы. Поскольку матрица 𝐴𝐵 имеет 1 столбец, это говорит нам о том, что число столбцов в 𝐵 должно быть равно 1,
Следовательно, матрица 𝐵 имеет порядок 3×1. Это вариант D.
В следующем примере мы проверим критерий умножения матриц на определить, корректно ли определено данное матричное умножение.
Пример 3.

Учитывая, что 𝐴=512−3−4−3,𝐵=1−25−4, определить 𝐴𝐵, если это возможно.
Ответ
Напомним, что количество столбцов в матрице 𝐴 должно равно количеству строк в матрице 𝐵 для вычисления умножение матриц 𝐴×𝐵. Мы также вспоминаем что порядок матрицы определяется выражением ()×().количество строкколичество столбцов
Мы видим, что матрица 𝐴 имеет 2 строки и 3 столбца. а матрица 𝐵 имеет 2 строки и 2 столбца. Поскольку количество столбцов в 𝐴 не равно количеству строк в матрице 𝐵, умножение матриц 𝐴𝐵 не определено.
В предыдущих примерах мы рассмотрели свойство порядка матриц в умножении матриц. Теперь, когда мы знаем, когда пара матриц может быть умножаются, рассмотрим, как перемножать матрицы. Простейший умножение матриц - это умножение матрицы-строки на столбец матрица.
Практическое руководство. Умножение матриц-строк на матрицы-столбцы
Пусть 𝐴 и 𝐵 будут матрицами-строками и матрицами-столбцами
соответственно. Тогда матрица 𝐴𝐵 корректно определена и имеет порядок
1×1. Запись этой матрицы получается
умножение каждой записи в матрице-строке на соответствующую запись в матрице
матрица столбцов, а затем суммирование всех продуктов.
Мы продемонстрируем этот процесс в следующем примере.
Пример 4. Нахождение произведения двух заданных матриц
Рассмотрим матрицы 𝐴=(12−7),𝐵=−46−2.
Найдите 𝐴𝐵, если возможно.
Ответ
Мы знаем, что умножение матриц возможно, только если количество столбцов первой матрицы совпадает с количеством строк вторая матрица. Заметим, что количество столбцов первого матрица 𝐴 и количество строк второго обе матрицы 𝐵 равны 3, поэтому возможно вычислить умножение матриц 𝐴𝐵.
Мы также знаем, что умножение
матрица 𝑚×𝑛 на
матрица 𝑛×𝑝 дает
𝑚×𝑝 матрица. Мы видим, что заказы
матрицы 𝐴 и 𝐵 являются
1×3 и 3×1
соответственно. Следовательно, 𝑚=1, 𝑛=3 и
𝑝=1. Это говорит нам о том, что матрица
𝐴𝐵 имеет порядок 𝑚×𝑝=1×1.
Поскольку матрица 𝐴 имеет только одну строку, это строка матрица. Точно так же матрица 𝐵 является матрицей-столбцом. Напомним, что мы можем умножить матрицу-строку на матрицу-столбец на умножая каждую запись в матрице 𝐴 на соответствующая запись в столбце 𝐵 и суммирование все продукты. В следующем расчете мы выделили соответствующие записи в каждой матрице одного цвета: 𝐴𝐵=(12−7)−46−2=(1×(−4)+2×6+(−7)×(−2))=(−4+12+14)=[22].
Мы видим, что порядок 𝐴𝐵 равен 1×1, как и ожидалось.
Следовательно, 𝐴𝐵=[22].
В предыдущем примере мы умножили матрицу строк на матрицу столбцов, что в результате получилась матрица с одной записью путем умножения 𝑗-й записи матрицу-строку по 𝑗-му элементу матрицы-столбца и суммируя все продукты. В результирующей матрице была только одна запись, потому что первая матрица в умножении матриц была одна строка, а во второй матрице - один столбец.
Этот процесс можно обобщить для умножения любой пары матриц на совместимые
заказы, где результирующая матрица может иметь несколько записей. Чтобы умножить
матрица с несколькими строками на матрицу с несколькими столбцами, нам нужно выбрать
одна строка из первой матрицы и один столбец из второй матрицы. Рассматривая выбранную строку и столбец как матрицы строк и столбцов соответственно,
мы можем умножить матрицу строк и матрицу столбцов, используя метод
введены ранее. Продолжаем этот процесс до тех пор, пока каждый из рядов
первая матрица умножается на каждый из столбцов второй
матрица.
Практическое руководство. Перемножение матриц
Пусть 𝐴 и 𝐵 — матрицы порядков 𝑚×𝑛 и 𝑛×𝑝 соответственно. Для каждого 𝑖=1,2,…,𝑚 и 𝑗=1,2,…,𝑝, мы можем вычислить запись в 𝑖-й строке и 𝑗-м столбце матрицы 𝐴𝐵 путем умножения 𝑖-й строки 𝐴 по 𝑗й столбец 𝐵.
Мы знаем, что если умножить матрицу порядка 𝑚×𝑛 на матрицу порядка 𝑛×𝑝, мы получаем матрицу порядка 𝑚×𝑝. Это означает, что нам необходимо вычислить это 𝑚×𝑝 раз, чтобы заполнить матрицу умножение.
Продемонстрируем этот процесс графически, умножив
Матрица 3×2 на матрицу 2×3. Мы знаем, что полученная матрица будет порядка
3×3, а это значит, что нам нужно умножить строку
столбиком 9 раз. Рассмотрим следующие матрицы:
𝐴=2−42−144,𝐵=5−1−2316.
Мы видим, что матрица 𝐴 имеет 2 столбца и матрицу 𝐵 имеет 2 ряда. Следовательно, мы можем вычислить произведение 𝐴𝐵. Мы также знаем, что товар будет в порядке 3×3. Во-первых, мы можем умножить первую строку на первую столбец, чтобы найти запись в первой строке и первом столбце матрицы 𝐴𝐵:
Далее умножаем первую строку 𝐴 на вторую колонку 𝐵 для получения
Этот процесс продолжается до тех пор, пока мы не закончим умножение матриц:
Пример 5: Нахождение произведения двух заданных матриц
Учитывая, что 𝐴=−3−7−1341,𝐵=6−43, найти 𝐴𝐵 если возможно.
Ответ
Мы знаем, что умножение матриц возможно, только если количество
столбцов первой матрицы совпадает с количеством строк второй
матрица. Заметим, что количество столбцов первой матрицы
𝐴 и количество строк второй матрицы
𝐵 оба равны 3, поэтому можно
вычислить умножение матриц 𝐴𝐵.
Мы также знаем, что умножение матрица 𝑚×𝑛 на матрица 𝑛×𝑝 дает 𝑚×𝑝 матрица. Мы видим, что заказы матрицы 𝐴 и 𝐵 являются 2×3 и 3×1 соответственно. Следовательно, 𝑚=2, 𝑛=3, и 𝑝=1. Это говорит нам о том, что матрица 𝐴𝐵 в порядке 𝑚×𝑝=2×1. Нам нужно вычислить элементов этой матрицы.
Напомним, что запись в 𝑖-й строке и 𝑗й столбец матрицы 𝐴𝐵 равен получается умножением 𝑖-й строки 𝐴 по 𝑗й колонке 𝐵. Начнем с того, что возьмем первый ряд 𝐴, которую можно записать в виде матрицы-столбца (−3−7−1). Так же берем первую (и единственную) столбец 𝐵, который можно записать как столбец матрица 6−43. Умножение каждой записи в матрице строк на соответствующую запись в матрице столбцов, а затем суммируя все продукты, (−3−7−1)6−43=[−3×6+(−7)×(−4)+(−1)×3]=[7].
Так как это произведение первой строки 𝐴 и первый столбец 𝐵, это говорит нам о том, что 7 — это запись в первой строке и первом столбце матрицы 𝐴𝐵.
Далее умножаем вторую строку 𝐴,
(341), по первому столбцу
𝐵,
6−43, что приводит к
(341)6−43=[3×6+4×(−4)+1×3]=[5].
Следовательно, 5 — это запись во второй строке и первом столбце матрицы 𝐴𝐵. Это ведет к 𝐴𝐵=75.
В предыдущем примере мы перемножили пару матриц, у которых были совместимые заказы. Мы сделали это, взяв подматрицы-строки первой матрицы и подматрицы столбцов второй матрицы, а затем их умножение вместе. Хотя это правильный процесс для умножения двух матриц, неэффективно каждый раз записывать матрицы строк и столбцов. Вместо этого мы можем сократить эти вычисления, написав произведение соответствующие матрицы строк и столбцов в каждой записи результирующего матрица, как видно из следующей формулы.
Определение: умножение матриц
Пусть 𝐴 и 𝐵 — матрицы порядков 𝑚×𝑛 и 𝑛×𝑝, соответственно, заданный 𝐴 = ⎛⎜⎜⎝𝑎𝑎 ⋯ ⋯ 𝑎 ⋮⋮ ⋱ ⋮ 𝑎𝑎 ⋯ 𝑎⎞⎟⎟⎠, 𝐵 = ⎛⎜⎜⎜⎝𝑏𝑏 𝑏𝑏𝑏 ⋯ 𝑏 ⋮⋮ ⋱ ⋮ 𝑏𝑏… 𝑏⎞⎟⎟⎟⎠. Тогда матрица произведения 𝑚×𝑝 и определяется как 𝐴𝐵=⎛⎜⎜⎝𝑐𝑐⋯𝑐𝑐𝑐⋯𝑐⋮⋮⋱⋮𝑐𝑐⋯𝑐⎞⎟⎟⎠, куда 𝑐=𝑎𝑏=𝑎𝑏+⋯+𝑎𝑏.
В следующем примере мы умножим пару матриц по этой формуле.
Пример 6. Нахождение произведения двух заданных матриц
Рассмотрим матрицы 𝐴=11−2−4477,𝐵=−8−96−489.
Найдите 𝐴𝐵, если возможно.
Ответ
Мы знаем, что умножение матриц возможно, только если количество столбцов первой матрицы совпадает с количеством строк второй матрица. Заметим, что количество столбцов первой матрицы 𝐴 и количество строк второй матрицы 𝐵 оба равны 2, поэтому можно вычислить умножение матриц 𝐴𝐵.
Мы также знаем, что умножение матрица 𝑚×𝑛 на матрица 𝑛×𝑝 дает 𝑚×𝑝 матрица. Мы видим, что заказы матрицы 𝐴 и 𝐵 являются 3×2 и 2×3 соответственно. Следовательно, 𝑚=3, 𝑛=2, и 𝑝=3. Это говорит нам о том, что матрица 𝐴𝐵 в порядке 𝑚×𝑝=3×3. Нам нужно вычислить 9 элементов этой матрицы.
Напомним, что запись в 𝑖-й строке и 𝑗й столбец матрицы 𝐴𝐵 равен получается путем умножения каждой записи 𝑖th строку 𝐴 соответствующей записью 𝑗-й столбец 𝐵, а затем суммируя все произведения.
Например, чтобы получить запись в первой строке и первом столбце
матрицы 𝐴𝐵 нам нужно умножить первую строку
матрица 𝐴, (11−2), на
матрица первого столбца 𝐵,
−8−4. Это означает, что мы умножаем каждую запись в матрице строк на
соответствующую запись в матрице столбцов, а затем просуммировать все продукты. Это дает
11×(−8)+(−2)×(−4)=−80.
Следовательно, запись в первой строке и первом столбце матрицы 𝐴𝐵 равно −80. Мы можем продолжить в таким же образом, пока мы не заполним матрицу 3 × 3: 11−2−4477−8−96−489=11×(−8)+(−2)×(−4)11×(−9)+(−2)×811×6+(−2)×9(−4)×( −8)+4×(−4)(−4)×(−9)+4×8(−4)×6+4×97×(−8)+7×(−4)7×(−9 )+7×87×6+7×9=−80−11548166812−84−7105.
В этом объяснении мы обсудили, как умножить две матрицы совместимых
заказы. Заметим, что матричное умножение сильно отличается от
умножение двух действительных чисел, так как оно имеет более сложную структуру. Хотя трудно понять, почему нам нужно определить матричное умножение в этом
образом, есть веская причина для этого. Эта причина станет яснее
по мере того, как мы узнаем о более сложных темах по матрицам. Тем не менее, мы можем видеть
проблеск этой причины, когда мы рассматриваем реальный пример, который может быть решен
с помощью умножения матриц.
В нашем последнем примере мы рассмотрим реальное применение матрицы умножение.
Пример 7. Решение задач Word путем применения операций над матрицами
В таблице ниже показано количество номеров различных типов в трех отелях, принадлежащих Компания. Если одноместный номер стоит 160 LE за ночь, двухместный номер стоит 430 египетских фунтов за ночь, а люкс стоит 740 LE за ночь, определите ежедневный доход компании, когда все помещения заняты.
Hotel | Single Room | Double Room | Suite |
---|---|---|---|
First Hotel | 45 | 74 | 15 |
Second Hotel | 48 | 74 | 19 |
Третий отель | 49 | 94 | 10 |
Ответ
В этом примере нам нужно определить ежедневный доход компании, когда
все комнаты заняты. Эта компания владеет тремя гостиницами, а
количество номеров каждого типа указано в данной таблице. Если мы
взять только числа в таблице, мы можем составить
Матрица 3 × 3, которую мы можем записать как
457415487419499410.
Первый столбец этой матрицы представляет количество одиночных номера в каждом отеле. Чтобы рассчитать доход компании от этих номера, нам нужно умножить эти цифры на 160 LE, что является стоимость одноместного номера. Точно так же нам нужно умножить второе колонка на 430 ЛЭ, это стоимость двухместного номера. Таким же образом записи в третьем столбце следует умножить на 740 LE, что составляет стоимость люкса. В итоге мы можем получить суммарный дневной дохода путем суммирования всех элементов полученной матрицы: 45×16074×43015×74048×16074×43019×74049×16094×43010×740.
Если суммировать записи в каждой строке, мы получим
45×160+74×430+15×74048×160+74×430+19×74049×160+94×430+10×740. | (1) |
Запись в каждой строке приведенной выше матрицы показывает нам ежедневный доход от
каждый отель. Мы можем закончить вычисление, найдя каждую запись выше и
суммирование записей. Но давайте остановимся здесь на секунду, чтобы отметить, что
приведенная выше матрица также может быть получена, когда мы умножаем наш исходный
матрица 3×3 на матрицу-столбец, содержащую
стоимость каждого типа номера:
457415487419499410160430740.
Рассмотрим это умножение. Мы знаем эту матрицу умножение возможно только в том случае, если число столбцов первая матрица совпадает с количеством строк второй матрицы. Мы обратите внимание, что количество столбцов первой матрицы и число строк второй матрицы равны 3, поэтому возможно чтобы вычислить это матричное умножение.
Мы также знаем, что можно умножить пару матриц путем умножения
каждой строке первой матрицы по каждому столбцу второй матрицы. Умножим первую строку 3×3
матрица, (457415), по столбцу второй матрицы,
160430740. Это означает, что
мы умножаем каждую запись в матрице строк на соответствующую
запись в матрице столбцов, а затем просуммируйте все продукты. Это дает
45×160+74×430+15×740,
что совпадает с первой строкой матрицы, приведенной в
(1). Точно так же мы можем видеть, что умножение
вторая и третья строки матрицы 3×3
по матрице столбцов приводит к элементам во втором и третьем
строки матрицы в (1). Вычисление каждого
запись в (1) дает нам
457415487419499410160430740=501205356055660.
Суммируя все записи, мы имеем 50120+53560+55660=159340.
Следовательно, когда все комнаты заняты, компания Ежедневный доход составляет 159 340 LE.
Давайте закончим повторением нескольких важных понятий из этого объяснения.
Ключевые точки
- Пусть 𝐴 и 𝐵 — матрицы. К вычислить умножение матриц 𝐴×𝐵, число столбцов в 𝐴 должно быть равно количеству строк в 𝐵. Если 𝐴 является матрица 𝑚×𝑛 для некоторых натуральных чисел 𝑚 и 𝑛, 𝐵 должны быть матрица 𝑛×𝑝 для некоторого положительного целого числа 𝑝. В этом случае 𝐴×𝐵 является 𝑚×𝑝 матрица:
- Пусть 𝐴 и 𝐵 будут строкой и столбцом
матрицы соответственно.
Тогда матрица 𝐴𝐵 равна определена и имеет порядок 1×1. Вход этой матрицы получается путем умножения каждой записи в строке матрица соответствующей записью в матрице-столбце, а затем суммируя все произведения.
- Пусть 𝐴 и 𝐵 — матрицы заказы 𝑚×𝑛 и 𝑛×𝑝, соответственно, определяется как 𝐴 = ⎛⎜⎜⎝𝑎𝑎 ⋯ ⋯ 𝑎 ⋮⋮ ⋱ ⋮ 𝑎𝑎 ⋯ 𝑎⎞⎟⎟⎠, 𝐵 = ⎛⎜⎜⎜⎝𝑏𝑏 𝑏𝑏𝑏 ⋯ 𝑏 ⋮⋮ ⋱ ⋮ 𝑏𝑏… 𝑏⎞⎟⎟⎟⎠. Тогда матрица произведения 𝐴𝐵 имеет порядок 𝑚×𝑝 и определяется как 𝐴𝐵=⎛⎜⎜⎝𝑐𝑐⋯𝑐𝑐𝑐⋯𝑐⋮⋮⋱⋮𝑐𝑐⋯𝑐⎞⎟⎟⎠, куда 100705
Умножение матриц
В этом упражнении мы изучим как строки, так и столбцы изображения умножения матриц. Чтобы добиться успеха в линейной алгебре, крайне важно не ограничивать себя только одной формой умножения матриц. Очень важно, чтобы вы могли легко обрабатывать как строковую, так и столбцовую форму умножения матриц.
Умножение матрицы на вектор-столбец
Мы начинаем изучение умножения матриц с нашего первого примера, умножая матрицу $C$ на вектор-столбец ${\bf x}$.
$$ С {\ бф х} =\begin{bmatrix} 1 и 4 и 7\\ 2 и 5 и 8\\ 3 и 6 и 9 \end{bmatrix} \begin{bматрица} -1\\3\\-5 \end{bmatrix}$$
Введите столбцы матрицы $C$ в виде векторов-столбцов ${\bf c}_1$, ${\bf c}_2$ и ${\bf c}_3$.
>> с1=[1;2;3] с1 = 1 2 3 >> с2=[4;5;6] с2 = 4 5 6 >> с3=[7;8;9] с3 = 7 8 9
Далее возьмем линейную комбинацию векторов-столбцов ${\bf c}_1$, ${\bf c}_2$ и ${\bf c}_3$, используя элементы вектора ${ \bf x}$ как скаляры или веса нашей линейной комбинации.
>> -2*с1+3*с2-5*с3 ответ = -25 -29 -33
Приведенный выше код демонстрирует следующий результат.
$$ -2\начало{bматрица}1\\2\\3\конец{bматрица} +3\begin{bmatrix}4\\5\\6\end{bmatrix} -5\begin{bmatrix}7\\8\\9\end{bmatrix} =\begin{bmatrix}-25\\-29\\-33\end{bmatrix}$$
Далее мы выполним умножение матрицы на вектор $C{\bf x}$. Сначала создайте матрицу $C$ из векторов-столбцов ${\bf c}_1$, ${\bf c}_2$ и ${\bf c}_3$.
>> С=[с1 с2 с3] С = 1 4 7 2 5 8 3 6 9
Далее введите вектор ${\bf x}$.
>> х=[-2;3;-5] х = -2 3 -5
Теперь, когда мы ввели матрицу $C$ и вектор ${\bf x}$, мы можем вычислить произведение матрицы на вектор $C{\bf x}$.
>> С*х ответ = -25 -29 -33
Результат утверждает, что $$ С {\ бф х} =\begin{bmatrix} 1 и 4 и 7\\ 2 и 5 и 8\\ 3 и 6 и 9 \end{bmatrix} \begin{bматрица} -1\\3\\-5 \end{bmatrix} =\begin{bmatrix}-25\\-29\\-33\end{bmatrix} $$
Основная идея здесь состоит в том, чтобы отметить, что это произведение матрицы на вектор идентично линейной комбинации столбцов, вычисленной ранее. То есть
$$ \begin{bматрица} 1 и 4 и 7\\ 2 и 5 и 8\\ 3 и 6 и 9 \end{bmatrix} \begin{bматрица} -1\\3\\-5 \end{bmatrix} =-2\begin{bmatrix}1\\2\\3\end{bmatrix} +3\begin{bmatrix}4\\5\\6\end{bmatrix} -5\begin{bmatrix}7\\8\\9\end{bmatrix} =\begin{bmatrix}-25\\-29\\-33\end{bmatrix}$$
Результат должен быть четким. Чтобы вычислить матрично-векторное произведение $C{\bf x}$, возьмите линейную комбинацию столбцов $C$, используя элементы вектора ${\bf x}$ в качестве скаляров или весов в линейной комбинации.
Если $C=\left[ \mathbf{c}_{1}\,\,\mathbf{c}_{2}\,\,\cdots \,\,\mathbf{c}% _{n}\right] $ и $\mathbf{x=}\left[ \начать{массив}{с} х_{1} \\ х_{2} \\ \vdots\\ х_{п} \конец{массив} \right] $, затем $C\mathbf{x=x}_{1}\mathbf{c}_{1}+x_{2}\mathbf{c}_{2}+\cdots +x_{n}\mathbf{c}_{n}$.
Произведение матриц --- Изображение столбца
Теперь мы рассмотрим произведение двух матриц. Наш конкретный пример — матричный продукт
. $$АВ =\begin{bmatrix} 1 и 2 и 3\\ 4 и 5 и 6\\ 7 и 8 и 9 \end{bmatrix} \begin{bматрица} 1 и 2\\ 1 и -3\\ -1 и 1 \end{bmatrix}$$
При вычислении произведения матриц $A$ и $B$ первый столбец матрицы $AB$
находится путем умножения $A$ на первый столбец $B$, второй столбец
$AB$ находится путем умножения $A$ на второй столбец $B$ и т. д.
Сначала введите матрицу $A$.
>> А=[1 2 3;4 5 6;7 8 9] А = 1 2 3 4 5 6 7 8 9
Теперь введите столбцы матрицы $B$ в виде векторов.
>> b1=[1;1;-1] б1 = 1 1 -1 >> b2=[2;-3;1] б2 = 2 -3 1
Затем вычислите произведения матриц $A\mathbf{b}_{1}$ и $A\mathbf{b% }_{2}$.
>> А*b1 ответ = 0 3 6 >> А*b2 ответ = -1 -1 -1
Далее для сравнения сформируем матрицу $B=[\mathbf{b}_{1}\,\mathbf{b}_{2}]$,
>> В=[b1 b2] Б = 1 2 1-3 -1 1
Теперь вычислите матричное произведение $AB$.
>> А*Б ответ = 0 -1 3 -1 6 -1
Важно! Столбцы матричного произведения $AB$ идентичны матрично-векторным произведениям $A{\bf b}_1$ и $A{\bf b}_2$, вычисленным выше. Важно отметить, что первый столбец $AB$ — это $A\mathbf{b}_{1}$, а второй столбец $AB$ — это $A\mathbf{b}_{2}$.
В общем, чтобы вычислить матричное произведение $AB$, умножьте матрицу $A$ на каждый столбец матрицы $B$, каждое из этих произведений дает соответствующий столбец в $AB$.
Пусть $A$ и $B$ — матрицы с размерами, позволяющими умноженный. Если $\mathbf{b}_{1},\mathbf{b}_{2},\ldots ,\mathbf{b}_{n}$ векторов, представляющих столбцы матрицы $B$, то \begin{выравнивание*} AB &=&A\left[ \mathbf{b}_{1},\mathbf{b}_{2},\ldots ,\mathbf{b}_{n}\right] \\ &=&\left[ A\mathbf{b}_{1},A\mathbf{b}_{2},\ldots ,A\mathbf{b}_{n}\right] \end{выравнивание*}
Умножение вектора-строки на матрицу
Теперь обратим внимание на картину умножения матриц на строку. В этом примере мы берем произведение вектора-строки ${bf x}$ и матрицы $R$.
$${\bf х}R =\begin{bmatrix}5 & -6 & 4\end{bmatrix} \begin{bматрица} 1 и 2 и 3\\ 4 и 5 и 6\\ 7 и 8 и 9 \end{bmatrix}$$
Сначала введите строки $R$ как векторы-строки ${\bf r}_1$, ${\bf r}_2$ и ${\bf r}_3$.
>> г1=[1 2 3 р1 = 1 2 3 >> г2=[4 5 6] г2 = 4 5 6 >> г3=[7 8 9] р3 = 7 8 9
Сформируйте линейную комбинацию векторов-строк $\mathbf{r}_{1}$, $\mathbf{r}_{2}$ и $\mathbf{r}_{3}$, используя элементы вектор-строка $\mathbf{x}$ в качестве весов.
>> 5*r1-6*r2+4*r3 ответ = 9 12 15
Приведенный выше код демонстрирует следующий результат:
$$5\,\begin{bmatrix}1, 2 и 3\end{bmatrix} - 6\,\begin{bmatrix}4 и 5 и 6\end{bmatrix} + 4\,\begin{bmatrix}7 и 8 и 9\end{bmatrix} = \begin{bmatrix}9, 12 и 15\end{bmatrix}$$
Далее формируем векторно-матричное произведение ${\bf x}R$. Сначала введите вектор-строку ${\bf x}$.
>> х=[5 -6 4] х = 5 -6 4
Затем создайте матрицу $R$, используя векторы-строки $\mathbf{r}_{1},\mathbf{r}_{2},$ и $\mathbf{r}_{3}$.
>> R=[r1;r2;r3] Р = 1 2 3 4 5 6 7 8 9
Наконец, сформируйте векторно-матричное произведение ${\bf x}R.
>> х*С ответ = 9 12 15
Результат утверждает, что $${\bf х}R =\begin{bmatrix}5 & -6 & 4\end{bmatrix} \begin{bматрица} 1 и 2 и 3\\ 4 и 5 и 6\\ 7 и 8 и 9 \end{bmatrix} =\begin{bmatrix}9& 12 & 15\end{bmatrix} $$
Ключевая идея здесь состоит в том, чтобы отметить, что это векторно-матричное произведение идентично линейной комбинации строк, вычисленной ранее. То есть
$$ \begin{bmatrix}5 и -6 и 4\end{bmatrix} \begin{bматрица} 1 и 2 и 3\\ 4 и 5 и 6\\ 7 и 8 и 9 \end{bmatrix} =5\,\begin{bmatrix}1 и 2 и 3\end{bmatrix} - 6\,\begin{bmatrix}4 и 5 и 6\end{bmatrix} + 4\,\begin{bmatrix}7 и 8 и 9\end{bmatrix}$$
Результат должен быть четким. Чтобы вычислить векторно-матричное произведение ${\bf x}R$, возьмите линейную комбинацию строк $R$, используя элементы вектора ${\bf x}$ в качестве скаляров или весов в линейной комбинации.
Если $\mathbf{x=}\left[ x_{1}\,\,x_{2}\,\,\cdots \,\,x_{n}\right] $ и $%
Р = \ влево [
\начать{массив}{с}
\mathbf{r}_{1} \\
\mathbf{r}_{2} \\
\vdots\\
\mathbf{r}_{n}
\конец{массив}
\right] $, затем $\mathbf{x}R=x_{1}\mathbf{r}_{1}+x_{2}\mathbf{r}_{2}+\cdots
+x_{n}\mathbf{r}_{n}$.
Получение матричного произведения --- Изображение строки
Теперь мы рассмотрим изображение строки произведения двух матриц. Наш конкретный пример — матричный продукт
. $$АВ= \begin{bmatrix}1 и 2 и 3\\4 и 5 и 6\\7 и 8 и 9\end{bmatrix} \begin{bmatrix}1 и 2\\1 и -3\\-1 и 1\end{bmatrix}$$
Вы могли заметить, что это идентичное умножение матриц, которое мы выполняли ранее, используя изображение столбца.
При вычислении произведения матриц $A$ и $B$ первая строка матрицы $AB$ равна получается путем умножения первой строки $A$ на $B$, второй строки $AB$ находится путем умножения второй строки $A$ на $B$ и т. д.
Сначала введите строки матрицы $A$ как векторы-строки.
>> г1=[1 2 3] р1 = 1 2 3 >> г2=[4 5 6] г2 = 4 5 6 >> г3=[7 8 9] р3 = 7 8 9
Далее введите матрицу $B$.
>> В=[1 2;1 -3;-1 1] Б = 1 2 1-3 -1 1
Затем вычислите произведения матриц $\mathbf{r}_{1}B$, $\mathbf{r}%
_{2}B$ и $\mathbf{r}_{3}B$.
>> г1*В ответ = 0 -1 >> г2*В ответ = 3 -1 >> г3*В ответ = 6 -1
Теперь вычислите матричное произведение $AB$.
>> А*Б ответ = 0 -1 3 -1 6 -1
Важно! Строки матричного произведения $AB$ идентичны векторно-матричным произведениям ${\bf r}_1B$, ${\bf r}_2B$ и ${\bf r}_3B$, вычисленным выше. Первая строка $AB$ — это $\mathbf{r}_{1}B$, вторая строка $AB$ — это $\mathbf{r}_{2}B$, а третья строка $AB$ равно $\mathbf{r}_{3}B$.
Обычно, чтобы вычислить матричное произведение $AB$, умножьте каждую строку матрицы $A$ на матрицу $B$, каждое из этих произведений дает соответствующую строку в $AB$.
Пусть $A$ и $B$ — матрицы с размерностями, позволяющими умноженный. Если $\mathbf{r}_{1},\mathbf{r}_{2},\ldots ,\mathbf{r}_{n}$ векторов, представляющих строки матрицы $A$, то \begin{выравнивание*} AB &=&\влево[ \начать{массив}{с} \mathbf{r}_{1} \\ \mathbf{r}_{2} \\ \mathbf{\vdots} \\ \mathbf{r}_{n} \конец{массив} \справа]В\\ &=&\влево[ \начать{массив}{с} \mathbf{r}_{1}В \\ \mathbf{r}_{2}В \\ \mathbf{\vdots} \\ \mathbf{r}_{n}B \конец{массив} \Правильно] \end{выравнивание*}
Заключительный комментарий
Время от времени в течение оставшейся части семестра вынимайте этот лист
и практиковать эти различные формы умножения. Они очень помогут
Ваше изучение линейной алгебры.
Домашнее задание
- Рассмотрим произведение матрицы на вектор
$$A{\bf х}=
\begin{bmatrix}1 & 2 & 0\\-1 & -1 & 3\\2 & 0 & -5\end{bmatrix}
\begin{bmatrix}1\\-2\\-2\end{bmatrix}$$
Используйте Matlab для вычисления продукта двумя способами:
- Введите столбцы $A$ как векторы-столбцы ${\bf a}_1$, ${\bf a}_2$ и ${\bf a}_3$, затем используйте элементы вектора ${\bf x}$, чтобы взять линейную комбинацию столбцов $A$.
- Введите вектор ${\bf x}$. Создайте матрицу $A$ из векторов-столбцов ${\bf a}_1$, ${\bf a}_2$ и ${\bf a}_3$, затем вычислите произведение матрицы на вектор $A{\bf x }$. Сравните с результатом вашей линейной комбинации.
- Рассмотрим произведение матриц
$$АВ=
\begin{bmatrix}3 & 0 & 2\\-1 & -1 & 0\\2 & -4 & -2\end{bmatrix}
\begin{bmatrix}1 и 2\\-2 и -3\\-4 и 2\end{bmatrix}$$
Используйте Matlab для вычисления продукта двумя способами:
- Введите матрицу $A$.
Введите столбцы $B$ как векторы-столбцы ${\bf b}_1$ и ${\bf b}_2$, затем вычислите матрично-векторные произведения $A{\bf b}_1$ и $A{\bf б}_2$.
- Создайте матрицу $B$ из векторов-столбцов ${\bf b}_1$ и ${\bf b_2}$, затем вычислите матричное произведение $AB$. Сравните столбцы в вашем результате с предыдущими вычислениями $A{\bf b}_1$ и $A{\bf b}_2$.
- Введите матрицу $A$.
- Рассмотрим векторно-матричное произведение
$${\bf х}R=
\begin{bmatrix}1 & -1 & 5\end{bmatrix}
\begin{bmatrix}2 & -1 & 0\\3 & -2 & -2\\1 & 0 & 4\end{bmatrix}$$
Используйте Matlab для вычисления продукта двумя способами:
- Введите строки $R$ как векторы-строки ${\bf r}_1$, ${\bf r}_2$ и ${\bf r}_3$, затем используйте записи в векторе ${\bf x}$, чтобы получить линейную комбинацию строк $R$.
- Введите вектор-строку ${\bf x}$. Создайте матрицу $R$ из векторов-строк ${\bf r}_1$, ${\bf r}_2$ и ${\bf r}_3$, затем вычислите векторно-матричное произведение ${\bf x } реалов. Сравните с результатом вашей линейной комбинации.
- Рассмотрим произведение матриц
$$АВ=
\begin{bmatrix}3 & 0 & 2\\-1 & -1 & 0\\2 & -4 & -2\end{bmatrix}
\begin{bmatrix}1 и 2\\-2 и -3\\-4 и 2\end{bmatrix}$$
Используйте Matlab для вычисления продукта двумя способами:
- Введите матрицу $B$. Введите строки $A$ как векторы-строки ${\bf r}_1$, ${\bf r}_2$ и ${\bf r}_3$, затем вычислите векторно-матричные произведения ${\bf r }_1 B$, ${\bf r}_2 B$ и ${\bf r}_3 B$.
- Создайте матрицу $A$ из векторов-строк ${\bf r}_1$, ${\bf r}_2$ и ${\bf r}_3$, затем вычислите матричное произведение $AB$. Сравните строки в вашем результате с предыдущими вычислениями ${\bf r}_1 B$, ${\bf r}_2 B$ и ${\bf r}_3 B$.
Доказательство первой теоремы об определителях
Доказательство первой теоремы об определителях Вот теорема.Теорема. Пусть A будет матрицей n на n . затем выполняются следующие условия.
- Если мы умножим строку (столбец) числа A на число, определитель будет умножено на то же число.
- Если i -я строка (столбец) в А это сумма i -я строка (столбец) матрицы B и i -я строка (столбец) матрицы C и все остальные строки в B и C равны соответствующим строкам в A (то есть B и C отличаются от A только одной строкой), тогда det( A )=det( B )+det( C ).
- Если две строки (столбца) в A равны, то det( A )=0.
- Если мы добавим строку (столбец) числа A , умноженного на скаляр k , к другой строке (столбцу) числа A , то определитель не изменится.
- Если поменять местами две строки (столбца) в A , определитель изменится его знак.
- дет( А )=дет( А Т ).

2. Имеем, что A(i,j)=B(i,j)+C(i,j) для каждых j =1,2,...,n. Рассмотрим выражение для дет( А ). Каждое слагаемое в этом выражении содержит ровно один множитель из я -й ряд А . Рассмотрим один из этих терминов:
( A(i,j) - множитель из i -й строки в этом произведении).
Заменить A(i,j) на B(i,j)+C(i,j) :
Умножить через:
( -1) p A(p 1 ,1) A(p 2 ,2).

Если мы добавим только члены, содержащие B , мы получим определитель B ; если мы сложим все члены, содержащие C , мы получим определитель С . Таким образом det( A )=det( B )+det( C ).
3. Предположим, что i -я строка в A равна j -й строке A ,
то есть A(i,k)=A(j,k) для каждых k =1,2,..., n . Рассмотрим произвольное произведение
в
выражение det( A ):
(используем тот факт, что это произведение содержит один множитель из и -й строки
и один множитель из j -й строки, и мы предполагаем, что i стоит перед j ;
случай, когда i встречается дальше, чем j , аналогичен).
Рассмотрим также произведение, соответствующее перестановке p ', полученное из p путем переключения и и и :

Теперь с тех пор
эти условия равны. Но они встречаются в выражении det( A ) с противоположным знаки (помните, что p ' получается из p одной транспозицией). Таким образом, эти продукты убивают друг друга в det( A ). Поэтому каждый член в дет( А ) уничтожается, когда мы объединяем одинаковые члены в det( A ), поэтому det( A )=0.
4. Пусть матрица B получена из матрицы A путем сложения j -й строки, умноженной на k до и -го ряда. Представим A в виде столбца строк:
[ р 1 ] ... [ р я ] ... [ р и ] ... [ р н ]
Тогда B имеет следующий вид:
[ р 1 ] ... [ г я +кр я ] ... [ р дж ] ... [ р н ]
По свойству 2 можно заключить, что det( B ) равен сумме определителей
из двух матриц:
[ р 1 ] ... [ р я ] ... [ р дж ] ... [ р н ]
а также
[ р 1 ] ... [ кр j ] ... [ р и ] ... [ р н ]
Первая из этих матриц A . Обозначим второй через C . Так
det( B )=det( A )+det( C ). По свойству 1
det( C ) в k раз больше определителя
следующая матрица:
[ р 1 ] ... [ р дж ] ... [ р и ] ... [ р н ]
Но эта матрица имеет две равные строки, поэтому ее определитель равен 0 (свойство 3). Таким образом, det( C )=0 и det( B )=det( A ). Доказательство завершено.
5. Предположим, что мы поменяли местами i -ю строку и j -ю строку матрицы A . Представьте A в виде столбца строк:
[ р 1 ] ... [ р я ] ... [ р дж ] ... [ р н ]Чтобы поменять местами r i и r j , мы можем сделать следующее процедура:
- Добавьте j -ю строку к i -й строке:
[ р 1 ] .
.. [ р и +r и ] ... [ р дж ] ... [ р н ]
- Вычесть i -ю строку полученной матрицы из j -й строки:
[ р 1 ] ... [ г я + г j ] ... [-р и ] ... [ р н ]
- Прибавляем j -ю строку полученной матрицы к i -ой строке:
[ р 1 ] ... [ р дж ] ... [-r я ] ... [ р н ]
- Умножьте j -ю строку полученной матрицы на -1:
[ р 1 ] .