Как умножить матрицу на вектор
Перейти к содержимому

Как умножить матрицу на вектор

  • автор:

Умножение матрицы на вектор

Умножение матрицы на вектор производится по правилу «строка на столбец». При умножении матрицы на вектор-столбец число столбцов в матрице должно совпадать с числом строк в векторе-столбце. Результатом умножения матрицы на вектор-столбец есть вектор-столбец:

\[A \cdot B =\left( \begin{matrix} a_{11} & a_{12} & \ldots & a_{1n} \\ a_{21} & a_{22} & \ldots & a_{2n} \\ \ldots & \ldots & \ldots & \ldots \\ a_{m1} & a_{m2} & \ldots & a_{mn} \\ \end{matrix} \right)\cdot \left( \begin{matrix} b_{1} \\ b_{2} \\ \ldots \\ b_{1n} \\ \end{matrix} \right)=\left( \begin{matrix} a_{11}\cdot b_{1}+a_{12}\cdot b_{2}+\ldots +a_{1n}\cdot b_{n} \\ a_{21}\cdot b_{1}+a_{22}\cdot b_{2}+\ldots +a_{2n}\cdot b_{n} \\ \ldots \quad \ldots \quad \ldots \quad \ldots \quad \ldots \quad \ldots \\ a_{m1}\cdot b_{1}+a_{m2}\cdot b_{2}+\ldots +a_{mn}\cdot b_{n} \\ \end{matrix} \right)=\left( \begin{matrix} c_{1} \\ c_{2} \\ \ldots \\ c_{1m} \\ \end{matrix} \right)\]

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

\[ A \cdot B =\left( \begin{matrix} a_{1} \\ a_{2} \\ \ldots \\ a_{n} \\ \end{matrix} \right)\cdot \left( b_{1}\quad b_{2}\quad \ldots \quad b_{n} \right)=\left( \begin{matrix} a_{1}\cdot b_{1}\quad a_{1}\cdot b_{2}\quad \ldots \quad a_{1}\cdot b_{n} \\ a_{2}\cdot b_{1}\quad a_{2}\cdot b_{2}\quad \ldots \quad a_{2}\cdot b_{n} \\ \ldots \quad \ldots \quad \ldots \quad \ldots \quad \ldots \quad \ldots \\ a_{n}\cdot b_{1}\quad a_{n}\cdot b_{2}\quad \ldots \quad a_{n}\cdot b_{n} \\ \end{matrix} \right)=\left( \begin{matrix} c_{11} & c_{12} & \ldots & c_{1n} \\ c_{21} & c_{22} & \ldots & c_{2n} \\ \ldots & \ldots & \ldots & \ldots \\ c_{n1} & c_{n2} & \ldots & c_{nn} \\ \end{matrix} \right)\]

Примеры умножения матриц на вектора

\[A=\left( \begin{matrix} 2 & 4 & 0 \\ -2 & 1 & 3 \\ -1 & 0 & 1 \\ \end{matrix} \right),\text{ } B=\left( \begin{matrix} 1 \\ 2 \\ -1 \\ \end{matrix} \right)\]

\[A\cdot B=\left( \begin{matrix} 2 & 4 & 0 \\ -2 & 1 & 3 \\ -1 & 0 & 1 \\ \end{matrix} \right)\cdot \left( \begin{matrix} 1 \\ 2 \\ -1 \\ \end{matrix} \right)=\left( \begin{matrix} 2\cdot 1+4\cdot 2+0\cdot \left( -1 \right) \\ -2\cdot 1+1\cdot 2+3\cdot \left( -1 \right) \\ -1\cdot 1+0\cdot 2+1\cdot \left( -1 \right) \\ \end{matrix} \right)=\left( \begin{matrix} 2+8+0 \\ -2+2-3 \\ -1+0-1 \\ \end{matrix} \right)=\left( \begin{matrix} 10 \\ -3 \\ -2 \\ \end{matrix} \right)\]

\[ A=\left( \begin{matrix} 3 \\ 2 \\ 0 \\ -1 \\ \end{matrix} \right) ,\text{ } B=\left( \begin{matrix} -1 & 1 & 0 & 2 \\ \end{matrix} \right) \]

\[A \cdot B =\left( \begin{matrix} 3 \\ 2 \\ 0 \\ 1 \\ \end{matrix} \right)\cdot \left( \begin{matrix} -1 & 1 & 0 & 2 \\ \end{matrix} \right)=\left( \begin{matrix} 3\cdot \left( -1 \right) & 3\cdot 1 & 3\cdot 0 & 3\cdot 2 \\ 2\cdot \left( -1 \right) & 2\cdot 1 & 2\cdot 0 & 2\cdot 2 \\ 0\cdot \left( -1 \right) & 0\cdot 1 & 0\cdot 0 & 0\cdot 2 \\ 1\cdot \left( -1 \right) & 1\cdot 1 & 1\cdot 0 & 1\cdot 2 \\ \end{matrix} \right)=\left( \begin{matrix} -3 & 3 & 0 & 6 \\ -2 & 2 & 0 & 4 \\ 0 & 0 & 0 & 0 \\ -1 & 1 & 0 & 2 \\ \end{matrix} \right)\]

Читайте также:

Собственные векторы и значения матрицы

Невырожденная и вырожденная матрица

Умножение матриц: примеры, алгоритм действий, свойства произведения

Произведение матриц (С= АВ) — операция только для согласованных матриц А и В, у которых число столбцов матрицы А равно числу строк матрицы В:

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], где количество столбцов А равно количеству строк В.

Матрица 1

Индексы показывают координаты равных элементов.

Матрица 2

Для того, чтобы умножить А и В, нужно взять строку в первой матрице и столбец во второй, перемножить одинаковые элементы и сложить полученные произведения.

Основные свойства матричного произведения

Размеры, то есть количество строк (m) и столбцов (n), влияют на особенности матричного произведения. Следовательно, для двух главных видов – квадратных и прямоугольных – действуют разные свойства произведения. Однако умножение любого вида всегда некоммуникативное. Это означает, что матрицы нельзя менять местами (АВ ≠ ВА).

Умножение квадратных матриц

Для квадратных матриц существует единичная матрица Е. В ней элементы по главной диагонали равны единице, а оставшиеся – нулю. Произведение любой квадратной матрицы на неё не влияет на результат.

Умножение квадратных матриц

В математическом виде это выглядит так: ЕА = АЕ = А

Также существует обратная матрица А (-1), при умножении на которую исходная A = [m n] даёт в результате единичную матрицу E.

Пример умножения матриц

Следовательно, формула такова: АА(-1) = Е

Умножение прямоугольных матриц

Существуют четыре основных свойства умножения:

  1. Сочетательное свойство, или ассоциативность: (AB)C = A(BC)
  2. Распределительное свойство, или дистрибутивность: А(В+С) = АВ + АС / (А+В)С = АС + ВС
  3. Умножение на единичную матрицу: ЕА = А
  4. Умножение на нулевую матрицу: 0А = 0

Напомним, что у нулевой матрицы все элементы равны нулю.

Произведение трех матриц

Произведение АВС можно получить двумя альтернативными способами:

  1. Найти АВ и умножить на С
  2. Найти ВС и умножить на А

Данное свойство называется ассоциативностью матричного умножения и действует на все виды согласованных матриц. Сами они не переставляются, меняется только порядок их умножения.

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

Для умножения на число необходимо умножить каждый матричный элемент на это число:

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

Дроби вносить не нужно, поскольку они могут затруднить дальнейшие операции.

Умножение матрицы на вектор

Здесь работает правило «строка на столбец».

Умножение матрицы на вектор 1

При умножении на вектор-столбец важно, чтобы количество столбцов в матрице совпадало с количеством строк в векторе-столбце. Результатом произведения будет вектор-столбец.

Умножение матрицы на вектор 2

При умножении на вектор-строку матрица должна быть только вектором-столбцом. Важно, чтобы количество строк в векторе-столбце совпадало с количеством столбцов в векторе-строке. Результатом произведения будет квадратная матрица.

Примеры задач на умножение матриц

Задача №1: выполнить умножение и найти С, если A = [m n] и B = [n k] равны.

Примеры задач на умножение матриц

Примеры задач на умножение матриц 2

Задача №2: вычислить С, если А = [m n] и вектор-столбец В равны.

Задача 2

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(); > > 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *