MatrixCalc

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

Перемножьте две матрицы размером до 50×50 и посмотрите скалярное произведение за каждым элементом — плюс сложение, вычитание, умножение на число, транспонирование и целые степени.

Матрица A
строки: 3
столбцы: 3
Матрица B
строки: 3
столбцы: 3
Операции
Результат
Выберите операцию, чтобы увидеть результат здесь. Сообщения об ошибках появляются в этой области.

Советы: настройте размер (макс. 50×50). Для A×B число столбцов A должно быть равно числу строк B. Det/обратная/след/степень требуют квадратных матриц.

React, Tailwind & shadcn/ui. No external math deps. — Русский

Заполните матрицы A и B выше и нажмите A × B. Кнопка неактивна, когда размеры не подходят, и рядом появляется подсказка, какие размерности должны совпасть. Откройте шаги, чтобы увидеть каждый элемент раскрытым в сумму произведений — ровно так, как вы записали бы это вручную. На той же вкладке есть сложение, вычитание и транспонирование, а вкладки Скаляры и Степень закрывают k·A и Aⁿ — всё разобрано ниже.

Правило размерностей

Чтобы умножить матрицу m×n на n×p, внутренние числа должны совпадать: столбцы A должны отвечать строкам B. Результат имеет размер m×p — внешние числа. Поэтому A × B может быть вполне корректным, тогда как B × A вообще не определено.

Правило «строка на столбец»

Элемент (i, j) произведения — это скалярное произведение строки i матрицы A на столбец j матрицы B:

c(i,j) = a(i,1)·b(1,j) + a(i,2)·b(2,j) + … + a(i,n)·b(n,j)

12
34
×
56
78
=
1922
4350

Проверьте первый элемент: 1·5 + 2·7 = 19. Каждый из четырёх элементов — своё маленькое скалярное произведение, и калькулятор выписывает все четыре разложения в панели шагов.

AB — это не BA

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

Ещё одно предупреждение: A·B = 0 не означает, что A или B нулевая. У матриц, в отличие от обычных чисел, есть делители нуля.

Что всё же выполняется

  • Ассоциативность: (A·B)·C = A·(B·C)
  • Дистрибутивность: A·(B + C) = A·B + A·C
  • Единица: I·A = A·I = A
  • Транспонирование меняет порядок: (A·B)ᵀ = Bᵀ·Aᵀ
  • Определители перемножаются: det(A·B) = det(A)·det(B)
  • Ранг не может вырасти: rang(A·B) ≤ min(rang(A), rang(B))

Сложение, вычитание и умножение на число

Сложение и вычитание ведут себя ровно так, как хочется: поэлементно, без сюрпризов. Обе матрицы должны иметь одинаковые размеры — 2×3 складывается только с другой 2×3 — и результат эти размеры сохраняет.

12
34
+
56
78
=
68
1012

Поскольку операция идёт по позициям, сложение наследует привычную арифметику: A + B = B + A, и расстановка скобок в тройной сумме роли не играет. Это настоящий контраст с умножением. Вычитание — это сложение с противоположной матрицей, поэтому A − B равно A + (−1)·B, и порядок важен ровно в том обычном смысле, в каком 5 − 3 отличается от 3 − 5.

Умножение на скаляр растягивает каждый элемент на одно и то же число и вовсе не требует определённой формы. Одно следствие удивляет почти всех: умножение матрицы на k не умножает её определитель на k. Для матрицы n×n det(k·A) = kⁿ·det(A), потому что растягивается каждая из n строк и определитель умножается по разу за каждую. Удвоение матрицы 3×3 увеличивает её определитель в восемь раз. След, будучи простой суммой, ведёт себя ожидаемо: tr(k·A) = k·tr(A).

Транспонирование

Транспонирование отражает матрицу относительно главной диагонали: элемент из строки i, столбца j переходит в строку j, столбец i. Матрица m×n становится n×m, так что операция определена для любой формы. Столбец превращается в строку, и поэтому xᵀy — стандартная запись скалярного произведения.

123
456
ᵀ =
14
25
36

Три тождества стоит запомнить. Двойное транспонирование возвращает исходную матрицу: (Aᵀ)ᵀ = A. У суммы транспонирование распределяется: (A + B)ᵀ = Aᵀ + Bᵀ. А у произведения оно меняет порядок: (A·B)ᵀ = Bᵀ·Aᵀ, а не Aᵀ·Bᵀ. Перестановку навязывают размеры — если A имеет размер 2×3, а B 3×4, то Aᵀ это 3×2, Bᵀ это 4×3, и согласуется только Bᵀ·Aᵀ. Матрицу, равную своей транспонированной, называют симметричной, и симметричные матрицы ведут себя на редкость хорошо: их собственные значения всегда вещественны, и именно к ним применимо разложение Холецкого.

Степени

Aⁿ означает умножить A на себя n раз и имеет смысл только для квадратных матриц. A⁰ — это единичная матрица, а не нулевая, и — это сама A.

11
01
² =
12
01
, и в общем случае Aⁿ =
1n
01

Возведение в квадрат не поэлементное: правый верхний элемент равен 1·1 + 1·1 = 2, а не 1² = 1. Калькулятор использует бинарное возведение в степень, поэтому A¹⁶ стоит четырёх умножений, а не пятнадцати. Степени возникают везде, где процесс повторяется: в цепи Маркова, если P хранит вероятности перехода за один шаг, то Pⁿ хранит их за n шагов. В матрице смежности элемент (i, j) матрицы Aⁿ считает пути длины n из i в j. Для очень больших показателей диагонализуйте: если A = P·D·P⁻¹ с диагональной D, то Aⁿ = P·Dⁿ·P⁻¹, а это начинается с собственных значений.

Частые ошибки

  • Умножать поэлементно. Умножение матриц — это не a(i,j)·b(i,j). Такая операция есть — произведение Адамара — но A × B означает не её.
  • Считать, что AB = BA. Умножение матриц некоммутативно.
  • Делать вывод, что множитель нулевой. A·B = 0 не означает, что A или B нулевая.
  • Писать (A·B)ᵀ = Aᵀ·Bᵀ. Порядок меняется. Это самая частая ошибка с транспонированием.
  • Возводить в степень каждый элемент. A² — это A·A, а не матрица квадратов. Совпадают они только у диагональных матриц.
  • Прибавлять число к матрице. A + 3 не имеет смысла. Чтобы прибавить 3 по диагонали, прибавьте 3·I.

Частые вопросы

Когда две матрицы можно перемножить?
Когда число столбцов первой равно числу строк второй. Матрицу 2×3 можно умножить на 3×4, результат будет 2×4.
Почему A×B не равно B×A?
Потому что элементы составляются из строк первой матрицы и столбцов второй. При смене порядка меняются эти комбинации, а нередко и размер результата.
Что такое произведение Адамара?
Поэлементное умножение двух матриц одинакового размера. Это другая операция, и в линейной алгебре под умножением обычно понимают не её.
Как умножить матрицу на вектор?
Столбец — это матрица n×1. Задайте B как один столбец, и A×B даст нужный результат.
Можно ли складывать матрицы разного размера?
Нет. Сложение и вычитание требуют одинаковых размеров, потому что работают позиция за позицией и каждая позиция должна быть в обеих матрицах.
Почему при удвоении матрицы 3×3 определитель растёт в восемь раз?
Потому что скаляр попадает в каждую из трёх строк, и определитель умножается на него по разу за строку. В общем виде det(k·A) = kⁿ·det(A).

Другие калькуляторы