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.42.1,
6.42.1 et 6.42.1).
Pour plus de détails sur la triple norme voir le Rappel situé après
les exemples.
On tape :
Puis
ou
ou
ou
On obtient :
En effet max(1+3+4,2+9+5,3+6+6)=16
On tape :
ou
ou
ou
On obtient :
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 :
ou
ou
On obtient :
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 ||| = |
| || 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 :
|
| |ajk| |
|
| |ajk| |
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))