Вызов
Дано девять чисел, в a, b, c, d, e, f, g, h, i
качестве входных данных которые соответствуют квадратной матрице:
Найти обратную матрицу и вывести ее составляющие.
Обратная матрица
Обратная матрица 3 на 3 подчиняется следующему уравнению:
И можно рассчитать как:
Где - матрица кофакторов:
И - транспонирование C :
А также является определителем M :
Работал пример
Например, скажем, вход 0, -3, -2, 1, -4, -2, -3, 4, 1
. Это соответствует матрице:
Во-первых, давайте вычислим то, что известно как определитель, используя формулу выше:
Далее посчитаем матрицу кофакторов:
Затем нам нужно транспонировать (перевернуть строки и столбцы), чтобы получить C T :
Наконец, мы можем найти обратное как:
Таким образом, результат будет 4, -5, -2, 5, -6, -2, -8, 9, 3
.
правила
Данная матрица всегда будет иметь обратную (т.е. неособую). Матрица может быть самообратной
Данная матрица всегда будет матрицей 3 на 3 с 9 целыми числами.
Числа на входе всегда будут целыми числами в диапазоне
Нецелые компоненты матрицы могут быть представлены в виде десятичной дроби или дроби
Примеры
Input > Output
1, 0, 0, 0, 1, 0, 0, 0, 1 > 1, 0, 0, 0, 1, 0, 0, 0, 1
0, -3, -2, 1, -4, -2, -3, 4, 1 > 4, -5, -2, 5, -6, -2, -8, 9, 3
1, 2, 3, 3, 1, 2, 2, 1, 3 > -1/6, 1/2, -1/6, 5/6, 1/2, -7/6, -1/6, -1/2, 5/6
7, 9, 4, 2, 7, 9, 3, 4, 5 > -1/94, -29/94, 53/94, 17/94, 23/94, -55/94, -13/94, -1/94, 31/94
выигрыш
Самый короткий код в байтах побеждает.
источник
APL (Dyalog Classic), 1 байт
Попробуйте онлайн!
если требуется плоский lis, это 8 байт
Попробуйте онлайн!
источник
R,
51352785 байтПопробуйте онлайн!
Сначала сделайте одно из этих испытаний в гольф. Извините, если мое форматирование неверно!
Благодаря Giuseppe удалось сэкономить всего 11 байт! Сэкономили еще 19 байтов благодаря JAD!
источник
solve
, решение простоsolve
, так как оно отвечает всем требованиям вопроса. Он принимает матрицу в качестве входных данных и возвращает матрицу.Желе , 3 байта
Попробуйте онлайн!
Предполагая, что мы можем взять входные данные и предоставить в виде 2D список целых чисел. Если плоский список целых чисел действительно требуется как для ввода, так и для вывода, то это работает для 6 байтов.
источник
æ*
- матричное возведение в степень,-
- экспонента, которая равна-
является синтаксическим символом для отрицательных литералов, но по умолчаниюJavaScript (ES6), 123 байта
Сохранено 2 байта благодаря @ Mr.Xcoder
Сохранено 1 байт благодаря @ETHproductions
Принимает ввод как 9 различных значений.
Попробуйте онлайн!
источник
J , 2 байта
Просто встроенный примитив
Попробуйте онлайн!
источник
Python 2 , 139 байт
Попробуйте онлайн! (Имеется
return
вместоprint
для удобства тестирования.)источник
Чисто , 143 байта
Попробуйте онлайн!
источник
Python 3, 77 байт
Принимает ввод как плоский список.
Это 63 байта, если входные данные взяты в виде 2D-массива:
источник
Perl, 226 + 4 (
-plF,
флаг) = 230 байтПопробуйте онлайн .
источник
Perl 5, 179 байт
Попробуйте онлайн .
источник
Нетер, 168 байт
Попробуйте онлайн
источник
Google Sheets , 16 байтов
Вход находится в диапазоне
A1:C3
Встроенные скучные
источник
Пари / ГП , 6 байт
Принимает мультипликативное обратное в матричном кольцеMN ,
Попробуйте онлайн!
источник
Clojure, 165 байт
Я сожалею, что выводит C в transpose, и мне лень заново делать эти длинные последовательности символов, чтобы исправить это в данный момент.
источник
APL (Дьялог), 7 байт
Принимает ввод как плоский список и выводит как плоский список
Попробуйте онлайн!
источник