Важлива примітка : Оскільки цей виклик стосується лише квадратних матриць, щоразу, коли я використовую термін "матриця", передбачається, що я маю на увазі квадратну матрицю. Я залишаю "квадратний" опис заради стислості.
Фон
Багато операцій, пов’язаних з матрицею, такі як обчислення детермінанта, розв’язування лінійної системи або розширення скалярних функцій до матриць, полегшуються за допомогою діагональної матриці (тієї, елементи якої не знаходяться на головній діагоналі 0), що подібне з оригінальної матриці (тобто, для матриці вхідного A
і діагональної матриці D
, існує деяка оборотна матриця P
таким чином, що D = P^(-1) * A * P
, крім того , D
і A
мають деякі важливі властивості, такі як власні, визначника і сліду). Для матриць з чіткими власними значеннями (корені до характерного многочлена матриці, заданого рішенням det(A-λI) = 0
для λ
, де I
матриця тотожності з тими ж розмірами, що і A
), діагоналізація проста:D
є матрицею з власними значеннями на головній діагоналі і P
є матрицею, утвореною з власних векторів, що відповідають цим власним значенням (у тому ж порядку). Цей процес називається ейгендекомпозицією .
Однак матриці з повторними власними значеннями не можуть бути діагоналізовані таким чином. На щастя, нормальну форму Йорданії будь-якої матриці можна обчислити досить легко, і працювати з нею не набагато складніше, ніж із звичайною діагональною матрицею. Він також має приємну властивість, що, якщо власні значення є унікальними, то розкладання Йорданії є ідентичним ейгендекомпозиції.
Іорданське розкладання пояснили
Для квадратної матриці A
, всі власні значення якої мають геометричну кратність 1, процес розкладання Йордану можна описати як такий:
- Нехай
λ = {λ_1, λ_2, ... λ_n}
буде список власних значеньA
множинності з повторними власними значеннями, що з'являються послідовно. - Створіть діагональну матрицю
J
, елементами якої є елементиλ
, в одному порядку. - Для кожного власного значення, кратність якого перевищує 1, розмістіть a
1
праворуч від кожного з повторів власного значення у головній діагоналіJ
, крім останнього.
Отримана матриця J
є нормальною формою Йордану A
(може бути кілька нормальних форм Йорданії для даної матриці, залежно від порядку власних значень).
Працюючий приклад
Нехай A
буде наступна матриця:
Власні значення значень A
множинності є λ = {1, 2, 4, 4}
. Вкладаючи їх у діагональну матрицю, ми отримуємо такий результат:
Далі розміщуємо 1
s праворуч від усіх, крім однієї з повторних власних значень. Оскільки 4
це єдине власне значення, яке повторюється, ми розміщуємо одиницю 1
поруч із першими 4:
Це нормальна форма Йорданії A
(одна матриця потенційно може мати декілька дійсних нормальних форм Йорданії, але я розглядаю цю деталь для пояснення).
Завдання
Давши квадратну матрицю A
в якості введення, виведіть дійсну нормальну форму Йорданії A
.
- Вхід і вихід можуть бути у будь-якому розумному форматі (2D масив / список / все, список / масив / незалежно від векторів стовпців чи рядків, тип вбудованої матриці даних тощо).
- Елементи та власні значення
A
завжди будуть цілими числами в діапазоні[-200, 200]
. - Для простоти всі власні величини матимуть геометричну кратність 1 (і таким чином вищезазначений процес має місце).
A
максимум буде матрицею 10х10 та принаймні матрицею 2х2.- Вбудовані, які обчислюють власні значення та / або власні вектори або виконують ейгендекомпозицію, розкладку Йорданії чи будь-який інший вид розкладання / діагоналізації, не допускаються. Допускається арифметика матриці, інверсія матриці та інші вбудовані матриці.
Тестові справи
[[1, 0], [0, 1]] -> [[1, 1], [0, 1]]
[[3, 0], [0, 3]] -> [[1, 1], [0, 1]]
[[4, 2, 2], [1, 2, 2],[0, 3, 3]] -> [[6, 0, 0], [0, 3, 0], [0, 0, 0]]
[[42, 48, 40, 64, 64], [41, 47, 31, 58, 42], [-55, -47, -27, -74, -46], [-46, -58, -46, -70, -68], [30, 20, 12, 34, 18]] -> [[10, 0, 0, 0, 0], [0, -18, 0, 0, 0], [0, 0, 6, 1, 0], [0, 0, 0, 6, 1], [0, 0, 0, 0, 6]]
Last@JordanDecomposition@#&
? Або це обман?