Site Loader

Содержание

Что такое векторное умножение, матричное произведение (умножение), внутреннее произведение, скалярное произведение, реализация кода Python, разность и связь

Table of Contents

предисловие

вектор

определение

Связь с матрицей

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

матрица

определение

Матрица продукта работы

Код Python

Отличия и связи

Примеры

подводить итоги

Ключевые отличия

Связь между точечным произведением и умножением матриц


Смотреть»Цветочная книга«Обнаружил такое предложение в процессе

Точечное произведение двух векторов x и y одного измерения можно рассматривать как матричное произведение x⊤y.

Разумеется, говоря о умножении матриц, как же снова прийти к точечному произведению? И векторы …

Я научился невежеству раньше. Для глубокого изучения я тщательно нашел информацию для написания этого блога и передал ее своим друзьям в той же ситуации, что и я.

PS:“Цветочная книга«За книгу А.И. Библия»Глубокое обучение

«, написанная тремя всемирно известными экспертами Ианом Гудфеллоу, Йошуа Бенжио и Аароном Курвиллем, являетсяГлубокое обучениеИнновационный классический учебник.

определение

Вектор представляет собой столбец чисел.

Пример: вектор

Связь с матрицей

Вектор можно рассматривать как матрицу с одним столбцом

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

Транспонировать вектора х:

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

У векторов много операций, в этой статье рассказывается только о умножении векторов.

Количественный продукт (также называемый внутренним продуктом, точечный продукт; скалярный продукт)

Предположим, что в двумерном пространстве есть два вектора с участием Определите их количественный продукт (также называемый внутренним продуктом и точечным продуктом) как следующие действительные числа:

В более общем смысле, внутреннее произведение n-мерного вектора определяется следующим образом:

ссылкаBaidu энциклопедия

 

определение

Матрица представляет собой двумерный массив

Матрица продукта работы

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

ПредполагатьAДляМатрица,BДляМатрица, то называетсяматрицаCматрицаAпротивBПродукт ,

Где матрица СЛинияЭлементы столбца могут быть выражены как:

Предпосылки для умножения матриц:

Форма матрицы А, Форма матрицы B, Форма С

Есть две матрицы A, B следующим образом:

Размер матрицы A равен 3×2, а размер матрицы B равен 2×3, тогда матрица C умножения A и B должна быть 3×3, где m = 3, p = 2, n = 3.

В соответствии с формулой

Элементы матрицы C следующие

То есть матрица С представляет собой матрицу 3х3

Код Python

Напишите простой метод матричного произведения с помощью np.dot (A, B, C)Результат тот же. для справки.
Недостаток следующего метода состоит в том, что невозможно вычислить матрицу больших чисел, например, размер A равен 1000 * 10000, а размер B равен 10000 * 10000.

Его необходимо улучшить.

np.dot (A, B, C) не может выполнять матричные вычисления таких больших чисел.

Если у вас есть лучший способ, пожалуйста, оставьте сообщение.

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
def dot(A, B):
    row = A.shape[0]
    column = B.shape[1]
    p = A.shape[1]
    if A.shape[1] != B.shape[0]:
        return
    # Создайте матрицу C с размерной строкой * столбца и все ее значения равны нулю
    C = np.zeros((row, column), dtype=A.dtype)
    print("A.shape, B.shape, C.shape:", A.shape, B.shape, C.shape)
         # Рассчитать результат умножения матриц
    for i in range(row):
        for j in range(column):
            for k in range(p):
                C[i, j] += A[i, k] * B[k, j]
    return C
if __name__ == '__main__':
    A = np.arange(3, 9).reshape(2, 3)
    B = np.arange(1, 7).reshape(3, 2)
    C = np.zeros((2, 2), dtype=int)
    print("matrix A:\n", A)
    print("matrix B:\n",B)
    np.dot(A, B, C)
    print("np.
dot C:\n", C) c = dot(A, B) print("my dot C:\n", c) assert C.any() == c.any() assert C.all() == c.all()

Точечное произведение двух векторов x и y одного измерения можно рассматривать как матричное произведение x⊤y.

Примеры

Если взять в качестве примера двумерный вектор, это относительно просто и легко понять. Если вы понимаете это в двух измерениях, вы можете расширить, чтобы понять больше измерений.

Предположим, что двумерные векторы x и y соответственно

Точечное произведение х и у выглядит следующим образом

Запишите их в матричной форме следующим образом

Матрица х транспонируется в, Размерность равна 1×2, размерность матрицы y равна 2×1, две матрицы умножаются, и матрица 1×1 получается в соответствии с формулой следующим образом

Постучал по доске!

Ключевые отличия

Точечное произведение двух векторов равноНастоящий номер(То есть скаляр)

Результатом умножения двух матриц является одинматрица

Ключевой момент: «Может быть видно» в оригинальных словах в книге не означает, что

Связь между точечным произведением и умножением матриц

Вы можете умножить матрицуC = ABвДумайте об этом как о точечном произведении между i-й строкой матрицы A и j-м столбцом матрицы B.

cross | NumPy

numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)

Функция cross() вычисляет векторное произведение двух векторов a и b в трехмерном пространстве. Так как речь идет о трехмерном пространстве, то векторы a и b, должны содержать три компоненты: x, y, z. Если один из векторов содержит две компоненты, то третья компонента предполагается равной 0 и вычисление производится как обычно. Если оба вектора состоят всего из двух компонент, то будет возвращено одно число — z компонента векторного произведения.

Массивы a и

b могут быть как векторами так и массивами векторов. В последнем случае, векторы определяются последней осью, которая не может содержать меньше 2 и больше 3 элементов.

Параметры:
a — массив NumPy или подобный массиву объект
Компоненты первого вектора (векторов).
b — массив NumPy или подобный массиву объект
Компоненты второго вектора (векторов).
axisa — целое число (необязательный)
Определяет ось, в направлении которой формируются компоненты вектора a (по умолчанию последняя ось).
axisb — массив NumPy или подобный массиву объект
Определяет ось, в направлении которой формируются компоненты вектора b (по умолчанию последняя ось).
axisc — массив NumPy или подобный массиву объект
Определяет ось, в направлении которой формируются компоненты векторного произведения a (по умолчанию последняя ось).
Параметр игнорируется, если входные векторы состоят всего из двух компонент, так как результат такого произведения является скаляром, а не вектором.
axis — массив NumPy или подобный массиву объект
Определяет одинаковую ось всех трех массивов.
Возвращает:
результат — число или массив NumPy
Число, вектор или массив с результатом векторного произведения.

Замечание

С версии 1.9.0 поддерживает транслирование входных массивов.


Примеры

Векторное произведение двух векторов из трех компонет:

>>> import numpy as np
>>> 
>>> a = [2, 3, 5]
>>> b = [7, 11, 13]
>>> 
>>> np. cross(a, b)
array([-16,   9,   1])

Если один из векторов состоит всего из двух компонент, то предполагается, что у него все-таки есть третья компонента, которая просто равна нулю:

>>> a = [1, 7]
>>> x = [1, 7, 0]
>>> b = [1, 3, 7]
>>> 
>>> np.cross(a, b)
array([49, -7, -4])
>>> np.cross(x, b)
array([49, -7, -4])

Если оба вектора состоят всего из двух компонент, то возвращается длина (третья компонента) результирующего вектора:

>>> a = [2, 5]
>>> b = [1, 4]
>>> np.cross(a, b)
array(3)

Если a и b — это массивы векторов, то будет выполнено их поэлементное векторное умножение:

>>> a = np.arange(1, 10).reshape(3, 3)
>>> b = np.arange(9, 0, -1).reshape(3, 3)
>>> 
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> b
array([[9, 8, 7],
       [6, 5, 4],
       [3, 2, 1]])
>>> 
>>>
>>> #  Обратите внимание на выполнение правила правой руки
.
.. # при вычислении векторного произведения: ... np.cross(a, b) array([[-10, 20, -10], [-10, 20, -10], [-10, 20, -10]]) >>> >>> np.cross(b, a) array([[ 10, -20, 10], [ 10, -20, 10], [ 10, -20, 10]]) >>> >>> >>> # Данная функция поддерживает механизм ... # транслирования массивов: >>> a = np.arange(1, 10).reshape(3, 3) >>> a array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) >>> b = [9, 8, 7] >>> >>> np.cross(a, b) array([[-10, 20, -10], [-13, 26, -13], [-16, 32, -16]])

Изменить ориентацию выхоного массива можно с помощью параметра axisc:

>>> a = np.arange(1, 13).reshape(4, 3)
>>> b = np.arange(12, 0, -1).reshape(4, 3)
>>> 
>>> a
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> b
array([[12, 11, 10],
       [ 9,  8,  7],
       [ 6,  5,  4],
       [ 3,  2,  1]])
>>> 
>>> 
>>> np. cross(a, b)    #  по умолчанию, axisc = 1
array([[-13,  26, -13],
       [-13,  26, -13],
       [-13,  26, -13],
       [-13,  26, -13]])
>>> 
>>> np.cross(a, b, axisc = 0)
array([[-13, -13, -13, -13],
       [ 26,  26,  26,  26],
       [-13, -13, -13, -13]])
>>> 

Так же мы можем изменить направление векторов a и b, указав их в соответствующих параметрах axisa и axisb:

>>> a = np.arange(1, 10).reshape(3, 3)
>>> b = np.arange(9, 0, -1).reshape(3, 3)
>>>
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> b
array([[9, 8, 7],
       [6, 5, 4],
       [3, 2, 1]])
>>>
>>> 
>>> np.cross(a, b)
array([[-10,  20, -10],
       [-10,  20, -10],
       [-10,  20, -10]])
>>> 
>>> np.cross(a, b, axisa = 0)
array([[-28,  56, -28],
       [-20,  40, -20],
       [-12,  24, -12]])
>>> 
>>> #  Эквивалентно:
>>> np. cross(a.T, b)
array([[-28,  56, -28],
       [-20,  40, -20],
       [-12,  24, -12]])

Задать одинаковую ось всех трех массивов можно с помощью параметра axis:

>>> np.cross(a, b, axis = 0)
array([[-30, -30, -30],
       [ 60,  60,  60],
       [-30, -30, -30]])
>>> 
>>> np.cross(a, b, axisa = 0, axisb = 0, axisc = 0)
array([[-30, -30, -30],
       [ 60,  60,  60],
       [-30, -30, -30]])

о векторном произведении — Ни о какой безапелляционности в моих высказываниях не может быть и речи! — ЖЖ

о векторном произведении[авг. 28, 2014|08:45 pm]

Anatoly Vorobey


Я прочитал замечательную книгу, называется «Геометрические векторы», которая хороший порядок в голове навела. Помимо прочего, разобрался с тем, что мне с юности мешало и не нравилось в векторном произведении.

Мне казались странными две вещи. Во-первых, что векторное произведение, в отличие от скалярного, «привязано» к трехмерному пространству, а в другом количестве измерений его непонятно, как определять. Во-вторых, что для его определения нужно правило правой руки (оно же «правило буравчика»): мне казалось очень странным, что этот произвольный выбор правила правой руки (а не левой, например) может быть «зашит» в законы физики.

Про первый вопрос, о сути векторного произведения не только в трехмерном пространстве, я напишу потом в записи о всей книге и ее подходе, если соберусь. А о правиле правой руки постараюсь вкратце рассказать тут.

Будем смотреть на вектор «по-физически» как на отрезок в пространстве, с заданным на нем направлением. Длина отрезка определяет величину вектора. Направление, которое мы обозначаем стрелкой — просто выбор одного из двух концов отрезка. Если в векторе поменять направление на обратное, получится обратный вектор, и эту операцию логично обозначать знаком минус, потому что сложение двух этих векторов дает ноль (вектор нулевой величины).


(я сознательно не ввожу систему координат и не говорю о координатах векторов — во всем этом обсуждении можно без них обойтись, и так проще)

Далее, векторное произведение двух векторов определяется обычно так: это отрезок, перпендикулярный плоскости, в которой лежат оба вектора, и его длина равна произведению их длин умноженному на синус угла между ними. Но чтобы этот отрезок стал вектором, осталось еще дать ему направление, т.е. решить, в каком конце рисуется стрелка. Или — что то же самое — в какую из двух сторон от плоскости он уходит. Для этого используют правило правой руки: если расположить руку так, чтобы четыре пальца загибались от первого вектора ко второму, то отставленный большой палец покажет направление векторного произведения.

При этом векторное произведение несколько странно ведет себя по сравнению с обычными векторами, и поэтому, если нужна точность, его называют псевдовектором (или аксиальным вектором). Вот что это значит. Предположим, мы используем векторы для изображения каких-то физических величин, которые мы в принципе можем измерить: например, скорость, или сила, или магнитное поле и так далее. Тогда понятно, что если мы просто посмотрим на ту же физическую систему с другой стороны, под другим углом, то от этого скорости, силы, и другие физические величины не изменятся. Раз наши вектора-стрелки изображают эти физические величины, они тоже не должны от этого измениться. И действительно, с чего бы стрелкам в пространстве меняться от того, что на них посмотрели с другой стороны. Это все просто и тривиально. Далее, есть и другой способ посмотреть «по-другому» на физическую систему: посмотреть на ее зеркальное отражение. Зеркальное отражение некоторое векторы оставляет без изменений: я стою перед зеркалом, моя правая рука направлена вправо — ее отражение в зеркале направлено в ту же сторону: для меня-зеркального это «лево», да, но это то же направление. Другие векторы меняет: если я потянусь рукой к зеркалу, мое отражение потянется в обратном направлении. Но так или иначе, логично ожидать, что все физические величины при зеркальном отражении всей системы изменятся одинаковым «зеркальным» способом.

Но векторное произведение так не работает. Оно в зеркальном отражении меняется на обратное тому, каким, казалось бы, должно быть. И понятно, почему так происходит: из-за правила правой руки. Ведь в зеркальном отражении правая рука становится левой, а векторное произведение там, в отражении, все равно нужно по определению делать по правилу правой.

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

У колес машины есть угловая скорость, которая определяется через векторное произведение. У машины слева оно направлено влево (красная стрелка). Справа зеркальное отражение той же машины. Мы бы ожидали, что в зеркальном направлении стрелка будет теперь идти вправо, но из-за правила правой руки она опять направлена влево.

В общем, векторное произведение ведет себя как обычный вектор, если мы всего лишь поворачиваем систему координат (т. е. смотрим под другим углом) или двигаем ее. Но если мы делаем отражение системы координат (т.е. смотрим на зеркальное отражение), то оно меняет знак в сравнении с обычными векторами, и поэтому называется псевдовектором. Это лишний раз подчеркивает странность произвольного выбора правила правой руки, и того, что физические величины, которые ведут себя в соответствии с законами природы, должны почему-то ему подчиняться.

Теперь другой взгляд на все это, из книги Вайнрайха «Геометрические векторы».

У нас есть отрезок в пространстве, и мы хотим дать ему направление, чтобы он стал вектором. Мы привыкли к тому, что это значит — выбрать одну из его вершин и назвать ее началом, а другую концом (или хвостом и головой), и нарисовать стрелку. Но давайте представим себе, что на самом деле есть два разных вида «направления». Есть два разных способа выбрать что-то, одно из двух, касающееся этого отрезка. Один, когда мы выбираем одну из вершин и рисуем стрелку, называется «полярное направление». Другой вид, когда мы задаем направление вращения отрезка вокруг своей оси, называется «аксиальное направление».

Отрезок может вращаться (или вокруг него можно описывать круги, если желаете) в одном из двух направлений. Обратите внимание, это важно! — неверно называть их «по часовой стрелке» или «против часовой стрелки», это неправильно, потому что каждое из этих аксиальных направлений будет «по часовой стрелке», если смотреть с одного конца отрезка, и «против часовой стрелки», если смотреть с другого. Это просто два противоположных направления. Отрезок, у которого задано такое аксиальное направление, называется аксиальным вектором. Важно уяснить, что у такого вектора нигде нет стрелки, у него нет выбранной вершины, у него есть только выбранное аксиальное направление (направление вращения).

Такие векторы можно складывать друг с другом, или умножать на скаляры, так же легко, как и обычные полярные векторы. Например, как мы складываем обычные векторы? Мы сдвигаем их так, чтобы начало одного уткнулось в конец другого, т. е. пользуемся их стрелками, и потом соединяем дальние концы. Чтобы сложить два аксиальных вектора, нам нужно понять, как их соединить концами: ведь стрелок нет. Но на самом деле это просто: они соединяются так, чтобы они крутились в одном и том же направлении, если переходить с одного на другой. Можно представить себе такие векторы веревками, которые вращаются в своем направлении; если мы их свяжем двумя концами, то они будут либо мешать друг другу крутиться — и тогда мы связали неправильно — либо крутиться вместе, и это правильный способ. И потом мы соединяем дальние концы и закручиваем то, что получилось, в том же направлении.

Зачем нужны аксиальные векторы? Так вот векторное произведение как раз естественным образом и является аксиальным вектором. Мы умножаем два вектора a и b, получаем отрезок определенной величины, перпендикулярный их плоскости. Для того, чтобы дать ему «стрелку», нам нужно что-то вроде правила правой руки. Но чтобы дать ему аксиальное направление, ничего особенного не нужно: оно естественным образом задается как направление вращения от a к b. При этом, как и требуется, от перестановки мест множителей направление произведение меняется на обратное.

Теперь при зеркальном отражении аксиальный вектор ведет себя так же естественно, как и (обычный) полярный вектор. Его направление вращение может измениться на противоположное, в зависимости от его ориентации в пространстве, но это нормально, обычный вектор тоже может измениться на противоположный, если он направлен к зеркалу. Главное — это что все происходит в точности как мы ожидаем: изогнутая стрелка вокруг вектора отражается в зеркале точно так же, как и все остальное. Нет этого странного прыжка стрелки от сверху вниз к снизу вверх, как было, когда мы рисовали у векторного произведения стрелку. Нет такого, что есть обычный нормальный вектор и «плохой» псевдовектор: полярный и аксиальный векторы равноправны и симметричны по своим свойствам.

В этом подходе мы работаем с двумя разными видами векторов, и соответственно разных операций получается больше, и надо с ними разобраться. Но это все выходит довольно просто. Скажем, векторное произведение двух полярных векторов дает аксиальный, как мы только что увидели, и двух аксиальных — тоже дает аксиальный (надо разобраться, как соединить их концы и как определить вращение результата). Зато векторное произведение полярного и аксиального векторов дает обычный полярный вектор. Это объясняет, кстати, почему магнитное поле странным образом переворачивается в зеркальном отражении — в обычной формулировке векторного произведения — но у этого нет физических последствий: потому что когда оно действует на движущуюся заряженную частицу, то ее приложение вычисляется через еще одно векторное произведение, и получается обычный вектор, так что частица будет двигаться «правильно» в отражении.

Скалярное произведение двух аксиальных векторов дает обычный скаляр, как и скалярное произведение двух полярных векторов. Обычный скаляр можно считать «полярным», и у него задано «направление» — просто его знак: 10 и -10 это два полярных скаляра противоположного направления. А вот если составить скалярное произведение полярного и аксиального векторов, получается такая смешная штука, которую называют псевдоскаляр или аксиальный скаляр. Это число, у которого есть одно из двух направлений, но они не совпадают ни с плюсом, ни с минусом. Само число обязано быть положительным, потому что же это просто длина отрезка, но мы его как бы считаем без знака, не +10 и не -10, а «просто 10», и при этом у него есть одно из двух направлений вращения, которые можно условно назвать, например, правым и левым. То есть это будет «правое 10» или «левое 10».

А какое же отношение ко всему этому имеет «правило правой руки», спросите вы? Очень просто. Мы определили новый вид вектора, и с его помощью векторное произведение, без правила правой руки. Но если нам хочется, то правило правой руки просто-напросто дает способ перевести любой аксиальный вектор в полярный, и наоборот. То, как загибаются пальцы — это аксиальное направление, то, куда указывает большой палец — полярное.

Поскольку аксиальное и полярное направления не зависят друг от друга, нет естественного способа перевести одно в другое. Надо выбрать один из двух таких способов: либо правило правой руки, либо правило левой руки (кстати, выбор системы координат — тоже является выбором такого правила: то, как оси x,y,z расположены друг относительно друга, задает либо правую, либо левую руку). Как только мы выбираем одно из них, мы можем все наши аксиальные вектора заменить на сооветствующие полярные, и избавиться от «отрезка с направлением вращения» (а «правое 10» становится соответственно +10 или -10, смотря какое правило мы выбрали). Но тогда мы возвращаемся к старой картине мира, в которой эти вновь полученные вектора начинают вести себя странно в зеркальном отражении, и за это в старой картине мира их называли ‘аксиальными’ или ‘псевдовекторами’. А псевдоскаляры в зеркальном отражении, хоть и выглядят обычными числами, теперь почему-то меняют знак на противоположный. Теперь мы видим, что это странное несимметричное поведение не присутствует в природе, а возникает, когда мы выбираем произвольным образом одно из двух правил для того, чтобы упростить себе жизнь и работать только с одним типом векторов. Но если использовать оба, то законы и движение и все такое происходит логично, отражается в зеркале так, как мы того ожидаем, и не нужно правило правой руки.

По-моему, очень красиво.

Умножение матрицы на вектор — Мэтью Н. Бернштейн . В этом посте я дам определение умножения матрицы на вектор, а также три угла, с которых можно рассматривать эту концепцию. Третий аспект подразумевает просмотр матриц как функций между векторными пространствами

Введение

В предыдущем посте мы обсуждали три способа просмотра матрицы: как таблицу значений, как список векторов и, наконец, как функцию. Это третий способ просмотра матриц, который действительно придает матрицам их силу. Здесь мы представим операцию между матрицами и векторами, называемую умножением матрицы на вектор , которая позволит нам использовать матрицы как функции.

Умножение матрицы на вектор — это операция между матрицей и вектором, в результате которой получается новый вектор. Примечательно, что умножение матрицы на вектор определяется только между матрицей и вектором, где длина вектора равна количеству столбцов матрицы. Он определяется следующим образом: 9n$ матрично-векторное умножение $\boldsymbol{A}$ и $\boldsymbol{x}$ определяется как

$$\boldsymbol{A}\boldsymbol{x} := x_1\boldsymbol{a} _{*,1} + x_2\boldsymbol{a}_{*,2} + \dots + x_n\boldsymbol{a}_{*,n}$$

, где $\boldsymbol{a}_{*, i}$ — $i$-й вектор-столбец $\boldsymbol{A}$.

Как и большинство математических понятий, умножение матрицы на вектор можно рассматривать с разных точек зрения на разных уровнях абстракции. Эти взгляды пригодятся, когда мы попытаемся концептуализировать различные способы использования матричного умножения на вектор для моделирования реальных проблем. Ниже приведены три способа, которые я считаю полезными для концептуализации умножения матрицы на вектор в порядке от наименее к наиболее абстрактному:0004

  1. В качестве «построчного» процесса генерации вектора: Умножение матрицы на вектор определяет процесс создания нового вектора с использованием существующего вектора, где каждый элемент нового вектора «генерируется» путем взятия взвешенной суммы каждой строки матрицы с использованием элементов вектора в качестве коэффициентов
  2. Как взятие линейной комбинации столбцов матрицы: Умножение матрицы на вектор — это процесс взятия линейной комбинации пространства столбцов матрицы используя элементы вектора в качестве коэффициентов
  3. Как вычисление функции между векторными пространствами: Умножение матрицы на вектор позволяет матрице определить отображение между двумя векторными пространствами.

Я считаю полезными все три точки зрения. Первые две перспективы обеспечивают способ понимания механизма умножения матрицы на вектор, тогда как третья перспектива обеспечивает суть умножения матрицы на вектор. Именно эта третья перспектива умножения матрицы на вектор позволяет нам рассматривать матрицы как функции, как мы обсуждали в предыдущем посте.

Умножение матрицы на вектор как «построчный» процесс генерации вектора

Полезный способ просмотра механизма умножения матрицы на вектор между матрицей $\boldsymbol{A}$ и вектором $\boldsymbol{x }$ заключается в том, чтобы рассматривать его как своего рода «процесс» (или даже как компьютерную программу), который создает каждый элемент выходного вектора итеративным образом, когда мы перебираем каждую строку $A$. В частности, для каждой строки $i$ матрицы $\boldsymbol{A}$ мы берем $\boldsymbol{x}$ и вычисляем скалярное произведение между $\boldsymbol{x}$ и $i$-й строкой матрицы, тем самым производя $i$-й элемент выходного вектора (см. n$, считается, что

$$\boldsymbol{Ax} = \begin{bmatrix}\boldsymbol{a}_{1,*} \cdot \boldsymbol{x} \\ \boldsymbol{a}_{2,*} \cdot \boldsymbol {x} \\ \vdots \\ \boldsymbol{a}_{m,*} \cdot \boldsymbol{x} \\ \end{bmatrix}$$

, где $\boldsymbol{a}_{i,* }$ — это $i$-й вектор-строка в $\boldsymbol{A}$.

Доказательство:

\[\begin{align*} \boldsymbol{A}\boldsymbol{x} &:= x_1\boldsymbol{a}_{*,1} + x_2\boldsymbol{a}_{* ,2} + \dots + x_n\boldsymbol{a}_{*,n} \\ &= x_1 \begin{bmatrix}a_{1,1} \\ a_{2,1} \\ \vdots \\ a_ {m, 1} \end{bmatrix} + x_2\begin{bmatrix}a_{1,2} \\ a_{2,2} \\ \vdots \\ a_{m, 2} \end{bmatrix} + \ точки + x_n\begin{bmatrix}a_{1,n} \\ a_{2,n} \\ \vdots \\ a_{m, n} \end{bmatrix} \\ &= \begin{bmatrix}x_1a_{ 1,1} \\ x_1a_{2,1} \\ \vdots \\ x_1a_{m, 1} \end{bmatrix} + \begin{bmatrix}x_2a_{1,2} \\ x_2a_{2,2} \ \ \vdots \\ x_2a_{m, 2} \end{bmatrix} + \dots + \begin{bmatrix}x_na_{1,n} \\ x_na_{2,n} \\ \vdots \\ x_na_{m, n } \end{bmatrix} \\ &= \begin{bmatrix} x_1a_{1,1} + x_2a_{1,2} + \dots + x_na_{1,n} \\ x_1a_{2,1} + x_2a_{2 ,2} + \dots + x_na_{2,n} \\ \vdots \\ x_1a_{m,1} + x_2a_{m,2} + \dots + x_na_{m,n} \\ \end{bmatrix} \ \ &= \begin{bmatrix} \sum_{i=1}^n a_{1,i}x_i \\ \sum_{i=1}^n a_{2,i}x_i \\ \vdots \\ \sum_ {i=1}^n a_{m,i}x_i \\ \end{bmatrix} \\ &= \begin{bma trix}\boldsymbol{a}_{1,*} \cdot \boldsymbol{x} \\ \boldsymbol{a}_{2,*} \cdot \boldsymbol{x} \\ \vdots \\ \boldsymbol{a }_{m,*} \cdot \boldsymbol{x} \\ \end{bmatrix}\end{align*}\]

$\square$