MatrixCalc

Калькулятор обратной матрицы

Найдите обратную матрицу и проследите каждое элементарное преобразование строк — методом Гаусса-Жордана над [A | I], через присоединённую матрицу или методом Монтанте. В точных дробях, а не в округлённых десятичных.

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

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

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

Введите матрицу, откройте вкладку Дополнительно и нажмите A⁻¹. Если матрица вырожденная, вы получите понятное сообщение вместо неверного ответа. Панель пошагового решения показывает промежуточные значения точными дробями — 3/5, а не 0,6000000001 — потому что работает в рациональной арифметике, а не в плавающей точке.

Когда обратная существует

Обратная A⁻¹ — это матрица, которая отменяет исходную: A·A⁻¹ = A⁻¹·A = I. Она существует только для квадратных матриц и только когда определитель отличен от нуля. Матрицу с нулевым определителем называют вырожденной, и обратной у неё нет вовсе — ни большой, ни приближённой, никакой. Преобразование уничтожило информацию, и никакая матрица её не вернёт.

Короткая формула для 2×2

Поменяйте местами главную диагональ, смените знак у побочной, поделите на определитель:

ab
cd
⁻¹ = 1/(ad − bc) ·
d−b
−ca

Деление на ad − bc — то место, где вырожденность заявляет о себе: если определитель равен нулю, делить не на что, и формула ломается ровно тогда, когда обратная перестаёт существовать.

Гаусс-Жордан на расширенной матрице

Это общий метод и именно его калькулятор показывает по шагам. Запишите A рядом с единичной матрицей и выполняйте преобразования строк, пока левая половина не станет единичной. То, во что превратилась правая половина, и есть A⁻¹:

4710
2601
103/5−7/10
01−1/52/5

Если в какой-то момент строка слева станет полностью нулевой, остановитесь: матрица вырожденная и обратной нет. Всегда проверяйте умножением — A·A⁻¹ должно дать в точности единичную матрицу, и кнопка A × B выполняет эту проверку в два клика.

Загруженная выше матрица 3×3 даёт целые числа, потому что её определитель равен ровно −1:

211
132
100
⁻¹ =
001
−213
3−1−5

Посмотрите на последнюю строку исходной матрицы: она выбирает первую координату и отбрасывает две другие. Обратная обязана вернуть эту информацию, поэтому её элементы велики по сравнению с элементами обращаемой матрицы. Это общая закономерность: чем ближе определитель к нулю, тем больше обратная, ведь det(A⁻¹) = 1/det(A).

Формула через присоединённую матрицу

A⁻¹ = adj(A) / det(A), где присоединённая — это транспонированная матрица алгебраических дополнений. Постройте матрицу дополнений C(i,j) = (−1)^(i+j)·M(i,j), транспонируйте её и поделите на определитель.

Формула изящна, и именно её используют доказательства, потому что она выражает обратную в замкнутом виде, а не как результат алгоритма. Она же непрактична: нужно определителей порядка n−1. Начиная с 4×4 берите Гаусса-Жордана.

Почти вырожденная — уже проблема

Матрице не обязательно быть вырожденной, чтобы доставить хлопот. Если определитель просто мал по сравнению с величиной элементов, матрица плохо обусловлена: крошечное изменение входа даёт огромное изменение обратной, а в плавающей точке таким изменением может оказаться чистая ошибка округления. Решение системы через такую обратную способно вернуть ответ, в котором нет ни одной верной цифры и который при этом выглядит вполне правдоподобно.

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

Почему сама обратная нужна редко

Чаще всего цель не обратная матрица, а решение Ax = b, и обратная — просто путь, запомнившийся с занятий. Путь дорогой. Вычислить A⁻¹ и затем умножить стоит примерно втрое больше арифметики, чем прямое приведение [A | b], и теряет точность на двух этапах вместо одного.

Своё место обратная занимает там, где нужна сама матрица, а не одно решение: чтобы прочитать, как каждый вход влияет на каждый выход, чтобы скомпоновать её с другими преобразованиями или подставить в формулу, записанную через A⁻¹. Если вам нужен только x, берите приведение к ступенчатому виду; если нужно много решений для одной и той же A — берите LU-разложение, оно ещё дешевле.

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

  • Обращать элементы по одному. Обратная — это не матрица обратных величин: 1/a(i,j) не имеет к ней отношения.
  • Путать порядок. (A·B)⁻¹ = B⁻¹·A⁻¹, а не A⁻¹·B⁻¹.
  • Решать системы через обратную. Для Ax = b приведение [A | b] требует меньше операций и точнее численно.
  • Использовать присоединённую матрицу на больших матрицах. Ей нужно определителей порядка n−1. Начиная с 4×4 это гораздо медленнее приведения.
  • Путать обратную с транспонированной. Они совпадают только у ортогональных матриц. В общем случае между ними нет связи.

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

Почему калькулятор пишет, что обратной матрицы нет?
Её определитель равен нулю, то есть матрица вырожденная. Проверьте, не является ли одна строка кратной другой или суммой остальных — обычно причина в этом.
Можно ли обратить неквадратную матрицу?
В обычном смысле нет. У прямоугольной матрицы бывает только односторонняя или псевдообратная, а это другая операция.
Почему шаги показаны дробями?
Движок пошагового решения работает в точной рациональной арифметике, поэтому промежуточные значения не теряют точности. Панель в любой момент можно переключить на десятичные.
Как проверить результат?
Умножьте обратную матрицу на исходную. Должна получиться единичная: единицы по диагонали и нули во всех остальных местах.
Стоит ли обращать матрицу, чтобы решить систему?
Почти никогда. Приведение расширенной матрицы [A | b] стоит примерно трети арифметики и численно устойчивее, чем построить обратную и умножить.

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