Autour de la décomposition QR [Python]

Les questions utilisant Python commencent par le signe [P]. On note {O_n(\mathbb R)} le groupe orthogonal de {M_n(\mathbb R)} et {T_n(\mathbb R)} l’ensemble des matrices triangulaires supérieures.

1. Soit {n\in\mathbb N^*} et {A\in M_n(\mathbb R)}. Montrer qu’il existe un couple {(Q,R)} avec {Q\in O_n(\mathbb R)} et {R\in T_n(\mathbb R)} tel que {A=QR}.
Indication : commencer par le cas où {A} est inversible.

Pour {A=(a_{i,j})}, on pose {N_1(A)=\sum\limits_{1\le i,j\le n}|a_{i,j}|}.

2. Montrer que {N_1} admet sur {O_n(\mathbb R)} un maximum {M_n} et un minimum {m_n}.

3. (a) [P] Écrire une fonction randQ(n) qui, à partir d’une matrice aléatoire à coefficients dans {]0,1[}, renvoie la matrice {Q} d’une décomposition {A=QR}.

3. (b) [P] Écrire une fonction N1(A) renvoyant {N_1(A)}.

3. (c) [P] Écrire une fonction test(n) renvoyant le minimum et le maximum des valeurs {N_1(Q)} après 1000 appels à randQ(n).

4. (a) Déterminer {m_n}.

4. (b) Préciser la forme des matrices pour lesquelles ce minimum est atteint.

4. (c) Montrer que cet ensemble est fini et préciser son cardinal.

5. (a) Montrer que {M_n\le n\sqrt n}.

5. (b) Montrer que si {n=2^p}, avec {p\in\mathbb N}, alors {M_n=n\sqrt n}.

6. Démontrer que {M_3\lt3\sqrt3}.

Question complémentaire du corrigé

7. Soit {A} une matrice antisymétrique réelle. Montrer que {\exp(A)} est orthogonale.

Indications Python

np.array(L) crée une matrice à partir d’une liste de lignes. np.random.rand(n,p) tire des coefficients dans [0,1[ ; np.linalg.qr(A) renvoie Q et R. np.abs(A), np.sum(A) et np.inf donnent respectivement les valeurs absolues, la somme des coefficients et l’infini positif.