У цьому виклику я попрошу вас знайти QR-розклад квадратної матриці. QR-розкладання матриці A - це дві матриці Q і R такі, що A = QR . Зокрема, ми шукаємо, щоб Q був ортогональною матрицею (тобто Q T Q = QQ T = 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