Accueil/Exercices d’oraux/Centrale/Algèbre/Espaces euclidiens
CentraleFilière PCAlgèbre

Espaces euclidiens

Exercices d’espaces euclidiens tombés à Centrale PC en 2020 : produits scalaires, projections, matrices symétriques, théorème spectral et orthonormalisation.

Exercices 2020

Exercice 1—Produit scalaire sur les polynômes et projection

Exercice tombé en 2020 · RMS 1063 · Python

DifficultéÀ définir

Énoncé

Pour P=∑kpkXkP=\sum_k p_kX^k etQ=∑kqkXkQ=\sum_k q_kX^k dansR[X]\mathbb R[X], on pose

⟨P,Q⟩=∑kpkqk.\langle P,Q\rangle=\sum_k p_kq_k.
  1. Montrer que ⟨⋅,⋅⟩\langle\cdot,\cdot\rangle est l’unique produit scalaire sur R[X]\mathbb R[X] rendant la base canonique orthonormée.
  2. On pose Fn={P∈Rn[X] ; P(1)=0}F_n=\{P\in\mathbb R_n[X]\,;\,P(1)=0\}. Montrer qu’il existe un unique Pn∈FnP_n\in F_n tel que d(1,Fn)=∥1−Pn∥d(1,F_n)=\|1-P_n\|.
  3. Écrire une fonction Python qui renvoie ⟨P,Q⟩\langle P,Q\rangle.
  4. On pose
    πn(X)=1n(n+1)(nXn−∑k=0n−1Xk).\pi_n(X)=\frac1{\sqrt{n(n+1)}}\left(nX^n-\sum_{k=0}^{n-1}X^k\right).
    Afficher à l’aide de Python la matrice (⟨πi,πj⟩)1≤i,j≤n(\langle\pi_i,\pi_j\rangle)_{1\leq i,j\leq n} pour différentes valeurs de nn. Conjecture ?
  5. Montrer la conjecture.
  6. En déduire une expression simple de PnP_n et la vérifier.
Indication›

Montrer que (π1,…,πn)(\pi_1,\ldots,\pi_n) est une base orthonormée de FnF_n, puis utiliser la formule du projeté orthogonal de 11 sur FnF_n.

Corrigé›

1. Le produit scalaire

La formule

⟨P,Q⟩=∑kpkqk\langle P,Q\rangle=\sum_kp_kq_k

est bilinéaire, symétrique et définie positive. De plus, pour la base canonique (1,X,X2,…)(1,X,X^2,\ldots),

⟨Xi,Xj⟩=δi,j.\langle X^i,X^j\rangle=\delta_{i,j}.

Réciproquement, si un produit scalaire rend cette base orthonormée, la bilinéarité impose nécessairement

⟨∑ipiXi,∑jqjXj⟩=∑ipiqi.\left\langle\sum_ip_iX^i,\sum_jq_jX^j\right\rangle=\sum_ip_iq_i.

D’où l’unicité.

2. Existence du projeté

FnF_n est un sous-espace vectoriel de Rn[X]\mathbb R_n[X], donc il est de dimension finie. Le théorème de projection orthogonale assure l’existence et l’unicité du projeté orthogonal de 11 sur FnF_n. Ce projeté est précisément l’unique PnP_n tel que

d(1,Fn)=∥1−Pn∥.d(1,F_n)=\|1-P_n\|.

3. Python

from numpy.polynomial import Polynomial

def ps(P, Q):
    res = 0
    p, q = P.degree(), Q.degree()
    for k in range(min(p, q) + 1):
        res += P.coef[k] * Q.coef[k]
    return res

4. Expérimentation

import numpy as np
from numpy.polynomial import Polynomial

def Polpi(n):
    c = [-1] * (n + 1)
    c[n] = n
    return Polynomial(c) / np.sqrt(n * (n + 1))

def gram(n):
    G = np.zeros((n, n))
    for i in range(n):
        for j in range(n):
            G[i, j] = ps(Polpi(i + 1), Polpi(j + 1))
    return G

print(gram(4))

On obtient la matrice identité. On conjecture que la famille (πi)1≤i≤n(\pi_i)_{1\leq i\leq n} est orthonormée.

5. Preuve de l’orthonormalité

Si 1≤i<j≤n1\leq i<j\leq n, les seuls degrés communs aux deux polynômes sont 0,…,i0,\ldots,i. On obtient

⟨πi,πj⟩=i−ii(i+1)j(j+1)=0.\langle\pi_i,\pi_j\rangle =\frac{i-i}{\sqrt{i(i+1)j(j+1)}}=0.

Et

∥πi∥2=i+i2i(i+1)=1.\|\pi_i\|^2=\frac{i+i^2}{i(i+1)}=1.

Ainsi

(π1,…,πn) est orthonormeˊe.\boxed{(\pi_1,\ldots,\pi_n)\text{ est orthonormée}.}

6. Calcul de PnP_n

On a πi(1)=0\pi_i(1)=0 pour tout ii. Comme dim⁡Fn=n\dim F_n=n, la famille précédente est une base orthonormée de FnF_n. Le projeté de 11 vaut donc

Pn=∑i=1n⟨1,πi⟩πi.P_n=\sum_{i=1}^{n}\langle1,\pi_i\rangle\pi_i.

Or

⟨1,πi⟩=−1i(i+1).\langle1,\pi_i\rangle=-\frac1{\sqrt{i(i+1)}}.

Après simplification télescopique,

Pn(X)=1−1n+1∑j=0nXj.\boxed{P_n(X)=1-\frac1{n+1}\sum_{j=0}^{n}X^j}.

Vérification directe : Pn(1)=0P_n(1)=0, donc Pn∈FnP_n\in F_n. De plus

1−Pn=1n+1∑j=0nXj.1-P_n=\frac1{n+1}\sum_{j=0}^{n}X^j.

Une base de FnF_n est (Xk−1)1≤k≤n(X^k-1)_{1\leq k\leq n}, et

⟨Xk−1,1−Pn⟩=1n+1(1−1)=0.\langle X^k-1,1-P_n\rangle=\frac1{n+1}(1-1)=0.

Donc 1−Pn∈Fn⊥1-P_n\in F_n^\perp, ce qui confirme que PnP_n est bien le projeté orthogonal.

Exercice 2—Déterminant de Gram

Exercice tombé en 2020 · RMS 1064

DifficultéÀ définir

Énoncé

Soient (E,⟨⋅,⋅⟩)(E,\langle\cdot,\cdot\rangle) un espace euclidien et (x1,…,xp)(x_1,\ldots,x_p) une famille de vecteurs de EE. On pose

A=(⟨xi,xj⟩)1≤i,j≤p∈Mp(R).A=(\langle x_i,x_j\rangle)_{1\leq i,j\leq p}\in\mathcal M_p(\mathbb R).
  1. Montrer que det⁡(A)≥0\det(A)\geq0.
  2. Montrer que det⁡(A)>0\det(A)>0 si et seulement si (x1,…,xp)(x_1,\ldots,x_p) est libre.
Indication›

Pour un vecteur colonne C=(ci)C=(c_i), calculer tCAC{}^tCAC. Utiliser ensuite que AA est symétrique réelle.

Corrigé›

1. Positivité du déterminant

Pour C=(c1,…,cp)TC=(c_1,\ldots,c_p)^T,

tCAC=∑i=1p∑j=1pcicj⟨xi,xj⟩=∥∑i=1pcixi∥2≥0.{}^tCAC =\sum_{i=1}^{p}\sum_{j=1}^{p}c_ic_j\langle x_i,x_j\rangle =\left\|\sum_{i=1}^{p}c_ix_i\right\|^2\geq0.

Ainsi AA est symétrique positive. Toutes ses valeurs propres sont donc positives ou nulles. Comme AA est diagonalisable par le théorème spectral,

det⁡(A)≥0.\boxed{\det(A)\geq0}.

2. Cas d’égalité

Supposons det⁡(A)>0\det(A)>0. Alors AA est inversible. Si

∑j=1pcjxj=0,\sum_{j=1}^{p}c_jx_j=0,

en prenant le produit scalaire avec chaque xix_i, on obtient

∑j=1pcj⟨xi,xj⟩=0(1≤i≤p).\sum_{j=1}^{p}c_j\langle x_i,x_j\rangle=0\qquad(1\leq i\leq p).

C’est exactement le système AC=0AC=0. Comme AA est inversible, C=0C=0. La famille est libre.

Réciproquement, supposons (x1,…,xp)(x_1,\ldots,x_p) libre. Si C≠0C\neq0, alors

tCAC=∥∑i=1pcixi∥2>0.{}^tCAC=\left\|\sum_{i=1}^{p}c_ix_i\right\|^2>0.

Ainsi AA est définie positive : toutes ses valeurs propres sont strictement positives, donc

det⁡(A)>0.\boxed{\det(A)>0}.

Exercice 3—Famille orthonormale de cosinus et opérateur symétrique

Exercice tombé en 2020 · RMS 1065 · Python

DifficultéÀ définir

Énoncé

Pour n∈Nn\in\mathbb N, on pose

φn(t)=2πcos⁡((2n+1)t).\varphi_n(t)=\frac2{\sqrt\pi}\cos((2n+1)t).

On munit E=C0([0,π/2],R)E=C^0([0,\pi/2],\mathbb R) du produit scalaire

⟨f,g⟩=∫0π/2f(t)g(t) dt.\langle f,g\rangle=\int_0^{\pi/2}f(t)g(t)\,dt.
  1. Montrer que la famille (φn)n∈N(\varphi_n)_{n\in\mathbb N} est orthonormale.
  2. Soit g∈Eg\in E. Donner une expression du projeté Pn(g)P_n(g) de gg sur Vect⁡(φk)0≤k≤n\operatorname{Vect}(\varphi_k)_{0\leq k\leq n}.
  3. On pose f(x)=x2cos⁡xf(x)=x^2\cos x. Conjecturer avec Python le comportement de la suite (Pn(f))(P_n(f)).
  4. Pour f∈Ef\in E, on pose
    U(f)=∑n=0+∞⟨f,φn⟩(2n+1)2φn.U(f)=\sum_{n=0}^{+\infty}\frac{\langle f,\varphi_n\rangle}{(2n+1)^2}\varphi_n.
    Montrer que U(f)∈EU(f)\in E et que UU est un endomorphisme symétrique de EE.
Indication›

Utiliser la formule produit-somme pour les cosinus. Pour l’opérateur UU, majorer uniformément le terme général grâce à Cauchy-Schwarz afin d’obtenir une convergence normale.

Corrigé›

1. Orthonormalité

Pour m,n∈Nm,n\in\mathbb N,

⟨φn,φm⟩=4π∫0π/2cos⁡((2m+1)t)cos⁡((2n+1)t) dt=2π∫0π/2(cos⁡(2(n+m+1)t)+cos⁡(2(m−n)t)) dt.\begin{aligned} \langle\varphi_n,\varphi_m\rangle &=\frac4\pi\int_0^{\pi/2}\cos((2m+1)t)\cos((2n+1)t)\,dt\\ &=\frac2\pi\int_0^{\pi/2}\bigl(\cos(2(n+m+1)t)+\cos(2(m-n)t)\bigr)\,dt. \end{aligned}

Cette intégrale vaut 0 si m≠nm\neq n et 1 si m=nm=n. La famille est donc orthonormale.

2. Projection

Comme (φ0,…,φn)(\varphi_0,\ldots,\varphi_n) est une base orthonormée du sous-espace considéré,

Pn(g)=∑k=0n⟨φk,g⟩φk.\boxed{P_n(g)=\sum_{k=0}^{n}\langle\varphi_k,g\rangle\varphi_k}.

3. Expérimentation Python

import numpy as np
import scipy.integrate as integr
import matplotlib.pyplot as plt

def ps(f, g):
    h = lambda t: f(t) * g(t)
    return integr.quad(h, 0, np.pi / 2)[0]

f = lambda t: t**2 * np.cos(t)
phi = lambda n, t: 2 / np.sqrt(np.pi) * np.cos((2*n + 1) * t)

x = np.linspace(0, np.pi / 2, 100)
y = [f(xi) for xi in x]
plt.plot(x, y, linewidth=2)

N = 20
z = [0 for _ in x]
for k in range(N + 1):
    g = lambda t, k=k: phi(k, t)
    c = ps(f, g)
    for i in range(len(x)):
        z[i] += c * g(x[i])

plt.plot(x, z, linewidth=1)

Le tracé conduit à conjecturer que

Pn(f) converge uniformeˊment vers f.\boxed{P_n(f)\text{ converge uniformément vers }f}.

Le corrigé source propose également le calcul exact des coefficients. Pour k≥1k\geq1, en posant

Ik=∫0π/2t2cos⁡(2kt) dt=(−1)kπ4k2,I_k=\int_0^{\pi/2}t^2\cos(2kt)\,dt=\frac{(-1)^k\pi}{4k^2},

on obtient

⟨φk,f⟩=(−1)kπ4(1k2−1(k+1)2).\langle\varphi_k,f\rangle =\frac{(-1)^k\sqrt\pi}{4}\left(\frac1{k^2}-\frac1{(k+1)^2}\right).

Pour k=0k=0, un calcul direct donne

⟨φ0,f⟩=π(π2−6)24.\langle\varphi_0,f\rangle=\frac{\sqrt\pi(\pi^2-6)}{24}.

Ainsi

Pn(f)(t)=π2−612cos⁡t+12∑k=1n(−1)k(1k2−1(k+1)2)cos⁡((2k+1)t).P_n(f)(t)=\frac{\pi^2-6}{12}\cos t +\frac12\sum_{k=1}^{n}(-1)^k\left(\frac1{k^2}-\frac1{(k+1)^2}\right)\cos((2k+1)t).

4. L’endomorphisme UU

Posons

un(t)=⟨f,φn⟩(2n+1)2φn(t).u_n(t)=\frac{\langle f,\varphi_n\rangle}{(2n+1)^2}\varphi_n(t).

Par Cauchy-Schwarz, comme ∥φn∥=1\|\varphi_n\|=1 et ∣φn(t)∣≤2/π|\varphi_n(t)|\leq2/\sqrt\pi,

∣un(t)∣≤2∥f∥π(2n+1)2.|u_n(t)|\leq\frac{2\|f\|}{\sqrt\pi(2n+1)^2}.

La série ∑un\sum u_n converge donc normalement, donc uniformément, sur [0,π/2][0,\pi/2]. Sa somme est continue : U(f)∈EU(f)\in E.

La linéarité de UU est immédiate. Enfin, la convergence uniforme autorise l’intégration terme à terme. Pour f,g∈Ef,g\in E,

⟨U(f),g⟩=∑n=0+∞⟨f,φn⟩⟨g,φn⟩(2n+1)2=⟨f,U(g)⟩.\begin{aligned} \langle U(f),g\rangle &=\sum_{n=0}^{+\infty} \frac{\langle f,\varphi_n\rangle\langle g,\varphi_n\rangle}{(2n+1)^2}\\ &=\langle f,U(g)\rangle. \end{aligned}

Donc

U est un endomorphisme symeˊtrique de E.\boxed{U\text{ est un endomorphisme symétrique de }E}.

Exercice 4—Matrice tridiagonale et endomorphisme symétrique sur Mₙ(R)

Exercice tombé en 2020 · RMS 1066 · Python

DifficultéÀ définir

Énoncé

On munit Rn\mathbb R^n du produit scalaire canonique. Soit KnK_n la matrice de Mn(R)\mathcal M_n(\mathbb R) définie par

Kn(i,j)={1si ∣i−j∣=1,0sinon.K_n(i,j)=\begin{cases}1&\text{si }|i-j|=1,\\0&\text{sinon.}\end{cases}
  1. Montrer qu’il existe une base orthonormée (U1,…,Un)(U_1,\ldots,U_n) de Rn\mathbb R^n et des réels λi\lambda_i tels que KnUi=λiUiK_nU_i=\lambda_iU_i.
  2. Écrire une fonction Python qui renvoie KnK_n.
  3. On munit Mn(R)\mathcal M_n(\mathbb R) du produit scalaire ⟨A,B⟩=tr⁡(tAB)\langle A,B\rangle=\operatorname{tr}({}^tAB). Montrer que, si Vi,j=UitUjV_{i,j}=U_i{}^tU_j, la famille (Vi,j)(V_{i,j}) est une base orthonormée de Mn(R)\mathcal M_n(\mathbb R).
  4. Pour M∈Mn(R)M\in\mathcal M_n(\mathbb R), on pose T(M)=KnM+MKn+MT(M)=K_nM+MK_n+M. Montrer que TT est un endomorphisme diagonalisable de Mn(R)\mathcal M_n(\mathbb R).
  5. Donner une fonction Python renvoyant T(M)T(M).
Indication›

Utiliser le théorème spectral pour KnK_n. Pour la diagonalisation de TT, montrer que M↦KnM+MKnM\mapsto K_nM+MK_n est symétrique pour le produit scalaire donné.

Corrigé›

1. Théorème spectral

La matrice KnK_n est réelle symétrique. Le théorème spectral assure donc l’existence d’une base orthonormée (U1,…,Un)(U_1,\ldots,U_n) de vecteurs propres et de réels λ1,…,λn\lambda_1,\ldots,\lambda_n tels que

KnUi=λiUi.K_nU_i=\lambda_iU_i.

2. Python

import numpy as np

def K(n):
    A = np.zeros((n, n))
    for i in range(n - 1):
        A[i, i + 1] = 1
        A[i + 1, i] = 1
    return A

3. La famille Vi,jV_{i,j}

Pour Vi,j=UitUjV_{i,j}=U_i{}^tU_j et Vk,l=UktUlV_{k,l}=U_k{}^tU_l,

⟨Vi,j,Vk,l⟩=tr⁡(tVi,jVk,l)=tr⁡(UjtUiUktUl)=δi,ktr⁡(UjtUl)=δi,kδj,l.\begin{aligned} \langle V_{i,j},V_{k,l}\rangle &=\operatorname{tr}({}^tV_{i,j}V_{k,l})\\ &=\operatorname{tr}(U_j{}^tU_iU_k{}^tU_l)\\ &=\delta_{i,k}\operatorname{tr}(U_j{}^tU_l)\\ &=\delta_{i,k}\delta_{j,l}. \end{aligned}

La famille est donc orthonormée. Elle contient n2n^2 matrices, qui est la dimension de Mn(R)\mathcal M_n(\mathbb R). C’est une base orthonormée.

4. Diagonalisation de TT

Il suffit de considérer

T~(M)=KnM+MKn,\widetilde T(M)=K_nM+MK_n,

car T=T~+id⁡T=\widetilde T+\operatorname{id}. Montrons que T~\widetilde T est symétrique. Pour M,N∈Mn(R)M,N\in\mathcal M_n(\mathbb R),

⟨T~(M),N⟩=tr⁡(t(KnM+MKn)N)=tr⁡(tMKnN)+tr⁡(KntMN)=tr⁡(tMKnN)+tr⁡(tMNKn)=⟨M,T~(N)⟩,\begin{aligned} \langle\widetilde T(M),N\rangle &=\operatorname{tr}({}^t(K_nM+MK_n)N)\\ &=\operatorname{tr}({}^tM K_nN)+\operatorname{tr}(K_n{}^tMN)\\ &=\operatorname{tr}({}^tM K_nN)+\operatorname{tr}({}^tMNK_n)\\ &=\langle M,\widetilde T(N)\rangle, \end{aligned}

où l’on a utilisé tKn=Kn{}^tK_n=K_n et la cyclicité de la trace. Ainsi T~\widetilde T est un endomorphisme symétrique de l’espace euclidien Mn(R)\mathcal M_n(\mathbb R), donc il est diagonalisable. Par conséquent T=T~+id⁡T=\widetilde T+\operatorname{id} l’est aussi.

5. Fonction Python

def T(M):
    n = M.shape[0]
    return K(n) @ M + M @ K(n) + M

Exercice 5—Somme des coefficients d’une matrice symétrique

Exercice tombé en 2020 · RMS 1067 · Python

DifficultéÀ définir

Énoncé

On définit

f:Sn(R)⟶R,M=(mi,j)⟼∑1≤i,j≤nmi,j.f:S_n(\mathbb R)\longrightarrow\mathbb R, \qquad M=(m_{i,j})\longmapsto\sum_{1\leq i,j\leq n}m_{i,j}.
  1. Montrer que ff est une forme linéaire et déterminer la dimension de ker⁡f\ker f.
  2. Écrire une fonction Python f(M)f(M) associant à une matrice symétrique MM le réel f(M)f(M).
  3. Écrire une fonction sym(n)sym(n) renvoyant une matrice de Sn(R)S_n(\mathbb R) à coefficients aléatoires dans {−10,…,10}\{-10,\ldots,10\}.
  4. Comparer sur des exemples f(A2)f(A^2) et f(A)2f(A)^2. Conjecturer puis démontrer l’inégalité obtenue.
Indication›

Introduire le vecteur X0=(1,…,1)TX_0=(1,\ldots,1)^T, de sorte que f(M)=tX0MX0f(M)={}^tX_0MX_0, puis diagonaliser orthogonalement la matrice symétrique MM.

Corrigé›

1. Linéarité et noyau

La linéarité est immédiate. La forme linéaire n’est pas nulle, par exemple f(In)=nf(I_n)=n. Comme

dim⁡Sn(R)=n(n+1)2,\dim S_n(\mathbb R)=\frac{n(n+1)}2,

le noyau est un hyperplan de Sn(R)S_n(\mathbb R) :

dim⁡ker⁡f=n(n+1)2−1.\boxed{\dim\ker f=\frac{n(n+1)}2-1}.

2. Fonction Python

def f(M):
    n, res = len(M[0]), 0
    for i in range(n):
        for j in range(n):
            res += M[i, j]
    return res

3. Matrice symétrique aléatoire

import numpy as np
import random as rd

def sym(n):
    A = np.zeros((n, n))
    for i in range(n):
        A[i, i] = rd.randint(-10, 10)
        for j in range(i + 1, n):
            A[i, j] = A[j, i] = rd.randint(-10, 10)
    return A

4. Conjecture et preuve

Les essais suggèrent

f(M)2≤n f(M2).\boxed{f(M)^2\leq n\,f(M^2)}.

Posons

X0=(1,…,1)T.X_0=(1,\ldots,1)^T.

Pour toute matrice MM,

f(M)=tX0MX0.f(M)={}^tX_0MX_0.

Si MM est symétrique réelle, le théorème spectral fournit P∈On(R)P\in O_n(\mathbb R) et D=diag⁡(λ1,…,λn)D=\operatorname{diag}(\lambda_1,\ldots,\lambda_n) tels que

M=PDtP.M=P D{}^tP.

Posons Y0=tPX0=(y1,…,yn)TY_0={}^tPX_0=(y_1,\ldots,y_n)^T. Comme PP est orthogonale,

∑k=1nyk2=∥Y0∥2=∥X0∥2=n.\sum_{k=1}^{n}y_k^2=\|Y_0\|^2=\|X_0\|^2=n.

D’autre part,

f(M)=∑k=1nλkyk2f(M)=\sum_{k=1}^{n}\lambda_ky_k^2

et, puisque M2=PD2tPM^2=PD^2{}^tP,

f(M2)=∑k=1nλk2yk2.f(M^2)=\sum_{k=1}^{n}\lambda_k^2y_k^2.

Par l’inégalité de Cauchy-Schwarz dans Rn\mathbb R^n,

f(M)2=(∑k=1n(λkyk)yk)2≤(∑k=1nλk2yk2)(∑k=1nyk2)=n f(M2).\begin{aligned} f(M)^2 &=\left(\sum_{k=1}^{n}(\lambda_ky_k)y_k\right)^2\\ &\leq\left(\sum_{k=1}^{n}\lambda_k^2y_k^2\right) \left(\sum_{k=1}^{n}y_k^2\right)\\ &=n\,f(M^2). \end{aligned}

Exercice 6—Gram-Schmidt et décomposition QR

Exercice tombé en 2020 · RMS 1068 · Python

DifficultéÀ définir

Énoncé

  1. Montrer qu’étant donnée une famille libre (x1,…,xn)(x_1,\ldots,x_n) de vecteurs de Rn\mathbb R^n, il existe une base orthonormée B\mathcal B telle que mat⁡B(x1,…,xn)\operatorname{mat}_{\mathcal B}(x_1,\ldots,x_n) soit triangulaire supérieure à coefficients diagonaux strictement positifs.
  2. Soit A∈GLn(R)A\in GL_n(\mathbb R). Montrer qu’il existe Q∈On(R)Q\in O_n(\mathbb R) et R∈Tn+(R)R\in T_n^+(\mathbb R) tels que A=QRA=QR.
  3. Coder en Python le procédé de Gram-Schmidt dans Rn\mathbb R^n et vérifier le programme.
  4. Coder en Python la décomposition QR.
  5. Déterminer On(R)∩Tn+(R)O_n(\mathbb R)\cap T_n^+(\mathbb R). En déduire l’unicité de la décomposition QR.
Indication›

La première question est exactement l’orthonormalisation de Gram-Schmidt avec le choix de signes imposant ⟨ek,xk⟩>0\langle e_k,x_k\rangle>0. Pour l’unicité, comparer deux décompositions et observer que le quotient appartient à la fois au groupe orthogonal et aux matrices triangulaires supérieures à diagonale positive.

Corrigé›

1. Gram-Schmidt

Le procédé d’orthonormalisation de Gram-Schmidt fournit une base orthonormée B=(e1,…,en)\mathcal B=(e_1,\ldots,e_n) telle que, pour tout kk,

Vect⁡(e1,…,ek)=Vect⁡(x1,…,xk).\operatorname{Vect}(e_1,\ldots,e_k)=\operatorname{Vect}(x_1,\ldots,x_k).

Cette propriété entraîne que la matrice des vecteurs x1,…,xnx_1,\ldots,x_n dans la base B\mathcal B est triangulaire supérieure. En choisissant à chaque étape le signe de eke_k de sorte que ⟨ek,xk⟩>0\langle e_k,x_k\rangle>0, les coefficients diagonaux sont strictement positifs.

2. Décomposition QR

Soit B0\mathcal B_0 la base canonique et soit (x1,…,xn)(x_1,\ldots,x_n) la famille constituée par les colonnes de AA. Puisque AA est inversible, cette famille est libre.

La première question fournit une base orthonormée B\mathcal B telle que

A=Pass⁡(B0,B)Pass⁡(B,(x1,…,xn)).A=\operatorname{Pass}(\mathcal B_0,\mathcal B)\operatorname{Pass}(\mathcal B,(x_1,\ldots,x_n)).

La première matrice, notée QQ, est orthogonale ; la seconde, notée RR, est triangulaire supérieure à diagonale strictement positive. Donc

A=QR.\boxed{A=QR}.

3. Gram-Schmidt en Python

import numpy as np

def gram_schmidt(vectors):
    basis = []
    for x in vectors:
        u = np.array(x, dtype=float)
        for e in basis:
            u = u - np.dot(e, x) * e
        e = u / np.linalg.norm(u)
        if np.dot(e, x) < 0:
            e = -e
        basis.append(e)
    return basis

def verif(vectors):
    Q = np.column_stack(gram_schmidt(vectors))
    return Q.T @ Q

4. Décomposition QR en Python

def decomposition(A):
    columns = [A[:, j] for j in range(A.shape[1])]
    basis = gram_schmidt(columns)
    Q = np.column_stack(basis)
    R = Q.T @ A
    return Q, R

5. Unicité

Soit S∈On(R)∩Tn+(R)S\in O_n(\mathbb R)\cap T_n^+(\mathbb R). Comme SS est triangulaire supérieure et orthogonale, sa première colonne est de la forme (s1,1,0,…,0)T(s_{1,1},0,\ldots,0)^T et a norme 1. La positivité de la diagonale impose s1,1=1s_{1,1}=1. L’orthogonalité avec les autres colonnes impose ensuite que leur première coordonnée soit nulle. En répétant le raisonnement,

On(R)∩Tn+(R)={In}.\boxed{O_n(\mathbb R)\cap T_n^+(\mathbb R)=\{I_n\}}.

Supposons

A=Q1R1=Q2R2A=Q_1R_1=Q_2R_2

avec Q1,Q2∈On(R)Q_1,Q_2\in O_n(\mathbb R) et R1,R2∈Tn+(R)R_1,R_2\in T_n^+(\mathbb R). Alors

Q2−1Q1=R2R1−1.Q_2^{-1}Q_1=R_2R_1^{-1}.

Le membre de gauche est orthogonal et le membre de droite appartient à Tn+(R)T_n^+(\mathbb R). Ils sont donc égaux à InI_n. Ainsi

Q1=Q2etR1=R2.\boxed{Q_1=Q_2\quad\text{et}\quad R_1=R_2}.

Exercice 7—Caractérisation des matrices symétriques positives par la trace

Exercice tombé en 2020 · RMS 1069

DifficultéÀ définir

Énoncé

Soit d’abord A∈Sn(R)A\in S_n(\mathbb R) telle que Sp⁡(A)⊂R+\operatorname{Sp}(A)\subset\mathbb R_+.

  1. Montrer que
    (∗)∀P∈On(R),tr⁡(PA)≤tr⁡(A).(*)\qquad \forall P\in O_n(\mathbb R),\quad \operatorname{tr}(PA)\leq\operatorname{tr}(A).

Réciproquement, soit maintenant A∈Mn(R)A\in\mathcal M_n(\mathbb R) vérifiant (∗)(*).

  1. Montrer que, pour n=2n=2, on a A∈S2(R)A\in S_2(\mathbb R).
  2. Montrer que l’on a toujours A∈Sn(R)A\in S_n(\mathbb R).
  3. Montrer que Sp⁡(A)⊂R+\operatorname{Sp}(A)\subset\mathbb R_+ et conclure.
Indication›

Pour la réciproque, tester la propriété sur des rotations agissant seulement dans un plan de coordonnées (p,q)(p,q). Une fois la symétrie obtenue, diagonaliser AA et tester la propriété avec une matrice orthogonale diagonale ayant un seul coefficient égal à −1-1.

Corrigé›

1. Sens direct

Le théorème spectral donne Q∈On(R)Q\in O_n(\mathbb R) et

D=diag⁡(λ1,…,λn),λi≥0,D=\operatorname{diag}(\lambda_1,\ldots,\lambda_n),\qquad \lambda_i\geq0,

tels que A=QDtQA=QD{}^tQ. Pour P∈On(R)P\in O_n(\mathbb R), posons U=tQPQU={}^tQPQ. Alors U∈On(R)U\in O_n(\mathbb R) et

tr⁡(PA)=tr⁡(UD)=∑i=1nui,iλi.\operatorname{tr}(PA)=\operatorname{tr}(UD)=\sum_{i=1}^{n}u_{i,i}\lambda_i.

Comme ∣ui,i∣≤1|u_{i,i}|\leq1 et λi≥0\lambda_i\geq0,

tr⁡(PA)≤∑i=1nλi=tr⁡(A).\operatorname{tr}(PA)\leq\sum_{i=1}^{n}\lambda_i=\operatorname{tr}(A).

2. Cas n=2n=2

Écrivons

A=(abcd)A=\begin{pmatrix}a&b\\c&d\end{pmatrix}

et prenons, pour θ∈R\theta\in\mathbb R,

Rθ=(cos⁡θ−sin⁡θsin⁡θcos⁡θ).R_\theta=\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}.

La propriété (∗)(*) donne

(a+d)(cos⁡θ−1)+(b−c)sin⁡θ≤0∀θ.(a+d)(\cos\theta-1)+(b-c)\sin\theta\leq0\qquad\forall\theta.

La fonction de gauche atteint donc un maximum en θ=0\theta=0. Sa dérivée en 0 est nulle :

b−c=0.b-c=0.

Ainsi AA est symétrique.

3. Cas général

Fixons 1≤p<q≤n1\leq p<q\leq n et considérons une rotation RθR_\theta qui agit comme l’identité sur les autres coordonnées et comme

(cos⁡θ−sin⁡θsin⁡θcos⁡θ)\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}

sur le plan engendré par les vecteurs de base ep,eqe_p,e_q. Le même calcul donne

(ap,p+aq,q)(cos⁡θ−1)+(ap,q−aq,p)sin⁡θ≤0∀θ.(a_{p,p}+a_{q,q})(\cos\theta-1)+(a_{p,q}-a_{q,p})\sin\theta\leq0\qquad\forall\theta.

La dérivée en 00 est donc nulle :

ap,q=aq,p.a_{p,q}=a_{q,p}.

Comme ceci vaut pour tout couple p<qp<q,

A∈Sn(R).\boxed{A\in S_n(\mathbb R)}.

4. Positivité du spectre

Comme AA est maintenant symétrique, il existe Q∈On(R)Q\in O_n(\mathbb R) tel que

A=QDtQ,D=diag⁡(λ1,…,λn).A=QD{}^tQ,\qquad D=\operatorname{diag}(\lambda_1,\ldots,\lambda_n).

La conjugaison P↦tQPQP\mapsto{}^tQPQ est une bijection de On(R)O_n(\mathbb R) sur lui-même. La propriété (∗)(*) devient donc

∀U∈On(R),∑i=1nui,iλi≤∑i=1nλi.\forall U\in O_n(\mathbb R),\qquad \sum_{i=1}^{n}u_{i,i}\lambda_i\leq\sum_{i=1}^{n}\lambda_i.

Fixons jj et choisissons UU diagonale avec tous les coefficients diagonaux égaux à 1 sauf le jj-ième, égal à −1-1. On obtient

∑i≠jλi−λj≤∑i=1nλi,\sum_{i\neq j}\lambda_i-\lambda_j\leq\sum_{i=1}^{n}\lambda_i,

d’où λj≥0\lambda_j\geq0. Ceci vaut pour tout jj.

Finalement,

∀P∈On(R), tr⁡(PA)≤tr⁡(A)  ⟺  A∈Sn(R) et Sp⁡(A)⊂R+\boxed{ \forall P\in O_n(\mathbb R),\ \operatorname{tr}(PA)\leq\operatorname{tr}(A) \iff A\in S_n(\mathbb R)\text{ et }\operatorname{Sp}(A)\subset\mathbb R_+ }
← Retour aux chapitres