Itération matricielle, approximations [Python]

Les questions [P] utilisent Python. Soient {n\ge2} et {m\in\mathbb C\setminus\{1\}}. On définit {A=A_{n,m}=(a_{i,j})} par {a_{i,j}=1} si {i\le j}, et {a_{i,j}=m} si {i\gt j}. Les vecteurs de {\mathbb C^n} sont identifiés à des colonnes.

1. (a) [P] Écrire A(n,m) formant {A_{n,m}}. Par exemple, A(4,7) a des {1} sur et au-dessus de la diagonale, et des {7} en dessous.

1. (b) [P] Conjecturer {\det A_{n,m}} en fonction de {n,m}.

1. (c) [P] Conjecturer de même l’expression de {A_{n,m}^{-1}}.

Les deux questions suivantes seront traitées par opérations élémentaires sur les lignes.

2. (a) Calculer et factoriser {\det A_{n,m}}.

2. (b) Calculer l’inverse de {A_{n,m}}. On pourra présenter les calculs pour {n=4}, en vérifiant que la méthode se généralise.

On définit {B=B_{n,m}} par {b_{i,i+1}=1} pour {1\le i\lt n}, {b_{n,1}=m}, et tous les autres coefficients nuls.

3. (a) [P] Écrire B(n,m) formant {B_{n,m}}.

3. (b) [P] Calculer les puissances {B_{5,m}^k} pour {0\le k\le5}.

3. (c) Calculer {BA} en fonction de {A,I_n}, ainsi que {B^n}. En déduire {A} en fonction de {B} et retrouver la question 2.

Pour la question 4, on suppose en outre {m\ne0}. On pose {\omega=e^{2i\pi/n}} et on choisit une racine {n}-ième {r} de {m}. Pour {0\le k\le n-1}, on définit {r_k=\omega^kr}, {V_k=(1,r_k,\ldots,r_k^{n-1})^t} et {\lambda_k=(m-1)/(r_k-1)}.

4. Montrer que {(V_0,\ldots,V_{n-1})} est une base de vecteurs propres de {A}, pour les valeurs propres respectives {\lambda_k}.

Désormais {m} est un entier strictement supérieur à {1}, et {r=m^{1/n}\gt1} est réel.

5. (a) Montrer que {\lambda_0=(m-1)/(r-1)} est la valeur propre de plus grand module.

5. (b) Soit {U=(1,0,\ldots,0)^t}. Montrer que {U=\frac1n\sum\limits_{k=0}^{n-1}V_k} et en déduire la limite de {W_p=\frac n{\lambda_0^p}A^pU}.

Indications Python

np.array, np.zeros((n,p)) et np.ones((n,p)) créent des matrices. np.linalg.inv, np.linalg.det et np.linalg.matrix_power calculent inverse, déterminant et puissances. Le produit matriciel s’écrit A.dot(B) ; np.round arrondit les coefficients.