%matplotlib inline
import numpy as np
import numpy.linalg as alg
$\require{color}$ $%\fcolorbox{red}{yellow}{Writing on yellow background!}$ $\newcommand{\myfbox}[1]{\fcolorbox{red}{white}{$\textrm{#1}$}}$ $\require{stmaryrd}$ $\require{cancel}$ $\newcommand{\ient}{[\![}$ $\newcommand{\fient}{]\!]}$ $\newcommand{\R}{\mathbb R}$ $\newcommand{\K}{\mathbb K}$ $\newcommand{\N}{\mathbb N}$ $\newcommand{\Z}{\mathbb Z}$ $\newcommand{\id}{\operatorname{Id}}$ $\newcommand{\rg}{\mathrm{rg}}$ $\newcommand{\dis}{\displaystyle}$ $\newcommand{\fonction}[5]{#1\ \colon \left\{\begin{array}{ccl}#2 & \longrightarrow & #3\\#4 & \longmapsto & #5\end{array}\right.}$ $\newcommand{\tendvers}[1]{\xrightarrow[#1]{}}$
L'énoncé qui suit est très légèrement adapté (petite indication) du sujet d'oral disponible sur le site de Centrale.
Énoncé :
Soient $a_1,\dots,a_n\in\R$ deux à deux distincts.
On considère la matrice $A\left(a_{1}, . ., a_{n}\right)$ suivante :
$$ A\left(a_{1}, . ., a_{n}\right)=\begin{pmatrix} 0 & a_{1} & a_{2} & \cdots & a_{n-1} & a_{n} \\ a_{1} & 0 & a_{2} & \cdots & a_{n-1} & a_{n} \\ a_{1} & a_{2} & 0 & \cdots & a_{n-1} & a_{n} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ a_{1} & a_{2} & a_{3} & \cdots & a_{n} & 0 \end{pmatrix} $$1. On suppose dans cette question que $n=4$.
$\qquad$ a. Écrire une fonction Python de paramètre $(a, b, c, d)$ qui calcule la matrice $A(a, b, c, d)$.
$\qquad$ b. Donner les valeurs propres des matrices $A(1,2,3,4), A(4,2,3,1)$ et $A(-3,-1,1,2)$.
$\qquad\quad$En déduire une conjecture sur les valeurs propres de la matrice $A(a, b, c, d)$.
$\qquad$ c. Donner les vecteurs propres des matrices $A(1,2,3,4), A(4,2,3,1)$ et $A(-3,-1,1,2)$.
$\qquad\quad$On pourra faire des rapports des coordonnées d'un vecteur pour l'identifier. On pourra par exemple quotienter par la dernière composante.
$\qquad\quad$Que peut-on dire de la matrice dans ces trois cas?
2. Montrer les conjectures précédentes dans le cas général.
Indication : on pourra chercher des vecteurs propres pour la valeur propre $-a_k$ sous la forme $\begin{pmatrix}\alpha\\\vdots\\\alpha\\\beta\\\vdots\\\beta\end{pmatrix}$ avec le nombre adéquat de $\alpha$ intuité expérimentalement.
3. On suppose que les réels $\left(a_{k}\right)_{1\leqslant k\leqslant n}$ sont strictement positifs et que $\sum\limits_{k=1}^{n} a_{k}=1$.
$\quad$Que peut-on dire de la suite $\big(A\left(a_{1}, . ., a_{n}\right)^{m}\big)_{m \in \mathbb{N}} ?$
Correction :
$\fbox{$\textbf{Q1}$}$ On peut généraliser la fonction demandée à une liste de taille $n$ quelconque :
def A(L):
L=np.array(L)
M=[]
for i in range(5):
M.append(np.insert(L,i,0))
return np.array(M)
A1=A([1,2,3,4])
print(A1)
print("valeurs propres :",alg.eigvals(A1))
print("vecteurs propres :")
print(alg.eig(A1)[1])
[[0 1 2 3 4] [1 0 2 3 4] [1 2 0 3 4] [1 2 3 0 4] [1 2 3 4 0]] valeurs propres : [-1. 10. -2. -3. -4.] vecteurs propres : [[-0.98058068 0.4472136 -0.65465367 0.47301616 -0.31234752] [ 0.09805807 0.4472136 -0.65465367 0.47301616 -0.31234752] [ 0.09805807 0.4472136 0.21821789 0.47301616 -0.31234752] [ 0.09805807 0.4472136 0.21821789 -0.40544243 -0.31234752] [ 0.09805807 0.4472136 0.21821789 -0.40544243 0.78086881]]
On peut rendre les vecteurs propres pour les rendre plus lisibles, on les normalisant :
sp=alg.eig(A1)[0]
vp=alg.eig(A1)[1]
print("valeur propre :",round(sp[0],2),"; vecteur propre :",vp[:,0]/vp[1,0])
print("valeur propre :",round(sp[1],2),"; vecteur propre :",vp[:,1]/vp[1,1])
print("valeur propre :",round(sp[2],2),"; vecteur propre :",3*vp[:,2]/vp[1,2])
print("valeur propre :",round(sp[3],2),"; vecteur propre :",7*vp[:,3]/vp[0,3])
print("valeur propre :",round(sp[4],2),"; vecteur propre :",2*vp[:,4]/vp[0,4])
valeur propre : -1.0 ; vecteur propre : [-10. 1. 1. 1. 1.] valeur propre : 10.0 ; vecteur propre : [1. 1. 1. 1. 1.] valeur propre : -2.0 ; vecteur propre : [ 3. 3. -1. -1. -1.] valeur propre : -3.0 ; vecteur propre : [ 7. 7. 7. -6. -6.] valeur propre : -4.0 ; vecteur propre : [ 2. 2. 2. 2. -5.]
A2=A([4,2,3,1])
print(A2)
print("valeurs propres :",alg.eigvals(A2))
print("vecteurs propres :")
print(alg.eig(A2)[1])
[[0 4 2 3 1] [4 0 2 3 1] [4 2 0 3 1] [4 2 3 0 1] [4 2 3 1 0]] valeurs propres : [-4. 10. -2. -1. -3.] vecteurs propres : [[-0.78086881 0.4472136 0.4472136 0.09805807 0.27602622] [ 0.31234752 0.4472136 0.4472136 0.09805807 0.27602622] [ 0.31234752 0.4472136 -0.4472136 0.09805807 0.27602622] [ 0.31234752 0.4472136 -0.4472136 0.09805807 -0.621059 ] [ 0.31234752 0.4472136 -0.4472136 -0.98058068 -0.621059 ]]
sp=alg.eig(A2)[0]
vp=alg.eig(A2)[1]
print("valeur propre :",round(sp[0],2),"; vecteur propre :",2*vp[:,0]/vp[1,0])
print("valeur propre :",round(sp[1],2),"; vecteur propre :",vp[:,1]/vp[1,1])
print("valeur propre :",round(sp[2],2),"; vecteur propre :",3*vp[:,2]/vp[1,2])
print("valeur propre :",round(sp[3],2),"; vecteur propre :",vp[:,3]/vp[0,3])
print("valeur propre :",round(sp[4],2),"; vecteur propre :",4*vp[:,4]/vp[0,4])
valeur propre : -4.0 ; vecteur propre : [-5. 2. 2. 2. 2.] valeur propre : 10.0 ; vecteur propre : [1. 1. 1. 1. 1.] valeur propre : -2.0 ; vecteur propre : [ 3. 3. -3. -3. -3.] valeur propre : -1.0 ; vecteur propre : [ 1. 1. 1. 1. -10.] valeur propre : -3.0 ; vecteur propre : [ 4. 4. 4. -9. -9.]
A3=A([-3,-1,1,2])
print(A3)
print("valeurs propres :",alg.eigvals(A3))
print("vecteurs propres :")
print(alg.eig(A3)[1])
[[ 0 -3 -1 1 2] [-3 0 -1 1 2] [-3 -1 0 1 2] [-3 -1 1 0 2] [-3 -1 1 2 0]] valeurs propres : [-1. 3. 1. -1. -2.] vecteurs propres : [[-0.4472136 -0.16439899 0.26726124 0.4472136 -0.48507125] [-0.4472136 0.49319696 0.26726124 0.4472136 -0.48507125] [-0.4472136 0.49319696 0.53452248 0.4472136 -0.48507125] [-0.4472136 0.49319696 0.53452248 0.4472136 -0.48507125] [-0.4472136 0.49319696 0.53452248 0.4472136 -0.24253563]]
sp=alg.eig(A3)[0]
vp=alg.eig(A3)[1]
print("valeur propre :",round(sp[0],2),"; vecteur propre :",vp[:,0]/vp[-1,0])
print("valeur propre :",round(sp[1],2),"; vecteur propre :",vp[:,1]/vp[-1,1])
print("valeur propre :",round(sp[2],2),"; vecteur propre :",vp[:,2]/vp[-1,2])
print("valeur propre :",round(sp[3],2),"; vecteur propre :",vp[:,3]/vp[-1,3])
print("valeur propre :",round(sp[4],2),"; vecteur propre :",vp[:,4]/vp[-1,4])
valeur propre : -0.5 ; vecteur propre : [-2. 1. 1. 1. 1.] valeur propre : 1.0 ; vecteur propre : [1. 1. 1. 1. 1.] valeur propre : -0.5 ; vecteur propre : [ 0.41970641 -1.41970641 1. 1. 1. ] valeur propre : 1.0 ; vecteur propre : [4.38313555 4.38313555 4.38313555 1. 1. ] valeur propre : -1.0 ; vecteur propre : [-1. -1. -1. -1. 1.]
On peut émettre la conjecture suivante :
$$\myfbox{$ \mathrm{Sp}\big(A(a_1,\dots,a_n)\big) = \left\{-a_1,\dots,-a_n,\sum\limits_{k=1}^n a_k\right\}$}$$Dans les 2 premiers cas ci-dessus, la somme des dimensions des espaces propres est égale à la taille de la matrice $A(a_1,\dots,a_n)$, donc $\myfbox{$A(1,2,3,4)$ et $A(4,2,3,1)$ sont diagonalisables}$ sur $\R$.
Dans le dernier cas, $1$ est valeur propre double, mais l'espace propre associé est de dimension $1$, donc $\myfbox{$A(-3,-1,1,2)$ n'est pas diagonalisable}$ .
Plus généralement, on peut conjecturer que :
$\bullet$ Si $\sum\limits_{k=1}^n a_k\notin \left\{-a_1,\dots,-a_n\right\}$, alors $A(a_1,\dots,a_n)$ est diagonalisable
$\bullet$ Si $\sum\limits_{k=1}^n a_k\in \left\{-a_1,\dots,-a_n\right\}$, alors $A(a_1,\dots,a_n)$ n'est pas diagonalisable.
$\fbox{$\textbf{Q2}$}$ Montrons les conjectures énoncés ci-dessus.
$\bullet$ On peut calculer le polynôme caractéristique $\chi_A$ de $A(a_1,\dots,a_n)$ :
\begin{align*} \chi_A(X) &= \begin{vmatrix} X & -a_{1} & -a_{2} & \cdots & -a_{n-1} & -a_{n} \\ -a_{1} & X & -a_{2} & \cdots & -a_{n-1} & -a_{n} \\ -a_{1} & -a_{2} & X & \cdots & -a_{n-1} & -a_{n} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ -a_{1} & -a_{2} & -a_{3} & \cdots & -a_{n} & X \end{vmatrix}\\ &= \left(X-\sum\limits_{k=1}^n a_k\right)\begin{vmatrix} 1 & -a_{1} & -a_{2} & \cdots & -a_{n-1} & -a_{n} \\ 1 & X & -a_{2} & \cdots & -a_{n-1} & -a_{n} \\ 1 & -a_{2} & X & \cdots & -a_{n-1} & -a_{n} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ 1 & -a_{2} & -a_{3} & \cdots & -a_{n} & X \end{vmatrix} \qquad C_1\leftarrow C_1+\dots+C_{n+1}\\ &= \left(X-\sum\limits_{k=1}^n a_k\right)\begin{vmatrix} 1 & -a_{1} & -a_{2} & \cdots & -a_{n-1} & -a_{n} \\ 0 & X+a_1 & 0 & \cdots & 0 & 0 \\ 0 & a_1-a_{2} & X+a_2 & \cdots & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ 0 & a_1-a_{2} & a_1-a_{3} & \cdots & a_1-a_{n} & X+a_n \end{vmatrix} \qquad \forall i\in\ient2,n+1\fient,\ L_i\leftarrow L_i-L_1\\ &= \left(X-\sum\limits_{k=1}^n a_k\right)\begin{vmatrix} X+a_1 & 0 & \cdots & 0 & 0 \\ a_1-a_{2} & X+a_2 & \cdots & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ a_1-a_{2} & a_1-a_{3} & \cdots & a_1-a_{n} & X+a_n \end{vmatrix} \qquad \textrm{(en développant par rapport à $C_1$)}\\ &= \left(X-\sum\limits_{k=1}^n a_k\right) \left(X+a_1\right)\dots \left(X+a_n\right)\qquad\textrm{(déterminant d'une matrice triangulaire)} \end{align*}On a prouvé que $\myfbox{$ \mathrm{Sp}\big(A(a_1,\dots,a_n)\big) = \left{-a_1,\dots,-a_n,\sum\limits_{k=1}^n a_k\right}$}$ .
$\bullet$ On détermine les espaces propres associés :
$\circ$ On calcule sans peine ${A}(a_1,\dots,a_n)\left(\begin{array}{c}1 \\ \vdots \\ 1\end{array}\right)=\left(\sum\limits_{i=1}^{n} a_{i}\right)\left(\begin{array}{c}1 \\ \vdots \\ 1\end{array}\right)$ donc $\sum\limits_{i=1}^{n} a_{i}$ est valeur propre et $\left(\begin{array}{c}1 \\ \vdots \\ 1\end{array}\right)$ est un vecteur propre associé.
$\circ$ On calcule maintenant ${A}(a_1,\dots,a_n)\left(\begin{array}{c}\alpha \\ \vdots\\ \alpha \\ \beta \\ \vdots \\ \beta\end{array}\right)=\left(\begin{array}{c}\alpha\left(a_{1}+\cdots+a_{k-1}\right)+\beta\left(a_{k}+\cdots+a_{n}\right) \\ \vdots \\ \alpha\left(a_{1}+\cdots+a_{k-1}\right)+\beta\left(a_{k}+\cdots+a_{n}\right) \\ \alpha\left(a_{1}+\cdots+a_{k}\right)+\beta\left(a_{k+1}+\cdots+a_{n}\right) \\ \vdots \\ \alpha\left(a_{1}+\cdots+a_{k}\right)+\beta\left(a_{k+1}+\cdots+a_{n}\right)\end{array}\right)$ (avec $k$ $\alpha$ dans le vecteur).
Cherchons $\alpha$ et $\beta$ pour que ce vecteur soit propre pour la valeur propre $-a_{k}$ ; il faut et il suffit que
$$ \left\{\begin{array}{l} \alpha\left(a_{1}+\cdots+a_{k-1}\right)+\beta\left(a_{k}+\cdots+a_{n}\right)=-a_{k} \alpha \\ \alpha\left(a_{1}+\cdots+a_{k}\right)+\beta\left(a_{k+1}+\cdots+a_{n}\right)=-a_{k} \beta \end{array} \Longleftrightarrow \alpha\left(a_{1}+\cdots+a_{k}\right)+\beta\left(a_{k}+\cdots+a_{n}\right)=0\right. $$Lorsque $\left(a_{1}+\cdots+a_{k}, a_{k}+\cdots+a_{n}\right) \neq(0,0),-a_{k}$ est bien valeur propre pour le vecteur propre défini si dessus avec $\alpha=\left(a_{k}+\cdots+a_{n}\right)$ et $\beta=-\left(a_{1}+\cdots+a_{k}\right)$.
$\bullet$ Étudions maintenant la diagonalisabilité :
$\circ$ $\myfbox{Si $\sum\limits_{\ell=1}^n a_\ell\notin \left{-a_1,\dots,-a_n\right}$}$ :
alors $A(a_1,\dots,a_n)$ possède $n+1$ valeurs propres distinctes (et est de taille $n+1$), donc $\myfbox{$A(a_1,\dots,a_n)$ est diagonalisable}$ , et les vecteurs propres ont été déterminés ci-dessus.
Remarque : Si $\sum\limits_{\ell=1}^n a_\ell\notin \left\{-a_1,\dots,-a_n\right\}$, alors, avec les notations ci-dessus, $(\alpha,\beta)\neq(0,0)$ : sinon, on aurait $0=a_{1}+\cdots+a_{k}=-a_{k}-\cdots-a_{n}$, d'où $-a_k = \sum\limits_{\ell=1}^n a_\ell$.
$\circ$ $\myfbox{Si $\sum\limits_{\ell=1}^n a_\ell\in \left{-a_1,\dots,-a_n\right}$}$ :
Alors les calculs précédents sont encore valides, sauf pour le calcul du vecteur propre de $-a_k = \sum\limits_{\ell=1}^n a_\ell$. Toutes les autres valeurs propres sont simples, et $-a_k$ est double.
On montre maintenant que la dimension de $E_{-a_k}$ vaut $1$, ce qui montre la non-diagonalisabilité de $A(a_1,\dots,a_n)$.
Il suffit pour cela de montrer que le rang de $A+a_k\mathrm{I}_n$ vaut $n$ (théorème du rang).
On suppose pour simplifier que $k=n$.
Or :
\begin{align*} \rg (A+a_n\mathrm{I}_n) &= \rg \begin{pmatrix} a_n & a_{1} & a_{2} & \cdots & a_{n-1} & a_{n} \\ a_{1} & a_n & a_{2} & \cdots & a_{n-1} & a_{n} \\ a_{1} & a_{2} & a_n & \cdots & a_{n-1} & a_{n} \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ a_{1} & a_{2} & a_{3} & \cdots & a_{n} & a_n \end{pmatrix}\\[5pt] &= \rg \begin{pmatrix} a_n & a_{1} & a_{2} & \cdots & a_{n-1} & 0 \\ a_{1} & a_n & a_{2} & \cdots & a_{n-1} & 0 \\ a_{1} & a_{2} & a_n & \cdots & a_{n-1} & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ a_{1} & a_{2} & a_{3} & \cdots & a_{n} & 0 \end{pmatrix}\qquad C_{n+1} \gets C_1+\dots+C_{n+1}\\[5pt] &= \rg \begin{pmatrix} a_n & a_1 & a_2 & \dots & a_{n-1} & 0\\ a_1-a_n&a_n-a_1& & & &0\\ & a_2-a_n&a_n-a_2& & \dots&\vdots \\ \\ & & & & a_{n-1}-a_n&0 \end{pmatrix}\qquad \begin{cases} L_{n+1}\gets L_{n+1}-L_{n}\\ \vdots\\ L_2 \gets L_2-L_1 \end{cases} \end{align*}D'une part, puisque la dernière colonne est nulle, $\rg (A+a_n\mathrm{I}_n)\leqslant n$.
D'autre part, puisque les $n$ dernières lignes sont linéairement indépendantes (échelonnées, avec pivots non nuls par hypothèse), on obtient $\rg (A+a_n\mathrm{I}_n)=n$, comme voulu.
$\fbox{$\textbf{Q3}$}$ Lorsque les $a_{i}$ sont strictement positifs, on dispose de $n+1$ valeurs propres deux à deux distinctes : les $-a_{k}$ et $\sum\limits_{\ell=1}^{n} a_{\ell}=1$.
Il existe donc ${P} \in \mathcal{M}_{n+1}(\mathbb{R})$ tel que :
$${A}\left(a_{1}, \ldots, a_{n}\right)={P} \operatorname{diag}\left(-a_{1}, \ldots,-a_{n}, 1\right) {P}^{-1} $$où l'on a noté $\operatorname{diag}\left(-a_{1}, \ldots,-a_{n}, 1\right) =\begin{pmatrix} -a_1 &&&&\\ &-a_2&&&\\ &&\ddots&&\\ &&&-a_n&\\\ &&&&1 \end{pmatrix}$.
Ainsi, ${A}\left(a_{1}, \ldots, a_{n}\right)^m={P} \operatorname{diag}\Big(\left(-a_{1}\right)^{m}, \ldots,\left(-a_{n}\right)^{m}, 1\Big) {P}^{-1}$ et puisque les $a_{i}$ sont dans $] 0,1[$ :
$$\dis\lim_{m \rightarrow+\infty} {A}\left(a_{1}, \ldots, a_{n}\right)^{m}= P \operatorname{diag}(0, \ldots, 0,1) P^{-1}$$Remarque : il s'agit en fait de la matrice du projecteur sur le sous-espace propre associé à la valeur propre $1$, autrement dit sur $\mathrm{Vect}\left[\left(\begin{array}{l}1 \\ \vdots \\ 1\end{array}\right)\right]$, parallèlement à la somme directe des autres sous-espaces propres.