Réduction d’une matrice par blocs [Python]

Les questions [P] utilisent Python. Pour {A\in M_n(\mathbb C)}, {n\ge2}, on définit {B_A=\begin{pmatrix}A&A^2\\[4pt]0&A\end{pmatrix}}. On pourra noter {B=B_A}.

1. Pour {a\in\mathbb C}, la matrice {B_a=\begin{pmatrix}a&a^2\\[4pt]0&a\end{pmatrix}} est-elle diagonalisable ?

2. (a) [P] Écrire B(A) renvoyant {B_A}.

2. (b) [P] Soit {A=\begin{pmatrix}0&1&-1\\[4pt]1&-1&-1\\[4pt]-1&-1&-1\end{pmatrix}}. Montrer qu’elle est diagonalisable, préciser son spectre et une matrice de passage.

2. (c) [P] {B_A} est-elle diagonalisable ? Déterminer la dimension de chacun de ses espaces propres.

3. (a) Montrer que toute matrice de {M_2(\mathbb C)} est semblable à {aI_2}, à {\begin{pmatrix}a&1\\[4pt]0&a\end{pmatrix}}, ou à {\operatorname{diag}(a,b)} avec {a\ne b}.

3. (b) Pour {n=2}, montrer que {B_A} est diagonalisable si et seulement si {A=0}.

4. (a) Pour {Q\in\mathbb C[X]}, expliciter {Q(B)} par blocs de polynômes en {A}.

4. (b) Montrer que si {B} est diagonalisable, {A} l’est.

4. (c) Montrer que si {B} est diagonalisable, {A=0}.

5. Exprimer le polynôme minimal de {B} à l’aide de celui de {A}.

Indications Python

np.block assemble les blocs ; A @ A calcule le carré matriciel. np.linalg.eig fournit des éléments propres et np.linalg.matrix_rank permet de déterminer les dimensions des noyaux.