О проекте MatrixCalc
MatrixCalc — бесплатный онлайн-калькулятор матриц. Он выполняет стандартные операции линейной алгебры — сложение, вычитание, умножение, транспонирование, определитель, обратную матрицу, ранг, след, степени, собственные значения — для матриц размером до 50×50 и для большинства из них показывает полное пошаговое решение, чтобы можно было проследить ход рассуждений, а не просто списать ответ.
Зачем это нужно
Большинство матричных инструментов либо выдают число без единого пояснения, либо прячут калькулятор под рекламой и обязательной регистрацией. Этот работает целиком в браузере, не требует аккаунта и сделан так, чтобы действительно помогать и при проверке домашнего задания, и когда нужен быстрый надёжный ответ.
Объяснение важно не меньше самого числа. Калькулятор, который выдаёт det(A) = −59 и на этом останавливается, не дал вам ничего, что пригодится на экзамене. Поэтому каждая страница операции на этом сайте несёт математику, стоящую за кнопкой: что означает результат, как воспроизвести его вручную, какой метод выбрать для какой матрицы и какие именно ошибки стоят баллов.
Как устроены вычисления
Всё считается локально на JavaScript — ваши матрицы никогда не покидают устройство. Никакой математической библиотеки за кулисами нет, алгоритмы реализованы напрямую, а какой из них запускается, зависит от матрицы:
- Определители используют замкнутую формулу для 2×2 и 3×3, а начиная с 4×4 — LU-разложение с частичным выбором ведущего элемента. Разложение по минорам стоит
n!операций и становится непригодным задолго до 50×50. - Обратная матрица и ранг получаются методом Гаусса-Жордана на расширенной матрице.
- Собственные значения считаются вращениями Якоби для симметричных матриц, которые всегда сходятся, и QR-алгоритмом со сдвигом Уилкинсона и дефляцией в остальных случаях.
- Характеристический многочлен вычисляется по рекуррентности Фаддеева — Леверье, которая строит коэффициенты из следов последовательных степеней, а не раскрывает символический определитель.
- Панель пошагового решения работает на отдельном движке с точной рациональной арифметикой, поэтому промежуточные значения выглядят как дроби вида 3/5, а не 0,6000000001. Строка, которая должна обнулиться, обнуляется по-настоящему, а не оставляет остаток вроде 1e−16, который был бы засчитан за ведущий элемент.
Как проверяются результаты
У вычислительного движка есть набор автоматических тестов, покрывающий арифметику, приведение, разложения, степени, собственные значения и свойства матрицы; он запускается при каждом изменении, прежде чем что-либо попадёт на сайт. Тесты — это способ исправить ошибку один раз, а не многократно: когда сообщают о неверном ответе, матрица, на которой всё сломалось, сначала становится тестовым случаем, и только потом появляется исправление.
Именно так была исправлена процедура для собственных значений. В более ранней версии применялась QR-итерация без сдвига, которая не сходилась на самых обычных несимметричных матрицах — треугольной матрицы с собственными значениями 2, 3 и 4 хватало, чтобы её сломать. Нынешняя версия использует сдвиг Уилкинсона с дефляцией, и регрессия закреплена тестами.
Известные ограничения
- Результаты считаются до 50×50; пошаговое решение останавливается на 8×8, выше которого оно печатало бы сотни матриц и ничему не учило.
- Собственные значения вычисляются численно и сходятся только к вещественным. Матрица с комплексным спектром — например поворот — сообщит, что не сошлась, вместо того чтобы придумать ответ.
- У собственных значений и векторов нет панели пошагового решения. Алгоритмы итерационные, а не алгебраические, поэтому их промежуточные значения — артефакты округления, а не рассуждение, которое можно повторить вручную.
- Путь численного результата использует плавающую точку; точен только движок пошагового решения.
Языки
Интерфейс калькулятора и пояснительные тексты доступны на десяти языках: английском, португальском, испанском, французском, немецком, русском, индонезийском, китайском, японском и арабском. У каждого языка свои URL и свой текст — ни одна страница не является машинным переводом другой, показанным под иным флагом. Выбор сохраняется в браузере.
Контакты
Нашли ошибку, получили неверный ответ или хотите, чтобы мы добавили операцию? Пишите на franfactory.store@gmail.com. Если сообщаете о неверном результате, укажите матрицу и выполненную операцию — так исправление пойдёт гораздо быстрее.