Умножение матрицы на матрицу и умножение матрицы на число
Главная » Линейная алгебра » Умножение матрицы на матрицу и умножение матрицы на число
Автор Ольга Андрющенко На чтение 7 мин. Просмотров 5.8k. Опубликовано
Как умножить матрицу на матрицу и как умножить матрицу на число — обсуждаем на примерах с решением и объяснением. Произведение матрицы на число и произведение матрицы на матрицу просто и на примерах.
Содержание
Умножение матрицы на число
Произведением матрицы на число называется такая матрица , каждый элемент которой равен , то есть, если
,
то
.
Правило умножения матрицы на число
Умножение матрицы на число — есть умножение на это число всех элементов матрицы.
Рассмотрим умножение матрицы на число на примере:
Пример 1
Умножьте матрицу на число .
Решение: Чтобы умножить матрицу на число 2, нужно умножить на это число каждый элемент матрицы.
Итак, получим:
.
Пример 2
Найдите матрицу, противоположную матрицу .
Решение: Чтобы найти противоположную матрицу надо умножить исходную матрицу на .
.
Пример 3
Даны матрицы и . Вычислите .
Решение:
.
Умножение матрицы на матрицу
Чтобы умножить матрицу на матрицу необходимо умножать последовательно каждый элемент каждой строки первой матрицы на каждый элемент каждого столбца второй матрицы и сумму этих произведений записать в соответствующем элементе матрицы-произведения.
Давайте рассмотрим умножение матрицы на матрицу на примере. Пусть нам нужно умножить две квадратные матрицы и .
,
Умножением матрицы на матрицу называется матрица:
.
Таким образом, получаем:
,
,
,
,
,
,
,
,
.
Правило умножения матрицы на матрицу
Чтобы получить элемент надо все элементы -й строки матрицы A умножить на соответствующие элементы -го столбца матрицы B и полученные произведения сложить.
Рассмотрим умножение матрицы на матрицу на примерах.
Пример 1
Найдите произведение матриц:
и .
Решение:
Находим произведение матриц .
Таким образом, для прямоугольных матриц правило умножения матрицы на матрицу такое же, как и для квадратных матриц.
Пример 2
Найдите произведение AB, если
, .
Решение:
.
Мы смогли найти произведение AB, однако, мы не сможем найти произведение BA.
Правила умножения матриц
Не все матрицы можно перемножать, для того, чтобы произведение матриц было возможным, необходимо соблюдение следующих правил:
Умножение матрицы A на матрицу B имеет смысл только в том случае, когда число столбцов матрицы A равно числу строк матрицы B.
В результате умножения двух прямоугольных матриц получается матрица, содержащая столько строк, сколько строк в первой матрице, и столько столбцов, сколько столбцов во второй матрице.
Свойства умножения матриц
Рассмотрим умножение двух матриц и .
Найдем произведение и произведение , а затем сравним эти произведения.
;
.
Очевидно, что . Таким образом, для произведения матриц переместительный закон не выполняется. Однако, два других закона умножения, сочетательный закон и распределительный закон выполняются:
— сочетательный закон умножения,
— распределительный закон.
Из школьного курса математики известно, что произведение двух отличных от нуля чисел равно отличному от нуля числу. Однако при умножении двух ненулевых матриц можно получить нулевую матрицу, смотрите:
Возьмем две матрицы и . Найдем произведение этих матриц:
Вот такими удивительными свойствами обладает умножение матриц.
Читайте еще статьи про матрицы:
Умножение матриц С++
Возможно, во время учебы вы узнали и задали много вопросов о матрицах по своим предметам математики. Матрица представляет собой набор строк и столбцов. Матрица может иметь одинаковое количество строк и столбцов и быть разной.
Мы можем выполнять любые математические операции с матрицами, то есть сложение, вычитание, умножение и деление. C++ также позволяет нам использовать матрицы в наших кодах и выполнять эти операции. Таким образом, мы решили выполнить умножение матриц в программировании на C++, используя систему Ubuntu 20.04 Linux. Начнем с создания нового файла C++ для добавления кода. Сначала запустите терминал оболочки и используйте инструкцию «touch» терминала оболочки для создания файла. Мы назвали этот файл «matrix.cc». Файл хранится в домашней папке нашей системы Linux. Мы открывали его в редакторе Gnu Nano с помощью редактора nano Ubuntu, как показано на изображении ниже. Пустой файл будет открыт непосредственно в редакторе Gnu nano всего за 5 секунд.
Давайте начнем с простого примера умножения матриц в C++. C++ использует заголовок «iostream» для стандартного ввода и вывода через поток ввода-вывода. Таким образом, он также должен быть включен в файл кода.
Мы включили его в наш пустой файл C++, используя ключевое слово «#include» в верхней строке. В C++ объекты ввода и вывода могут использоваться только со стандартным пространством имен.
Итак, мы должны использовать пространство имен «Std», используя слово «using» после заголовка. Мы будем выполнять умножение матриц в методе C++ main(), который также является источником запуска выполнения. Мы объявили три матрицы «x», «y» и «z» размером 5-5, т.е. строки*столбцы. Но мы также объявили переменные «r» и «c» как строки и столбцы и присвоили им одинаковые значения. В настоящее время в наших матрицах нет значений. Мы будем использовать матрицы «x» и «y» в качестве входных матриц, а матрица «z» будет произведением обеих этих матриц. Во-первых, мы должны добавить значения во входную матрицу «x» и «y» отдельно, используя циклы.
Операторы cout показывают, что пользователь будет вводить значения в матрицы «x» и «y» отдельно. Внешний цикл «for» будет использоваться для перебора строк до «r», а внешний цикл «for» — до перебора значения столбца «c».
Поскольку и «r», и «c» имеют значение 2, мы создадим матрицу «x» и «y» размером 2*2. Объект «cin» использовался для сложения значений в матрице «x» и «y» с использованием циклов «I» и «j». Благодаря этому пользователь добавит «2» значения строки и «2» значения столбца в матрицы с помощью оболочки. После ввода значений в матрицы «x» и «y» мы должны найти произведение обеих матриц. Во-первых, мы должны инициализировать все строки и столбцы матрицы произведения «z» до 0 на каждой итерации, используя как «I», так и «j» для циклов, то есть r = 2 и c = 2.
На каждой итерации цикл «k» используется для умножения матрицы «x» на «y» и добавления этого значения произведения к конкретному индексу итерации матрицы «z». Это будет продолжено до последней строки-столбца матрицы «z». Последние 2 цикла «for» использовались для отображения матрицы «z» в оболочке с помощью оператора объекта «cout». После всего этого последний оператор cout используется для добавления конечной строки. Теперь наша программа готова к компиляции в оболочке.
Компилятор g++ в Ubuntu 20.04 использовался для компиляции кода C++, а запрос «./a.out» использовался для выполнения скомпилированного кода. Мы добавили 2-строчные значения и 2-столбцовые значения для матриц «x» и «y» при выполнении. После этого матрица произведения «z» обеих матриц «x» и «y» была рассчитана и отображена на оболочке последней.
Пример #02:В приведенном выше примере мы вычислили умножение матриц для двух одинаковых матриц «x» и «y» одного порядка, т. е. одинакового количества строк и столбцов для обеих матриц. Но знаете ли вы правила вычисления матричного умножения? Если не? Тогда этот пример будет лучшим подспорьем для вас. Вы должны знать, что мы не можем вычислить умножение двух матриц с разными строками на порядок столбцов. Для выполнения умножения значение первой строки матрицы должно быть равно значению второго столбца матрицы, т. е. r1=c2 или r2=c1. Мы обновили значение столбца «c» до 3. Теперь значения строк и столбцов для матриц «x» и «y» не совпадают.
Произведение не будет рассчитано, так как матрица «х», а «у» будет иметь 2 строки и 3 столбца, т.е. r1 не равно c2, а r2 не равно c1. Остальной код останется без изменений и будет сохранен для компиляции через Ctrl+S.
Мы скомпилировали этот непревзойденный матричный код строки-столбца и выполнили его до сих пор. Пользователь добавил значения для матриц «x» и «y». Мы получили сложные неожиданные результаты умножения матриц «x» и «y». Этот вывод неточен, потому что мы не использовали тот же порядок, который требуется для умножения матриц.
Чтобы решить эту проблему, мы должны использовать порядок r1=c2 и c1=r2 для входных матриц в нашем коде. Поэтому мы открыли тот же код и изменили строки и столбцы для матрицы «x» и «y» вместе с переменными «r=3» и «c=4». Давайте сохраним этот обновленный код и скомпилируем его.
При компиляции и выполнении мы добавили входные данные для матрицы «x» в следующем порядке: 3 строки * 4 столбца и 4 строки * 3 столбца для матрицы «y». Мы получили матрицу произведения порядка 3 строки * 4 столбца после умножения матриц «x» и «y».
Давайте взглянем на последний, но не менее важный пример умножения матриц. Мы инициализировали r1=3, c1=4, r2=4, c2=3, матрицу «x» и матрицу «y» отдельно. Матрица продукта «M» определяется с помощью r1 и c2. Мы использовали цикл «for» для отображения уже инициализированных матриц «x» и «y» в нашей оболочке с помощью объектов «cout». Как показано на приложенном изображении ниже, это было сделано отдельно для матриц «x» и «y» для выполнения матричного умножения.
Мы вычислили произведение обеих матриц и прибавили произведение к матрице «М». Наконец, мы отобразили матрицу продукта «M» на оболочке, используя оператор объекта «cout».
При выполнении кода сначала отображаются матрицы «x» и «y», а затем их матрица произведения «M».
Вывод:Окончательно! Мы завершили объяснение вычисления умножения матриц в коде C++ с использованием системы Ubuntu 20.04. Мы объяснили важность преобразования строк в столбцы в порядке матриц для операции умножения.
Поэтому мы начали с простого примера с одинаковыми матрицами порядка и перешли к примерам матриц разных порядков.
12.1: Базовое умножение матриц — Инженерные тексты LibreText
- Последнее обновление
- Сохранить как PDF
- Идентификатор страницы
- 85044
- Кэри Смит
- Oxnard College
Кэри Смит
Матрица, умноженная на вектор (случай 3×3):
\( A*B =
\begin{matrix}
|a & b & c| \\
|p & q & r| \\
|u & v & w|
\end{matrix} * \begin{matrix}
|x|\\
|y|\\
|z|
\end{matrix} = \begin{matrix}
|a*x & b *y & c*z| \\
|p*x & q*y & r*z| \\
|u*x & v*y & w*z|
\end{matrix}
\)
Матрицы не обязательно должны быть квадратными, но количество столбцов в A должно быть равно количеству строк в B.
Умножение матриц обычно не является коммутативным. То есть A*B ≠ B*A, вообще говоря.
.
Посмотрите это видео об умножении матриц:
Видеоруководство Matlab: умножение матриц и векторов, https://www.youtube.com/watch?v=sgzFn42jU6Y
.
Пример \(\PageIndex{1}\) Матрица Умножить 3×3 вектора
A = [3 2 1;
2 1 0
1 0 -1]
В = [4
5
6]
A*B
Раствор
A*B =
28
13
-2
% = [28 %(28 = 3*94 + 1)039 1*5 % 13 %(13 = 2*4 + 1*5 + 0*6)
% -2] %(-2 = 1*4 + 0*5 + -1*6)
.
Упражнение \(\PageIndex{1}\) Умножение матриц Верно/неверно
1. Верно или неверно: Эти две матрицы (с 3 строками и 2 столбцами) можно перемножить вместе:
[ 1 5 ] [ 9 5 ]
А = | 2 9 | В = | 8 9 |
[ 3 4 ] [ 7 5 ]
2.
[ 1 5 ]
A = | 2 9 |; B = [ 1 3 2 ]
[ 3 4 ] [ 4 6 9 ]
- Ответ
1. Нет, поскольку количество столбцов в A (2) не равно количеству строк в B (3).
1. Да, потому что количество столбцов в A (2) равно количеству строк в B (2).
Упражнение \(\PageIndex{2}\) Вычисление умножения матриц
1. Что такое A*B ?
A = [1 4
3 -5]
B = [ 2 12
3 1]
(Умножать матрицу, а не поэлементно)
- Ответ
3
А*В = [14 16
-9 31]
.
Матрица с единицами по диагонали и нулями в других местах называется единичной матрицей:
I = глаз(3) = [1 0 0
0 1 0
0 0 1]
I*A = A
A*I = A
Для получения дополнительной информации см.: https:/ /en.Wikipedia.org/wiki/Matrix_multiplication
.
Эта страница под названием 12.1: Базовое умножение матриц распространяется под лицензией CC BY-NC-SA 4.0, ее автор, ремикс и/или куратор — Кэри Смит.
- Наверх
- Была ли эта статья полезной?
- Тип изделия
- Раздел или Страница
- Автор
- Кэри Смит
- Лицензия
- CC BY-NC-SA
- Версия лицензии
- 4,0
- Показать оглавление
- да
- Теги
- Матрица жизненного цикла
- Умножение матриц
- Силы Матрицы
- Матрица вращения
Умножение матриц
Умножение матриц Рассмотрим произведение матрицы 2×3 и матрицы 3×4.
Умножение
определяется, поскольку внутренние размеры (3) одинаковы. Продукт будет
быть матрицей 2×4, внешние размеры.
Так как в первой матрице три столбца и три строки во второй матрица (внутренние размеры которой должны быть одинаковыми), каждый элемент в произведении будет сумма трех товары.
Строка 1, Столбец 1
Чтобы найти элемент в строке 1, столбце 1 произведения, мы возьмем строку 1 из первой матрицы и столбец 1 из второй матрицы. Мы соединяем эти значения вместе, умножаем пары значений, а затем добавляем к прибыть в 25.
Р 1 : 1 -2 3
×С 1 : 1 -3 6
---------------
1 +6 +18 = 25 Строка 2, Столбец 3
Чтобы найти элемент в строке 2, столбце 3 произведения, возьмем строку 2 из первой матрицы и столбец 3 из второй матрицы. Соединяем эти значения вместе, перемножьте пары значений, а затем добавьте к прибыть на 53.
Р 2 : 4 5 -2
×С 3 : 4 7 -1
---------------
16 +35 +2 = 53 Понимание того, откуда взялось каждое число в произведении, полезно, когда
вам нужно только определенное значение.
Вам не нужно умножать полностью, если вы
нужны только определенные элементы. Просто возьмите строку из первой матрицы и
столбец из второй матрицы.
Процесс можно завершить для остальных элементов матрицы.
| Колонка 1 | Столбец 2 | Столбец 3 | Столбец 4 | ||
|---|---|---|---|---|---|
| значения | [1, -3, 6] | [-8, 6, 5] | [4, 7, -1] | [-3, 2, 4] | |
| Ряд 1 | [1, -2, 3] | 1(1) – 2(-3) + 3(6) = 1 + 6 + 18 = 25 | 1(-8) -2(6) + 3(5) = -8 – 12 + 15 = -5 | 1(4) -2(7) +3(-1) = 4 – 14 – 3 = -13 | 1(-3) -2(2) + 3(4) = -3 -4 + 12 = 5 |
| Ряд 2 | [4, 5, -2] | 4(1) + 5(-3) -2(6) = 4 – 15 – 12 = -23 | 4(-8) + 5(6) – 2(5) = -32 + 30 – 10 = -12 | 4(4) + 5(7) -2(-1) = 16 + 35 + 2 = 53 | 4(-3) + 5(2) -2(4) = -12 + 10 – 8 = -10 |
Итак, конечный продукт
| 25 | -5 | -13 | 5 | ||
| -23 | -12 | 53 | -10 |
