Важное примечание : поскольку этот вызов относится только к квадратным матрицам, каждый раз, когда я использую термин «матрица», предполагается, что я имею в виду квадратную матрицу. Для краткости я оставляю «квадратное» описание.
Фон
Многие связанные с матрицей операции, такие как вычисление определителя, решение линейной системы или расширение скалярных функций до матриц, упрощаются благодаря использованию диагональной матрицы (элемент которой не на главной диагонали равен 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}. Поместив их в диагональную матрицу, мы получим такой результат:
Затем мы помещаем 1s справа от всех, кроме одного, каждого из повторяющихся собственных значений. Поскольку 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@#&? Или это обман?