В этом задании я попрошу вас найти QR-разложение квадратной матрицы. QR-разложение матрицы A - это две матрицы Q и R, такие что A = QR . В частности, мы ищем, чтобы Q была ортогональной матрицей (то есть Q T Q = QQ T = I, где I - мультипликативная единица, а T - транспонирование), а R - верхней треугольной матрицей (каждое значение ниже ее диагонали должно быть ноль).
Вы напишите код, который принимает квадратную матрицу любым разумным способом и выводит QR-разложение любым методом. Многие матрицы имеют несколько QR-разложений, однако вам нужно только выводить их один раз.
Элементы ваших результирующих матриц должны находиться в двух десятичных разрядах от фактического ответа для каждой записи в матрице.
Это код-гольф соревнование поэтому ответы будут оцениваться в байтах, причем меньшее количество байтов будет лучшим результатом.
Тестовые случаи
Это только возможные выходы, ваши выходы не должны соответствовать всем этим, пока они действительны.
0 0 0 1 0 0 0 0 0
0 0 0 -> 0 1 0 0 0 0
0 0 0 0 0 1 , 0 0 0
1 0 0 1 0 0 1 0 0
0 1 0 -> 0 1 0 0 1 0
0 0 1 0 0 1 , 0 0 1
1 2 3 1 0 0 1 2 3
0 3 1 -> 0 1 0 0 3 1
0 0 8 0 0 1 , 0 0 8
0 0 1 0 0 1 1 1 1
0 1 0 -> 0 1 0 0 1 0
1 1 1 1 0 0 , 0 0 1
0 0 0 0 1 0 0 0 0 1 1 0 0 0 1
0 0 0 1 0 0 0 0 1 0 0 1 1 1 0
0 0 1 0 0 -> 0 0 1 0 0 0 0 1 0 0
0 1 1 1 0 0 1 0 0 0 0 0 0 1 0
1 0 0 0 1 1 0 0 0 0 , 0 0 0 0 1
Ответы:
Юлия, 2 байта
Функция
qr
принимает квадратную матрицу и возвращаетTuple
матрицы: Q и R .Попробуйте онлайн!
источник
Октава , 19 байт
Попробуйте онлайн!
Мой первый октавский ответ \ о /
У Octave
qr
есть довольно много альтернатив на других языках, которые возвращают и Q, и R :QRDecomposition
(Mathematica),matqr
(PARI / GP),128!:0
- если я правильно помню - (J),qr
(R) ...источник
128!:0
работает с нулевой матрицей?Wolfram Language (Mathematica) , 15 байтов
Попробуйте онлайн!
Я имею в виду ... что я могу сказать?
источник
R ,
3837 байтПопробуйте онлайн!
источник
pryr::f(list(qr.R(q<-qr(m)),qr.R(q)))
SageMath , 27 байт
источник
Python 2,
329324 байтаМы должны использовать дроби, чтобы обеспечить правильный вывод, см. Https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process#Numeric_stability
Используемый отступ:
источник
;
отдельные строки. Вы также можете часто отказаться от разрыва строки после:
. Я бы посоветовал поиграть с ними, потому что я вижу несколько мест, где этот ответ может быть короче с использованием этой техники.Питон с NumPy, 28 байт
источник