Nota importante : debido a que este desafío solo se aplica a las matrices cuadradas, cada vez que uso el término "matriz", se supone que me refiero a una matriz cuadrada. Estoy dejando la descripción "cuadrada" por razones de brevedad.
Antecedentes
Muchas operaciones relacionadas con la matriz, como calcular el determinante, resolver un sistema lineal o extender funciones de valores escalares a las matrices, se hacen más fáciles al usar una matriz diagonal (una cuyos elementos que no están en la diagonal principal son 0) que es similar a la matriz original (es decir, para la matriz de entrada Ay la matriz diagonal D, existe una matriz invertible Ptal que D = P^(-1) * A * P; también, Dy Acomparte algunas propiedades importantes, como valores propios, determinantes y trazas). Para matrices con valores propios distintos (la raíz hasta polinomio característico de la matriz, dado por la resolución det(A-λI) = 0para λ, donde Ies la matriz de identidad con las mismas dimensiones que A), diagonalización es simple:Des una matriz con los valores propios en la diagonal principal, y Pes una matriz formada por vectores propios correspondientes a esos valores propios (en el mismo orden). Este proceso se llama descomposición propia .
Sin embargo, las matrices con valores propios repetidos no se pueden diagonalizar de esta manera. Afortunadamente, la forma normal de Jordan de cualquier matriz se puede calcular con bastante facilidad, y no es mucho más difícil de trabajar que una matriz diagonal regular. También tiene la buena propiedad de que, si los valores propios son únicos, entonces la descomposición de Jordan es idéntica a la descomposición propia.
Descomposición de Jordan explicada
Para una matriz cuadrada Acuyos valores propios tienen una multiplicidad geométrica de 1, el proceso de descomposición de Jordan se puede describir como tal:
- Sea
λ = {λ_1, λ_2, ... λ_n}la lista de valores propios deA, con multiplicidad, con valores propios repetidos que aparecen consecutivamente. - Cree una matriz diagonal
Jcuyos elementos son los elementos deλ, en el mismo orden. - Para cada valor propio con multiplicidad mayor que 1, coloque a
1a la derecha de cada una de las repeticiones del valor propio en la diagonal principal deJ, excepto el último.
La matriz resultante Jes una forma normal de Jordan A(puede haber múltiples formas normales de Jordan para una matriz dada, dependiendo del orden de los valores propios).
Un ejemplo trabajado
Sea Ala siguiente matriz:
Los valores propios de A, con multiplicidad, son λ = {1, 2, 4, 4}. Al ponerlos en una matriz diagonal, obtenemos este resultado:
A continuación, colocamos 1s a la derecha de todos menos uno de cada uno de los valores propios repetidos. Como 4es el único valor propio repetido, colocamos un solo al 1lado de los primeros 4:
Esta es una forma normal de Jordan A(una matriz simple puede tener varias formas normales de Jordan válidas, pero voy a pasar por alto ese detalle a efectos de explicación).
La tarea
Dada una matriz cuadrada Acomo entrada, genera una forma normal válida de Jordan de A.
- La entrada y la salida pueden estar en cualquier formato razonable (matriz 2D / lista / lo que sea, lista / matriz / lo que sea de vectores de columna o fila, un tipo de datos de matriz incorporado, etc.).
- Los elementos y valores propios de
Asiempre serán enteros en el rango[-200, 200]. - En aras de la simplicidad, todos los valores propios tendrán una multiplicidad geométrica de 1 (y, por lo tanto, el proceso anterior se cumple).
Acomo máximo será una matriz de 10x10 y al menos una matriz de 2x2.- No se permiten las unidades integradas que calculan valores propios y / o vectores propios o realizan descomposición propia, descomposición de Jordan o cualquier otro tipo de descomposición / diagonalización. La aritmética de la matriz, la inversión de la matriz y otras matrices incorporadas están permitidas.
Casos de prueba
[[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@#&? ¿O es trampa?