AccueilđŸ‡«đŸ‡·Chercher

Matrice vide

En mathĂ©matiques, une matrice vide[1] - [2] est dĂ©finie comme une matrice dont l'une des dimensions m ou n est nulle ; il s'agit donc de matrices de dimension m × 0, 0 × n ou bien 0 × 0.

Une matrice pouvant ĂȘtre dĂ©finie abstraitement par une famille finie d'Ă©lĂ©ments d'un ensemble K (souvent un anneau commutatif ou un corps) indexĂ©e par un produit cartĂ©sien I × J oĂč I et J sont des ensembles finis, une matrice vide correspond au cas oĂč soit I soit J est l'ensemble vide[3].

Ces matrices sont utiles pour travailler avec l'espace nul K0 (K Ă©tant un corps commutatif quelconque, habituellement ℝ ou ℂ). Elles permettent donc d'appliquer les matrices Ă  cet espace vectoriel trivial. D'un point de vue pratique, les matrices vides Ă©tendent la validitĂ© de thĂ©orĂšmes Ă  des cas limites ; elles permettent par exemple d'utiliser des Ă©quations de dynamique Ă  des situations statiques[4]. En informatique, une matrice vide peut ĂȘtre le rĂ©sultat d'une recherche infructueuse ou bien survenir au dĂ©but ou Ă  la fin d'un algorithme itĂ©ratif ; l'extension des rĂšgles de l'algĂšbre aux cas limite des matrices vides permet donc d'Ă©viter de traiter ces cas comme des exceptions[4].

Une matrice vide en tant que représentant d'une application linéaire

L'espace nul K0 ne contient qu'un seul Ă©lĂ©ment, le « vecteur vide Â» (le vecteur n'ayant aucune coordonnĂ©e[5]). Un espace vectoriel ayant nĂ©cessairement un Ă©lĂ©ment neutre, ce vecteur vide est le vecteur nul de K0 notĂ© 0K0 :

L'espace nul est de dimension 0. Considérons maintenant un K-espace vectoriel E quelconque. Il n'existe qu'une seule application linéaire de E dans K0, celle transformant tout vecteur de E en ce vecteur nul (c'est l'application nulle). L'ensemble des applications linéaires de E dans K0 est donc un singleton.

avec

Si l'on appelle n la dimension de E, alors il existe une unique matrice de dimension n × 0 qui reprĂ©sente cette application linĂ©aire unique, c'est une matrice vide que l'on pourra noter ()n, 0.

De mĂȘme, il n'existe qu'une seule application linĂ©aire de K0 dans E, l'image de K0 par cette application Ă©tant le vecteur nul de E puisque l'unique Ă©lĂ©ment de K0 est le vecteur nul (c'est donc Ă©galement l'application nulle). L'ensemble des applications linĂ©aires de K0 dans E est Ă©galement un singleton.

avec

Il existe donc une unique matrice de dimension 0 × n reprĂ©sentant cette applications linĂ©aire, la matrice vide ()0, n.

En tant que représentant d'une application nulle, une matrice vide est une matrice nulle :

.

La matrice vide de dimension 0×0, que l'on peut noter ()0, 0, reprĂ©sente en particulier l'identitĂ© Id0 de l'espace nul. C'est donc une matrice inversible (rĂ©guliĂšre), donc carrĂ©e. Puisqu'elle reprĂ©sente Ă©galement l'application nulle, nous avons donc :

c'est-Ă -dire que dans l'anneau nul des matrices de dimension 0×0, l'unique Ă©lĂ©ment est neutre Ă  la fois pour le produit et pour la somme.

Propriétés des matrices vides

Dans ce qui suit, la notation « () Â» dĂ©signe une matrice vide de dimension quelconque ()n, 0, ()0, n ou ()0, 0.

  • l'image de toute matrice vide est rĂ©duite au vecteur nul : Im () = {0} ; le rang de toute matrice vide est donc nul : rg() = 0 ;
  • le noyau d'une matrice vide dĂ©pend de ses dimensions :
    • Ker ()0, n = {0},
    • Ker ()n, 0 = Kn ;
  • la norme de toute matrice vide est nulle : ║()║ = 0 ;
  • la transposĂ©e d'une matrice vide est encore vide ;
  • le produit dĂ©pend de la dimension de la matrice vide considĂ©rĂ©e : pour une matrice A de dimension (m × n) et une matrice B de dimension (n × p), au moins un des entiers m, n et p Ă©tant nul ; AB est une matrice de dimension (m × p) et donc :
    • si m = 0 , alors AB est une matrice de dimension (0 × p) donc une matrice vide : ()0, n × B = ()0, p,
    • si p = 0, alors AB est une matrice de dimensions (m × 0), c'est Ă©galement une matrice vide : A × ()n, 0 = ()m, 0,
    • mais si n = 0 et si m ≠ 0 et p ≠ 0, alors la matrice AB est la matrice nulle de dimension (m × p)
      ()m, 0 × ()0, p = 0m, p ; concrĂštement, la multiplication des matrices correspond Ă  la composition d'applications linĂ©aires, nous avons ici la composition de deux applications nulles, la rĂ©sultante est logiquement l'application nulle de l'espace de dĂ©part Kp vers l'espace d'arrivĂ©e Km ;

Concernant la somme : l'addition de matrices est une loi de composition interne, les matrices ont donc nĂ©cessairement la mĂȘme dimension. Ainsi, on ne peut Ă©crire « A + () Â» ou bien « () + A Â» que si A est elle-mĂȘme une matrice vide identique, le rĂ©sultat est donc Ă©galement une matrice vide.

Pour la matrice vide de dimension 0 × 0 :

  • ()0, 0 = I0 (matrice identitĂ©) donc :
    • la matrice est sa propre inverse : ()0, 0–1 = ()0, 0,
    • la matrice ()0, 0 Ă  valeurs rĂ©elles est orthogonale ;
  • conditionnement :
    • certains retiennent la convention cond()0, 0 = 0 par calcul[2] (puisque la norme est nulle),
    • d'autres retiennent cond()0, 0 = 1 par application de la notion de conditionnement[6] (une prĂ©cision parfaite correspondant Ă  un score de 1 et la matrice vide est une identitĂ©, les matrices unitĂ©s ayant toutes un conditionnement de 1) ;
  • dĂ©terminant : det ()0, 0 = 1 ; c'est une consĂ©quence de la notion de produit vide dans la formule de Leibniz et c'est cohĂ©rent avec le fait que c'est une matrice identitĂ© ;
  • son polynĂŽme caractĂ©ristique est 1 d'aprĂšs le point prĂ©cĂ©dent ;
  • ce polynĂŽme n'a pas de racine donc la matrice n'a pas de valeur propre (et donc pas de vecteur propre) ;
  • la matrice vide est nulle donc Ă  la fois symĂ©trique et antisymĂ©trique, et de trace nulle.

Dans les langages de programmation

Matlab

Jusqu'Ă  sa version 4, Matlab n'acceptait qu'une matrice vide notĂ©e []. À partir de sa version 5, il distingue les matrices vides 0 × 0 (notĂ©e []), 0 × 1 et 1 × 0[7]. On peut obtenir une matrice vide 0 × 1 par

>> zeros(0, 1)
ans =
   Empty matrix: 0-by-1
>> a = ones(3, 2)
a =
     1     1
     1     1
     1     1
>> b = zeros(3, 2)
b =
     0     0
     0     0
     0     0
>> c = find(a<b)
c =
   Empty matrix: 0-by-1

Le logiciel vĂ©rifie la compatibilitĂ© des dimensions des matrices vides pour le produit et la somme. Si l'on ajoute un scalaire Ă  la matrice vide — ce qui revient dans Matlab Ă  ajouter le scalaire Ă  tous les Ă©lĂ©ments de la matrice vide —, Matlab retourne la matrice vide.

>> 5 + c
c =
   Empty matrix: 0-by-1

Concernant le produit, on a :

>> c*c'
ans =
     []
>> c'*c
ans =
     0

On a également sum(c) == 0 et prod(c) == 1 car ce sont les éléments neutres de la somme et du produit respectivement.

Seule la matrice vide 0 × 0 est considĂ©rĂ©e comme carrĂ©e et inversible. On a alors det([]) == 1, inv([]) == [] et cond([]) == 0.

GNU Octave dispose Ă©galement de ces trois matrices vide avec un comportement similaire[8].

Scilab

Le logiciel Scilab ne définit qu'une seule matrice vide notée []. L'exemple précédent donne dans Scilab :

--> zeros(0, 1)
 ans  =
    []
--> a = ones(3, 2)
 a  = 
   1.   1.
   1.   1.
   1.   1.
--> b = zeros(3, 2)
 b  = 
   0.   0.
   0.   0.
   0.   0.
--> c = find(a<b)
 c  = 
    []

Le logiciel autorise le produit et la somme avec une matrice vide sans vérifier les dimensions. On a :

  • [] + A == A + [] == A jusqu'Ă  sa version 5.5.2[9] et
  • [] + A == A + [] == [] Ă  partir de sa version 6.0.0[10] ;
  • A*[] == []*A == [] ;
  • sum([]) == 0 et prod([]) == 1 ;
  • det([]) == 0[11] ;
  • inv([]) == [] ;
  • cond([]) == 1[6].

R

Le logiciel R permet de créer des matrices vides de toutes dimensions. Par exemple :

> M <- matrix(, nrow = 3, ncol = 0) # matrice vide 3 × 0
> print(M)
[1,]
[2,]
[3,]
> sum(M)
[1] 0
> prod(M)
[1] 1
> N <- aperm(M, c(2, 1)) # transposĂ©e, matrice vide 0 × 3
> print(N)
     [,1] [,2] [,3]
> N %*% M # produit matriciel
<0 x 0 matrix>
> M %*% N
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    0    0    0
[3,]    0    0    0
> O <- matrix(, nrow = 0, ncol = 0) # matrice vide 0 × 0
> print(O)
<0 x 0 matrix>
> det(O) # déterminant
[1] 1
> A <- matrix(1:6, nrow=2) # matrice 2 × 3
> print(A)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> A %*% M
[1,]
[2,]

Maxima

Le logiciel Maxima ne permet de créer que des matrices colonne vides ()n, 0 et la matrice carrée vide ()0, 0 :

(%i1) A:matrix()
(%o1) matrix()
(%i2) length(A)
(%o2) 0
(%i3) B:matrix([], [], [])
      ┌ ┐
      │ │
(%o3) │ │
      │ │
      └ ┘
(%i2) length(B)
(%o2) 3
(%i5) transpose(B)
(%o5) matrix()
(%i6) C:matrix([])
(%o6) matrix([])
(%i7) length(C)
(%o7) 1

Notez que matrix() est la matrice ()0, 0 ; Maxima n'est pas cohĂ©rent puisque charpoly(A, x), qui calcule le polynĂŽme caractĂ©ristique d'une matrice, renvoie une erreur indiquant que A n'est pas carrĂ©e mais a pour dimension 1 × 0. L'expression matrix([]) donne la matrice 1 × 1 qui contient le vecteur vide et qui, pour Maxima, est diffĂ©rente de matrix(). La transposĂ©e d'une matrice ()n, 0 donne la matrice ()0, 0.

Python

La librairie numpy permet de créer une matrice vide (ci dessous, la matrice se compose de 0 lignes et 5 colonnes)

import numpy as np  
x = np.empty((0, 5))

Bibliographie

  • [de Boor 1990] (en) Carl de Boor, « An empty exercise », ACM SIGNUM Newsletter, vol. 25, no 4,‎ , p. 2-6 (DOI 10.1145/122272.122273, lire en ligne)
  • [Nett et Haddad 1993] (en) C. N. Nett et W. M. Haddad, « A system-theoretic appropriate realization of the empty matrix concept », IEEE Transactions on Automatic Control, vol. 38, no 5,‎ , p. 771-775 (DOI 10.1109/9.277245, lire en ligne)

Notes et références

  1. (en) Josef Stoer et Christoph Witzgall, Convexity and Optimization in Finite Dimensions I, Springer, coll. « Grundlehren der mathematischen Wissenschaften » (no 163), (ISBN 978-3-642-46218-4 et 978-3-642-46216-0, DOI 10.1007/978-3-642-46216-0), p. 3
  2. de Boor 1990
  3. Voir Nicolas Bourbaki, « AlgĂšbre linĂ©aire », dans AlgĂšbre, Springer, coll. « ÉlĂ©ments de mathĂ©matique » (no II), , 2e Ă©d. (lire en ligne), A II.139, qui parle aussi de « matrice vide » dans le cas oĂč I ou J est l'ensemble vide.
  4. Nett et Haddad 1993, p. 771.
  5. Un tel vecteur est alors le 0-uplet d'Ă©lĂ©ments de K, et peut donc ĂȘtre identifiĂ© comme l'application vide vers K, notĂ©e ØK.
  6. C'est par exemple le choix du logiciel Scilab des versions 5.3 à 6.0, voir « Matrice vide (Scilab 5.3.0) », sur help.scilab.org, (consulté le ) et « Matrice vide (Scilab 6.0.1) », sur help.scilab.org, (consulté le ).
  7. Loren, « Calculus with Empty Arrays », sur The Art of Matlab, (consulté le )
  8. « Empty matrices », sur octave.org (consulté le )
  9. « Matrice vide (Scilab 5.5.2) », sur help.scilab.org, (consulté le ).
  10. « Matrice vide (Scilab 6.0.0) », sur help.scilab.org, (consulté le ).
  11. Contrairement Ă  ce que mentionne l'aide en ligne.
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.