Умножение матрицы на вектор
Умножение матрицы на вектор производится по правилу «строка на столбец». При умножении матрицы на вектор-столбец число столбцов в матрице должно совпадать с числом строк в векторе-столбце. Результатом умножения матрицы на вектор-столбец есть вектор-столбец:
При умножении матрицы на вектор-строку, умножаемая матрица может быть только вектором-столбцом, причем количество строк в векторе-столбце должно совпадать с количеством столбцов в векторе-строке. Результатом такого умножения будет квадратная матрица соответствующей размерности:
Примеры умножения матриц на вектора
Читайте также:
Собственные векторы и значения матрицы
Невырожденная и вырожденная матрица
Умножение матриц: примеры, алгоритм действий, свойства произведения
Произведение матриц (С= АВ) — операция только для согласованных матриц А и В, у которых число столбцов матрицы А равно числу строк матрицы В:
C ⏟ m × n = A ⏟ m × p × B ⏟ p × n
- A = a ( i j ) размеров m × n ;
- B = b ( i j ) размеров p × n
Матрицу C , элементы c i j которой вычисляются по следующей формуле:
c i j = a i 1 × b 1 j + a i 2 × b 2 j + . . . + a i p × b p j , i = 1 , . . . m , j = 1 , . . . m
Вычислим произведения АВ=ВА:
А = 1 2 1 0 1 2 , В = 1 0 0 1 1 1
Решение, используя правило умножения матриц:
А ⏟ 2 × 3 × В ⏟ 3 × 2 = 1 2 1 0 1 2 × 1 0 0 1 1 1 = 1 × 1 + 2 × 0 + 1 × 1 1 × 0 + 2 × 1 + 1 × 1 0 × 1 + 1 × 0 + 2 × 1 0 × 0 + 1 × 1 + 2 × 1 = = 2 3 2 3 ⏟ 2 × 2
В ⏟ 3 × 2 × А ⏟ 2 × 3 = 1 0 0 1 1 1 × 1 2 1 0 1 2 = 1 × 1 + 0 × 0 1 × 2 + 0 × 1 1 × 1 + 0 × 2 0 × 1 + 1 × 0 0 × 2 + 1 × 1 0 × 1 + 1 × 2 1 × 1 + 1 × 0 1 × 2 + 1 × 1 1 × 1 + 1 × 2 = 1 2 1 0 1 2 1 3 3 ⏟ 3 × 3
Произведение А В и В А найдены, но являются матрицами разных размеров: А В не равна В А .
Свойства умножения матриц
Свойства умножения матриц:
- ( А В ) С = А ( В С ) — ассоциативность умножения матриц;
- А ( В + С ) = А В + А С — дистрибутивность умножения;
- ( А + В ) С = А С + В С — дистрибутивность умножения;
- λ ( А В ) = ( λ А ) В
Проверяем свойство №1: ( А В ) С = А ( В С ) :
( А × В ) × А = 1 2 3 4 × 5 6 7 8 × 1 0 0 2 = 19 22 43 50 × 1 0 0 2 = 19 44 43 100 ,
А ( В × С ) = 1 2 3 4 × 5 6 7 8 1 0 0 2 = 1 2 3 4 × 5 12 7 16 = 19 44 43 100 .
Проверяем свойство №2: А ( В + С ) = А В + А С :
А × ( В + С ) = 1 2 3 4 × 5 6 7 8 + 1 0 0 2 = 1 2 3 4 × 6 6 7 10 = 20 26 46 58 ,
А В + А С = 1 2 3 4 × 5 6 7 8 + 1 2 3 4 × 1 0 0 2 = 19 22 43 50 + 1 4 3 8 = 20 26 46 58 .
Произведение трех матриц
Произведение трех матриц А В С вычисляют 2-мя способами:
- найти А В и умножить на С : ( А В ) С ;
- либо найти сначала В С , а затем умножить А ( В С ) .
Перемножить матрицы 2-мя способами:
4 3 7 5 × — 28 93 38 — 126 × 7 3 2 1
Алгоритм действий:
- найти произведение 2-х матриц;
- затем снова найти произведение 2-х матриц.
1). А В = 4 3 7 5 × — 28 93 38 — 126 = 4 ( — 28 ) + 3 × 38 4 × 93 + 3 ( — 126 ) 7 ( — 28 ) + 5 × 38 7 × 93 + 5 ( — 126 ) = 2 — 6 — 6 21
2). А В С = ( А В ) С = 2 — 6 — 6 21 7 3 2 1 = 2 × 7 — 6 × 2 2 × 3 — 6 × 1 — 6 × 7 + 21 × 2 — 6 × 3 + 21 × 1 = 2 0 0 3 .
Используем формулу А В С = ( А В ) С :
1). В С = — 28 93 38 — 126 7 3 2 1 = — 28 × 7 + 93 × 2 — 28 × 3 + 93 × 1 38 × 7 — 126 × 2 38 × 3 — 126 × 1 = — 10 9 14 — 12
2). А В С = ( А В ) С = 7 3 2 1 — 10 9 14 — 12 = 4 ( — 10 ) + 3 × 14 4 × 9 + 3 ( — 12 ) 7 ( — 10 ) + 5 × 14 7 × 9 + 5 ( — 12 ) = 2 0 0 3
Ответ: 4 3 7 5 — 28 93 38 — 126 7 3 2 1 = 2 0 0 3
Умножение матрицы на число
Определение 2
Произведение матрицы А на число k — это матрица В = А k того же размера, которая получена из исходной умножением на заданное число всех ее элементов:
b i , j = k × a i , j
Свойства умножения матрицы на число:
- 1 × А = А
- 0 × А = нулевая матрица
- k ( A + B ) = k A + k B
- ( k + n ) A = k A + n A
- ( k × n ) × A = k ( n × A )
Найдем произведение матрицы А = 4 2 9 0 на 5.
5 А = 5 4 2 9 0 5 × 4 5 × 2 5 × 9 5 × 0 = 20 10 45 0
Умножение матрицы на вектор
Определение 3
Чтобы найти произведение матрицы и вектора, необходимо умножать по правилу «строка на столбец»:
- если умножить матрицу на вектор-столбец число столбцов в матрице должно совпадать с числом строк в векторе-столбце;
- результатом умножения вектора-столбца является только вектор-столбец:
А В = а 11 а 12 ⋯ а 1 n а 21 а 22 ⋯ а 2 n ⋯ ⋯ ⋯ ⋯ а m 1 а m 2 ⋯ а m n b 1 b 2 ⋯ b 1 n = a 11 × b 1 + a 12 × b 2 + ⋯ + a 1 n × b n a 21 × b 1 + a 22 × b 2 + ⋯ + a 2 n × b n ⋯ ⋯ ⋯ ⋯ a m 1 × b 1 + a m 2 × b 2 + ⋯ + a m n × b n = c 1 c 2 ⋯ c 1 m
- если умножить матрицу на вектор-строку, то умножаемая матрица должна быть исключительно вектором-столбцом, причем количество столбцов должно совпадать с количеством столбцов в векторе-строке:
А В = а а ⋯ а b b ⋯ b = a 1 × b 1 a 1 × b 2 ⋯ a 1 × b n a 2 × b 1 a 2 × b 2 ⋯ a 2 × b n ⋯ ⋯ ⋯ ⋯ a n × b 1 a n × b 2 ⋯ a n × b n = c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋯ ⋯ ⋯ ⋯ c n 1 c n 2 ⋯ c n n
Найдем произведение матрицы А и вектора-столбца В :
А В = 2 4 0 — 2 1 3 — 1 0 1 1 2 — 1 = 2 × 1 + 4 × 2 + 0 × ( — 1 ) — 2 × 1 + 1 × 2 + 3 × ( — 1 ) — 1 × 1 + 0 × 2 + 1 × ( — 1 ) = 2 + 8 + 0 — 2 + 2 — 3 — 1 + 0 — 1 = 10 — 3 — 2
Найдем произведение матрицы А и вектора-строку В :
А = 3 2 0 — 1 , В = — 1 1 0 2
А В = 3 2 0 1 × — 1 1 0 2 = 3 × ( — 1 ) 3 × 1 3 × 0 3 × 2 2 × ( — 1 ) 2 × 1 2 × 0 2 × 2 0 × ( — 1 ) 0 × 1 0 × 0 0 × 2 1 × ( — 1 ) 1 × 1 1 × 0 1 × 2 = — 3 3 0 6 — 2 2 0 4 0 0 0 0 — 1 1 0 2
Ответ: А В = — 3 3 0 6 — 2 2 0 4 0 0 0 0 — 1 1 0 2
Правило умножения матриц: примеры с решением
Мы помним, что матрицы – это таблицы взаимосвязанных элементов, которые позволяют упростить математические вычисления и систематизировать определённую информацию. Их можно складывать, вычитать, умножать между собой. В этой статье подробнее остановимся на последнем алгоритме – матричном произведении.
Умножение матриц — определение
Матричное умножение – это одна из основных операций, которая проводится исключительно с согласованными матрицами.
При произведении матриц A и B получается новая матрица C. В математическом виде формула будет выглядеть так:
Но для начала разберёмся, что такое согласованные матрицы.
Согласованные матрицы
Согласованными матрицами называют матрицы вида A = [m ☓ n] и B = [n ☓ k], где количество столбцов А равно количеству строк В.
Индексы показывают координаты равных элементов.
Для того, чтобы умножить А и В, нужно взять строку в первой матрице и столбец во второй, перемножить одинаковые элементы и сложить полученные произведения.
Основные свойства матричного произведения
Размеры, то есть количество строк (m) и столбцов (n), влияют на особенности матричного произведения. Следовательно, для двух главных видов – квадратных и прямоугольных – действуют разные свойства произведения. Однако умножение любого вида всегда некоммуникативное. Это означает, что матрицы нельзя менять местами (АВ ≠ ВА).
Умножение квадратных матриц
Для квадратных матриц существует единичная матрица Е. В ней элементы по главной диагонали равны единице, а оставшиеся – нулю. Произведение любой квадратной матрицы на неё не влияет на результат.
В математическом виде это выглядит так: ЕА = АЕ = А
Также существует обратная матрица А (-1), при умножении на которую исходная A = [m ☓ n] даёт в результате единичную матрицу E.
Следовательно, формула такова: АА(-1) = Е
Умножение прямоугольных матриц
Существуют четыре основных свойства умножения:
- Сочетательное свойство, или ассоциативность: (AB)C = A(BC)
- Распределительное свойство, или дистрибутивность: А(В+С) = АВ + АС / (А+В)С = АС + ВС
- Умножение на единичную матрицу: ЕА = А
- Умножение на нулевую матрицу: 0А = 0
Напомним, что у нулевой матрицы все элементы равны нулю.
Произведение трех матриц
Произведение АВС можно получить двумя альтернативными способами:
- Найти АВ и умножить на С
- Найти ВС и умножить на А
Данное свойство называется ассоциативностью матричного умножения и действует на все виды согласованных матриц. Сами они не переставляются, меняется только порядок их умножения.
Умножение матрицы на число
Для умножения на число необходимо умножить каждый матричный элемент на это число:
Дроби вносить не нужно, поскольку они могут затруднить дальнейшие операции.
Умножение матрицы на вектор
Здесь работает правило «строка на столбец».
При умножении на вектор-столбец важно, чтобы количество столбцов в матрице совпадало с количеством строк в векторе-столбце. Результатом произведения будет вектор-столбец.
При умножении на вектор-строку матрица должна быть только вектором-столбцом. Важно, чтобы количество строк в векторе-столбце совпадало с количеством столбцов в векторе-строке. Результатом произведения будет квадратная матрица.
Примеры задач на умножение матриц
Задача №1: выполнить умножение и найти С, если A = [m ☓ n] и B = [n ☓ k] равны.
Задача №2: вычислить С, если А = [m ☓ n] и вектор-столбец В равны.
c11 = a11·b11 + a12·b21 = 2·1 + (-1)·2 + 3·(-1) = -3
c21 = a11·b12 + a12·b22 = 4⋅1 + 2⋅2 + 0⋅2 = 8
c31 = a21·b11 + a22·b21 = −1⋅1 + 1⋅2 + 1⋅(−1) = 0
Изучение матричных операций очень увлекательное, но сложное занятие. Если у вас нет времени на учёбу, ФениксХэлп может помочь в решении контрольных и самостоятельных работ, написании статей и диссертаций.
- Профессиональное и личностное развитие
- Залипательная наука
- Подготовка к тестам, экзаменам, зачетам
Умножение матрицы на вектор
При умножении матрицы на вектор возможны два варианта:
- умножение на вектор-столбец;
- умножение на вектор-строку.
Чтобы найти произведение матрицы и вектора, необходимо умножать по правилу «строка на столбец»:
- если умножить матрицу на вектор-столбец число столбцов в матрице должно совпадать с количеством элементов в векторе-столбце;
- результатом умножения вектора-столбца является только вектор-столбец:
- если умножить матрицу на вектор-строку, то умножаемая матрица должна быть исключительно вектором-столбцом, причем количество столбцов должно совпадать с количеством элементов в векторе-строке:
Реализация алгоритма
using System; // класс с методами расширения static class Ext < // метод расширения для получения количества строк матрицы public static int RowsCount(this double[,] matrix) < return matrix.GetUpperBound(0) + 1; > // метод расширения для получения количества столбцов матрицы public static int ColumnsCount(this double[,] matrix) < return matrix.GetUpperBound(1) + 1; > // метод для печати матрицы в консоль public static void Print(this double[,] matrix) < for (var i = 0; i < matrix.RowsCount(); i++) < for (var j = 0; j < matrix.ColumnsCount(); j++) < Console.Write(matrix[i, j].ToString().PadLeft(4)); > Console.WriteLine(); > > // метод для печати вектора в консоль public static void Print(this double[] vector, bool vectorIsRow) < for (var i = 0; i < vector.Length; i++) < Console.Write(vector[i].ToString().PadLeft(4) + (vectorIsRow ? string.Empty: "\r\n" )); > Console.WriteLine(); > > class Program < // метод для получения вектора из консоли static double[] GetVectorFromConsole(string vectorName) < Console.Write("Количество элементов вектора : ", vectorName); var n = int.Parse(Console.ReadLine()); var vector = new double[n]; for(var i = 0; i < vector.Length; i++) < Console.Write("[] hljs-keyword">double.Parse(Console.ReadLine()); > return vector; > // метод для получения матрицы из консоли static double[,] GetMatrixFromConsole(string name) < Console.Write("Количество строк матрицы : ", name); var n = int.Parse(Console.ReadLine()); Console.Write("Количество столбцов матрицы : ", name); var m = int.Parse(Console.ReadLine()); var matrix = new double[n, m]; for (var i = 0; i < n; i++) < for (var j = 0; j < m; j++) < Console.Write("[,] hljs-keyword">double.Parse(Console.ReadLine()); > > return matrix; > // метод для умножения матрицы на вектор static double[,] VectorMatrixMultiplication(double[,] inputMartix, double[] vector, bool vectorIsRow) < double[,] resultMatrix; if (vectorIsRow) < if (inputMartix.ColumnsCount() != 1) < throw new Exception("Умножение не возможно! Матрица должна содержать один столбец."); > if (inputMartix.RowsCount() != vector.Length) < throw new Exception("Умножение не возможно! Количество строк матрицы должно совпадать с количеством элементов вектора."); > resultMatrix = new double[vector.Length, vector.Length]; for (var i = 0; i < resultMatrix.RowsCount(); i++) < for (var j = 0; j < resultMatrix.ColumnsCount(); j++) < resultMatrix[i, j] = inputMartix[i, 0] * vector[j]; > > > else < if (inputMartix.ColumnsCount() != vector.Length) < throw new Exception("Умножение не возможно! Количество столбцов матрицы должно совпадать с количеством элементов вектора."); > resultMatrix = new double[inputMartix.RowsCount(), 1]; for (var i = 0; i < inputMartix.RowsCount(); i++) < resultMatrix[i, 0] = 0; for (var k = 0; k < inputMartix.ColumnsCount(); k++) < resultMatrix[i, 0] += inputMartix[i, k] * vector[k]; > > > return resultMatrix; > static void Main(string[] args) < Console.OutputEncoding = System.Text.Encoding.UTF8; Console.WriteLine("Программа для умножения матрицы на вектор"); var m = GetMatrixFromConsole("M"); var v = GetVectorFromConsole("V"); Console.WriteLine("Вектор является строкой(R) или столбцом(C):"); bool vectorIsRow = Console.ReadLine().ToUpper() == "R"; Console.WriteLine("Матрица M:"); m.Print(); Console.WriteLine("Вектор V:"); v.Print(vectorIsRow); var result = VectorMatrixMultiplication(m, v, vectorIsRow); Console.WriteLine("Произведение матрицы M на вектор V:"); result.Print(); Console.ReadLine(); > >