Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему матричное умножение работает именно так?

Spectre Spect Ученик (126), закрыт 4 года назад
Под "Почему матричное умножение работает именно так?" я подразумеваю, то, почему мы для нахождения например первого элемента полученной после умножения матрицы, именно умножать элемент первого столбца первой матрицы, на элемент первой строки второй матрицы и затем складывать с произведением второго столбца первой матрицы на вторую строку второй матрицы и т. д. Почему не вычитать?. Почему умножаются именно столбцы на строки, а не строки на строки? В чём вообще смысл этих действий? Не из воздуха же это всё придумали. Я пытаюсь найти это уже довольно таки долго. Но на всех сайтах, которые я просмотрел, были только правила умножения матриц, и их свойства. Конечно может я плохо искал (поэтому дожидаясь ответа, буду параллельно дальше искать). Если вы знаете какой-нибудь источник, где это можно узнать, прошу скажите. (желательно в простой форме, ибо я новичок в линейной алгебре. Но и в сложной тоже пойдёт, лишь бы было)
Лучший ответ
Sardonix ! Мыслитель (9288) 4 года назад
Это понять очень просто на примере квадратных матриц.
Попробуйте в многомерном пространстве взять какой-нибудь вектор и "честно" пересчитать его координаты, если произвести сначала одно преобразование пространства, которое оставляет нулевую точку на месте, а потом другое преобразование пространства, которое тоже оставляет нулевую точку на месте.
Ну, например, сначала поворот в трехмерном пространстве на какой-то угол вокруг одной оси, а потом поворот на другой угол вокруг другой оси, которая пересекает первую ось. Можно для визуализации использовать, например, кубик Рубика.
Если с трехмерным пространством трудности, то попробуйте на плоскости, например, комбинации поворотов, отражений и инверсий.
Вы увидите, что результат в точности совпадает перемножению квадратных матриц, если суметь каждое их этих преобразований записать в виде матриц.

Если матрицы не квадратные, то там этот закон перемножения выводится только математически. Если у вас заданы два преобразования пространства A и B, так, что координаты векторов X и Y преобразуются как

t1 = a11*x1 + .+ a1m*xm
...
tn= an1*x1 + .+ anm*xm
и
s1 = b11*y1 + .+ b1n*yn
...
sk= bk1*y1 + .+ bkn*yn

Теперь возьмите все вычисленные координаты T из первых формул и подставьте их во вторые формулы вместо соответствующих координат Y. То есть вместо y1 подставляете выражение для t1, и т. д. до вместо yn подставляете выражение для tn. Таким образом вы выразите координаты S через координаты X. И вы увидите, что получился закон перемножения матриц. Потренируйтесь сначала на 2-мерном пространстве.
Остальные ответы
Тугеус Владимир Искусственный Интеллект (200489) 4 года назад
Возьмём другой пример: деление многозначных чисел столбиком. Вот Вам так уж важно, ПОЧЕМУ каждый шаг алгоритма выполняется именно так, а не иначе? Вот почему делитель надо умножать на подобранную цифру, почему полученное произведение надо вычитать, а прибавлять и т. д.? Конечно, объяснить всё это можно, хотя тоже надо мозги подключать, но нужно ли? Нам важно, что метод работает!!! Потому, что если частное умножишь на делитель, то получишь обратно делимое!
Ещё более сложный случай: извлечение квадратного корня столбиком - знаете такой алгоритм? Там уже нужно хорошенько напрячь мозги, чтобы убедиться в правомерности каждого шага. А на фига это надо? Поэтому Вы нигде и не прочитаете, откуда взялся алгоритм - никто просто парится над этим не будет. Важен результат: при возведении в квадрат получаем исходное число.
Так и при умножении матриц: важно, что при обратном действии получаем исходную матрицу.
Spectre SpectУченик (126) 4 года назад
Какая вам разница нужно ли это мне или нет? Вас так заботит что меня интересует? Я задал конкретный вопрос, и ожидаю конкретного ответа, а не сарказмов и указаний "Просто используй, работает же". Может я вам открою глаза, но изучение сути работы алгоритма дадут более подробное понимание темы, и соответственно в тех местах, где подобные вам будут думать "А как это сделать, алгоритма ведь для решения этого нету...", я бы, с пониманием темы, мог бы построить аналогию с стандартным матричным умножением, и попробовать исходя из этого решить эту задачу. Прошу, если не знаете, не пишите, если я задал вопрос, значит мне это нужно, и не имеет смысла зачем.
inga zajoncИскусственный Интеллект (201352) 4 года назад
Деление столбиком как раз очень легко объяснимо.
Что же касается матриц, то достаточно представить, что умножаем матрицу на группу векторов.
Юрий Семыкин Искусственный Интеллект (216395) 4 года назад
Это не единственный способ умножения матриц. "По определению", а другие способы работают по другому определению. Этот способ наиболее распространён из-за инженерных приложений.
Юрий СемыкинИскусственный Интеллект (216395) 4 года назад
Можно доказать, что при линейное преобразование одного линейного пространства в другое (R1 -> R2), описывается матрицей (обратного преобразования может и не быть), Если ещё раз преобразовать, то тоже матрицей (R2->R3) матрица преобразования из первого в третье (R1->R3) должна быть рассчитана по правилу умножения матриц (которое вы описали). Доказывается всё это несложно, но "много букофф"
Άνθρωπος Просветленный (25137) 4 года назад
Матрица была изобретена как численное отображение конечномерных линейных операторов для векторов.
Линейный оператор при этом сводится к совокупности скалярных произведений исходного вектора на вектора матрицы.

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

И вот если бы умножение было строка на строку, то при умножении матриц пришлось бы делать транспонирование, поскольку применение линейных операторов некоммутативно, а умножение строк - коммутативно. Поэтому так и придумали - строка на столбец.
Похожие вопросы