Умножение матриц
Умноже́ние ма́триц — одна из основных операций над матрицами. Матрица, получаемая в результате операции умножения, называется произведе́нием ма́триц.
Содержание |
Определение [править]
Пусть даны две прямоугольные матрицы
и
размерности
и
соответственно:
Тогда матрица
размерностью
называется их произведением:
где:
Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором; в этом случае говорят, что форма матриц согласована. В частности, умножение всегда выполнимо, если оба сомножителя — квадратные матрицы одного и того же порядка.
Следует заметить, что из существования произведения
вовсе не следует существование произведения 
Иллюстрация [править]
Произведение матриц AB состоит из всех возможных комбинаций скалярных произведений строк матрицы A и столбцов матрицы B. Элемент матрицы AB с индексами i, j есть скалярное произведение i-ой строки матрицы A и j-го столбца матрицы B.
Иллюстрация справа демонстрирует вычисление произведения двух матриц A и B, она показывает как каждые пересечения в произведении матриц соответствуют строкам матрицы A и столбцам матрицы B. Размер результирующей матрицы всегда максимально возможный, то есть для каждой строки матрицы A и столбца матрицы B есть всегда соответствующее пересечение в произведении матрицы.
Значения на пересечениях отмеченных кружочками будут:

В общем случае, произведение матриц не является коммутативной операцией. К примеру:
Элемент
произведения матриц приведённых выше вычисляется следующим образом
Первая координата в обозначении матрицы обозначает строку, вторая координата — столбец; этот порядок используют как при индексации, так и при обозначении размера. Элемент
на пересечении строки
и столбца
результирующей матрицы является скалярным произведением
-й строки первой матрицы и
-го столбца второй матрицы. Это объясняет почему ширина и высота умножаемых матриц должны совпадать: в противном случае скалярное произведение не определено.
Мотивация [править]
Описанное правило матричного умножения прозрачнее всего мотивируется исходя из умножения вектора на матрицу.
Последнее естественно вводится исходя из того, что при разложении векторов по базису действие (любого) линейного оператора A дает выражение компонент вектора v' = Av:
-то есть линейный оператор оказывается представлен матрицей, векторы - векторами-столбцами, а действие оператора на вектор - матричным умножением вектора-столбца слева на матрицу оператора (это частный случай матричного умножения, когда одна из матриц - вектор-столбец - имеет размер 1хn).
(Равно переход к любому новому базису при смене координат представляется полностью аналогичным выражением, только
в этом случае уже не компоненты нового вектора в старом базисе, а компоненты старого вектора в новом базисе; при этом
- элементы матрицы перехода к новому базису).
Далее, рассмотрев последовательное действие на вектор двух операторов: сначала A, а потом B (или преобразование базиса A, а затем преобразование базиса B), имеем, дважды применив нашу формулу:
откуда видно, что композиции BA действия линейных операторов A и B (или аналогичной композиции преобразований базиса) соответствует матрица, вычисляемая по рецепту произведения соответствующих матриц:
Определенное таким образом произведение матриц оказывается совершенно естественным и очевидно полезным (дает простой и универсальный способ вычисления композиций произвольного количества линейных преобразований).
Свойства [править]
Сочетательное свойство:
Распределительное свойство:

.
Произведение матрицы на единичную матрицу
подходящего порядка равно самой матрице:
Произведение матрицы на нулевую матрицу
подходящей размерности равно нулевой матрице:
Если
и
— квадратные матрицы одного и того же порядка, то произведение матриц обладает ещё рядом свойств.
Умножение матриц в целом некоммутативно:
Если
, то матрицы
и
называются перестановочными или коммутирующими между собой.
Определитель и след произведения не зависят от порядка умножения матриц:
Обратная матрица [править]
Квадратная матрица
называется неособенной (невырожденной), если она имеет единственную обратную матрицу
такую, что выполняется условие:
В противном случае матрица
называется особенной (вырожденной).
Матрица
порядка
является невырожденной в том и только в том случае, если
в этом случае
есть квадратная матрица того же порядка 
где
— алгебраическое дополнение элемента
в определителе ![\det \left [ a_{ik} \right ].](http://upload.wikimedia.org/math/9/a/9/9a9eedb99c1a6a5dd32a39e5bca201e0.png)
Алгоритмы быстрого перемножения матриц [править]
Сложность вычисления произведения матриц по определению составляет
, однако существуют более эффективные алгоритмы[1], применяющиеся для больших матриц. Вопрос о предельной скорости умножения больших матриц, также как и вопрос о построении наиболее быстрых и устойчивых практических алгоритмов умножения больших матриц остается одной из нерешенных проблем линейной алгебры.
- Алгоритм Штрассена (1969)
- Первый алгоритм быстрого умножения больших матриц был разработан Фолькером Штрассеном[2] в 1969. В основе алгоритма лежит рекурсивное разбиение матриц на блоки 2Х2. Штрассен доказал, что матрицы 2Х2 можно некоммутативно перемножить с помощью семи умножений, поэтому на каждом этапе рекурсии выполняется семь умножений вместо восьми. В результате асимптотическая сложность этого алгоритма составляет
. Недостатком данного метода является бо́льшая сложность программирования по сравнению со стандартным алгоритмом, слабая численная устойчивость и больший объём используемой памяти. Разработан ряд алгоритмов на основе метода Штрассена, которые улучшают численную устойчивость, скорость по константе и другие его характеристики. Тем не менее, в силу простоты алгоритм Штрассена остается одним из практических алгоритмов умножения больших матриц. Штрассен также выдвинул следующую гипотезу Штрассена: для сколь угодно малого
существует алгоритм, при достаточно больших натуральных n гарантирующий перемножение двух матриц размера
за
операций.
- Дальнейшие улучшения показателя степени ω для скорости матричного умножения
- В дальнейшем оценки скорости умножения больших матриц многократно улучшались. Однако эти алгоритмы носили теоретический, в основном приближенный характер. В силу неустойчивости алгоритмов приближенного умножения в настоящее время они не используются на практике.
- Алгоритм Пана (1978)
- В 1978 Пан[3] предложил свой метод умножения матриц, сложность которого составила Θ(n2.78041).
- Алгоритм Бини (1979)
- В 1979 группа итальянских учёных во главе с Бини[4] разработала алгоритм умножения матриц с использованием тензоров. Его сложность составляет Θ(n2.7799).
- Алгоритмы Шёнхаге (1981)
- В 1981 Шёнхаге[5] представил метод, работающий со скоростью Θ(n2.695). Оценка получена с помощью подхода,названного частичным матричным умножением. Позже ему удалось получить оценку Θ(n2.6087).
- Затем Шёнхаге на базе метода прямых сумм получил оценку сложности Θ(n2.548). Романи сумел понизить оценку до Θ(n2.5166), а Пан — до Θ(n2.5161).
- В 1990 Копперсмит и Виноград[6] опубликовали алгоритм, который в модификации Вильямс Василевской [7] 2011 года умножает матрицы со скоростью O(n2.3727). Этот алгоритм использует идеи, схожие с алгоритмом Штрассена. На сегодняшний день модификации алгоритма Копперсмита-Винограда являются наиболее асимптотически быстрыми. Но тот факт, что полученные улучшения ничтожны, позволяет говорить о существовании "барьера Копперсмита-Винограда" в асимптотических оценках скорости алгоритмов. Алгоритм Копперсмита-Винограда эффективен только на матрицах астрономического размера и на практике применяться не может.
- Связь с теорией групп (2003)
- В 2003 Кох и др. рассмотрели в своих работах[8] алгоритмы Штрассена и Копперсмита-Винограда в контексте теории групп. Они показали, что гипотеза Штрассена справедлива, если выполняется одна из гипотез теории групп[9].
См. также [править]
Литература [править]
- Корн Г., Корн Т. Алгебра матриц и матричное исчисление // Справочник по математике. — 4-е издание. — М: Наука, 1978. — С. 392—394..
Примечания [править]
- ↑ Кибернетический сборник. Новая серия. Вып. 25. Сб. статей 1983 — 1985 гг.: Пер. с англ. — М.: Мир, 1988 — В.Б. Алекссев. Сложность умножения матриц. Обзор.
- ↑ Strassen, Volker, Gaussian Elimination is not Optimal, Numer. Math. 13, p. 354-356, 1969
- ↑ Pan V. Ya, Strassen's algorithm is not optimal — trilinear technique of aggregating uniting and canceling for constructing fast algorithms for matrix operations. — Proc. 19th Annual Symposium on Foundations of Computer Science, Ann Arbor, Mich., 1978
- ↑ Bini D., Capovani M., Lotti G., Romani F. —
complexity for approximate matrix multiplication. — Inform. Process. Lett., 1979 - ↑ Schonhage A. Partial and total matrix multiplication. - SIAM J. Comput., 1981
- ↑ Don Coppersmith and Shmuel Winograd. Matrix multiplication via arithmetic progressions. Journal of Symbolic Computation, 9:251–280, 1990.
- ↑ Williams, Virginia (2011), Breaking the Coppersmith-Winograd barrier
- ↑ Group-theoretic Algorithms for Matrix Multiplication
- ↑ Toward an Optimal Algorithm for Matrix Multiplication











.







![A^{-1} = \left [ a_{ik} \right ]^{-1} = \left [ \frac{A_{ki}}{\det A} \right ],](http://upload.wikimedia.org/math/f/c/4/fc478c4aa5614fab99653598c1aa4a9c.png)
. Недостатком данного метода является бо́льшая сложность программирования по сравнению со стандартным алгоритмом, слабая численная устойчивость и больший объём используемой памяти. Разработан ряд алгоритмов на основе метода Штрассена, которые улучшают численную устойчивость, скорость по константе и другие его характеристики. Тем не менее, в силу простоты алгоритм Штрассена остается одним из практических алгоритмов умножения больших матриц. Штрассен также выдвинул следующую
существует алгоритм, при достаточно больших
за
операций.
complexity for approximate matrix multiplication. — Inform. Process. Lett., 1979