En este desafío, le pediré que encuentre una descomposición QR de una matriz cuadrada. La descomposición QR de la matriz A es dos Matrices Q y R, de modo que A = QR . En particular, buscamos que Q sea una matriz ortogonal (es decir, Q T Q = QQ T = I donde I es la identidad multiplicativa y T es la transposición) y R sea una matriz triangular superior (cada valor debajo de su diagonal debe ser cero)
Escribirás código que tome una matriz cuadrada por cualquier método razonable y genere una descomposición QR por cualquier método. Muchas matrices tienen múltiples descomposiciones QR, sin embargo, solo necesita una salida.
Los elementos de sus matrices resultantes deben estar dentro de dos lugares decimales de una respuesta real para cada entrada en la matriz.
Esta es una competencia de código de golf , por lo que las respuestas se puntuarán en bytes, siendo menos bytes una mejor puntuación.
Casos de prueba
Estas son solo salidas posibles, sus salidas no necesitan coincidir con todas ellas siempre que sean válidas.
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
Respuestas:
Julia, 2 bytes
La función
qr
acepta una matriz cuadrada y devuelve unaTuple
de matrices: Q y R .Pruébalo en línea!
fuente
Octava , 19 bytes
Pruébalo en línea!
Mi primera respuesta de Octave \ o /
Octave
qr
tiene bastantes alternativas en otros idiomas que devuelven Q y R :QRDecomposition
(Mathematica),matqr
(PARI / GP),128!:0
- si recuerdo correctamente - (J),qr
(R) ...fuente
128!:0
funciona en una matriz todo cero?Wolfram Language (Mathematica) , 15 bytes
Pruébalo en línea!
Quiero decir ... ¿qué puedo decir?
fuente
R ,
3837 bytesPruébalo en línea!
fuente
pryr::f(list(qr.R(q<-qr(m)),qr.R(q)))
SageMath , 27 bytes
fuente
Python 2,
329324 bytesDebemos usar fracciones para garantizar una salida correcta, consulte https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process#Numerical_stability
Sangría utilizada:
fuente
;
de líneas separadas. También a menudo puede renunciar al salto de línea después:
. Sugeriría jugar con estos porque puedo ver algunos lugares donde esta respuesta puede ser más corta usando esta técnica.Python con numpy, 28 bytes
fuente