La triple norme d’une matrice : matrix_norm et l1norm, l2norm ou norm ou specnorm, linfnorm

### 6.56.4 La triple norme d’une matrice : matrix_norm et l1norm, l2norm ou norm ou specnorm, linfnorm

matrix_norm a deux arguments : une matrice A et 1 ou 2 ou inf et par défaut 1.
matrix_norm renvoie la triple norme subordonnée à l1 (resp l2 ou l∞) si il n’y a pas de second argument ou si le second argument est 1 (resp 2 ou inf).
matrix_norm(A) ou matrix_norm(A,1) c’est aussi l1norm(A) ou colnorm(A),
matrix_norm(A,2) c’est aussi l2norm(A) ou SPECNORM(A) ou max(SVL(A)),
matrix_norm(A,inf) c’est aussi linfnorm(A) ou rownorm(A).
Pour les différentes normes de vecteurs (voir aussi 6.43.1, 6.43.1 et 6.43.1).
Pour plus de détails sur la triple norme voir le Rappel situé après les exemples.
On tape :

B:=[[1,2,3],[3,-9,6],[4,5,6]]

Puis

matrix_norm(B)

ou

matrix_norm(B,1)

ou

l1norm(B)

ou

colnorm(B)

On obtient :

16

En effet max(1+3+4,2+9+5,3+6+6)=16
On tape :

matrix_norm(B,2)

ou

l2norm(B)

ou

SPECNORM(B)

ou

max(SVL(B))

On obtient :

11.2449175989

En effet max(SVL(B)) renvoie la plus grande racine carrée des valeurs propres de trn(B)*B.
sqrt(proot(pcar(trn(B)*B))) ou sqrt(EIGENVAL(trn(B)*B)) renvoie :
[9.48552308331,0.759394515579,11.2449175989]
On tape :

matrix_norm(B,inf)

ou

linfnorm(B)

ou

rownorm(B)

On obtient :

18

En effet max(1+2+3,3+9+6,4+5+6)=18
Rappel
En mathématiques, et plus particulièrement en analyse fonctionnelle, une norme d’opérateur ou norme subordonnée est une norme définie sur l’espace des opérateurs bornés entre deux espaces vectoriels normés. Entre deux tels espaces, les opérateurs bornés ne sont autres que les applications linéaires continues.
On va considérer ici que les applications linéaires sur des espaces vectoriels de dimension finie.
Théorème
Soient E et F 2 espaces vectoriels normés (de norme || ||E et || ||F) de dimension finie et f une application linéaire de E dans F.
Alors il existe une constante réelle K tel que pour tout x∈ E on ait :
|| f(x)||F≤ K|| x||E
f est donc lipschitzienne sur E et continue de E dans F.
Définition de la triple norme
D’après ce qui précéde, on a :
pour tout x∈ E si || x||E≤ 1 alors on a || f(x)||F≤ K.
Donc l’ensemble {|| f(x)||F pour || x||E≤ 1} est une partie non vide et majorée de ℝ. Cet ensemble admet donc une borne supérieure que l’on appelle la triple norme.
Ainsi

|||f ||| = |
sup
|| x||E≤ 1
| || f(x)||F

Attention La valeur de ||| f ||| dépend des normes || ||E et || ||F utilisées.
la triple norme est donc une norme subordonnée aux normes de E et F.
Dans le cas où E = F, on choisit usuellement || ||E=|| ||F (même si ce n’est pas obligatoire).
Pour les normes usuelles, on dispose de formules pratiques : prenons E = ℝn et f∈ L(E). Notons x=(x1,... ,xn) un vecteur quelconque de ℝn et A=(ajk) la matrice de f dans la base canonique. On a alors :

- Si ||x||E=max0≤ j≤ n−1|xj| (c’est la norme l∞), alors la norme de f vaut :

  max
  0≤ j≤ n−1
  ∑
  0≤ k≤ n−1
  | |ajk|

  C’est ce qui est défini dans Xcas par rownorm(A)
- Si ||x||E=∑1≤ i≤ n|xi| (c’est la norme l1), alors la norme de f vaut :

  max
  0≤ k≤ n−1
  ∑
  0≤ j≤ n−1
  | |ajk|

  C’est ce qui est noté dans Xcas : colnorm(A)
- Si ||x||E=√∑0≤ j≤ n−1xj2 (c’est la norme l2 ou euclidienne, associée au produit scalaire canonique), alors la norme triple de f est la racine carrée de la plus grande valeur propre de f*∘ f, où f* désigne l’adjoint de f.
  La norme triple de f est donc sa plus grande valeur singulière. Ceci se généralise en remplaçant ℝn par n’importe quel espace de Hilbert.
  C’est ce qui est noté dans Xcas : max(SVL(A)) : c’est la plus grande valeur singulière de A i.e la plus grande valeur de la racine carrée des valeurs propres de trn(A)*A.
  Pour tout endomorphisme symétrique g (en particulier pour g = f*∘ f), la norme de g est égale à son rayon spectral, qui est la plus grande des valeurs absolues de ses valeurs propres.

Démonstration Soient E=Rn et F=Rp munis de leur base canonique
Soit e1..en est la base canonique de E
Soit aj,k la matrice associée à f dans les bases canoniques de E et F.

Montrons que pour la norme l1norm, la triple norme de A nommée ici matrix_norm(A,1) c’est colnorm.
Soit x=∑k(xk*ek)
On a donc :
l1norm(f(x))=l1norm(∑kxk*f(ek))≤ ∑k|xk|*l1norm(f(ek))
l1norm(f(x)) ≤ ∑k|xk|*maxk(l1norm(f(ek)))=l1norm(x)*maxk(∑j|aj,k|)
donc
matrix_norm(A,1)<=colnorm(A)
Montrons que ce maximum est atteint.
Soit k0 tel que :
maxk(∑j|aj,k|)=∑j|aj,k0|=colnorm(A)
On a alors l1norm(ek0)=1 et l1norm(f(ek0))=∑j|aj,k0|
donc matrix_norm(A,1)=colnorm(A).

Montrons que pour la norme du maximum la triple norme de A nommée ici matrix_norm(A,inf) c’est rownorm.
Soit x=∑kxk*ek avec maxk(|xk|)≤ 1
On a :
maxnorm(f(x))=maxnorm(∑kxk*f(ek))=
maxnorm(f(x))=maxj(|∑kxk*ajk|)≤maxj(∑k|xk|*|aj,k|) puisque maxk|xk)≤ 1
maxnorm(f(x))≤ maxj(∑k|aj,k|)=colrow(A)
Montrons que ce maximum est atteint.
Soit j0 tel que maxj(∑k|aj,k|)=∑k|aj0,k|=rownorm(A).
Soit xO=∑ksign(aj0,k)*ek alors maxnorm(x0)=1 et
maxnorm(f(x0))=maxj(f(x0))=maxj(|∑ksign(aj0,k)*aj,k|)=
max(∑k|aj0,k|,maxj!=j0(|∑ksign(aj0,k)*aj,k|))
si j!=j0 on a :
|∑ksign(aj0,k)*aj,k)|≤ ∑k|aj,k|≤∑k|aj0,k|
Donc
maxnorm(f(x0))=∑k|aj0,k|=rownorm(A)
Donc matrix_norm(A,inf)=rownorm(A).
Montrons que pour la norme l2norm, la triple norme de la matrice A nommée ici matrix_norm(A,2) c’est max(SVL(A)) c’est à dire la plus grande racine carrée des valeurs propres de trn(A)*A.
Soit x=∑k(xk*ek)
On a :
l2norm(x)=sqrt(scalar_product(x,x))
0n note <x,x>=√∑kxk2=scalar_product(x,x)
l2norm(f(x))=sqrt(scalar_product(A*x,A*x))
On a : <Ax,Ax>=<x,(A)tAx> donc
l2norm(f(x))=sqrt(scalar_product(x,trn(A)*A*x))
La matrice M=trn(A)*A est symétrique donc diagonalisable et ses valeurs propres λk sont réelles.
Il existe une matrice B diagonale et P une matrice de passage orthogonale (i.e. inv(P)=trn(P)) tels que :
B=tran(P)*M*P i.e. M=trn(A)*A=P*B*trn(P)
On a de plus :
Mvk=λkvk et
<Avk,Avk>=<vk,Mvk>=<vk,λkvk>=λk<vk,vk>k
Comme <Avk,Avk>≥ 0 on en déduit que les λk sont positifs.
Donc l2norm(f(x))=sqrt(scalar_product(trn(P)*x,B*trn(P)*x))
Si y=trn(P)*x=(y0...yn−1) on a :
<y,y>=<x,P*trn(P)x>=<x,x>
B*y=∑k λk*yk et <y,B*y>=∑k λk*yk2
Donc :
l2norm(f(x))=√∑k λk*yk2
Or puisque λk>0 on a :
∑k λk*yk2≤ maxk(λk)∑k yk2 et
√λk existe
et
√∑k yk2=<y,y>=<x,x>=√∑k xk2
Donc :
l2norm(f(x))≤ maxk(√λk)*√∑k xk2
Montrons que ce maximum est atteint.
Soit λm=maxk(λk) et vm le vecteur propre associé.
On a alors :
l2norm(f(vm))= sqrt(scalar_product(A*vm,A*vm))
l2norm(f(vm))= √λm*<vm,vm>=√λm*l2norm(vm). Donc puisque √λm est la plus grande racine carrée des valeurs propres de trn(A)*A, on a :
√λm=max(SVL(A)).
Donc : matrix_norm(A,2)=max(SVL(A))