Matrice vide

Matrice de dimension ''m'' × 0 ou 0 × ''n'' (éventuellement de dimension 0 × 0), notée ()

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

Une matrice pouvant être définie abstraitement par une famille finie d'éléments d'un ensemble (souvent un anneau commutatif ou un corps) indexés par un produit cartésien et sont des ensembles finis, une matrice vide correspond au cas où soit soit est l'ensemble vide[3].

Ces matrices sont utiles pour travailler avec l'espace nul ( é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

modifier

L'espace nul   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   noté   :

 

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

  avec
 

Si l'on appelle   la dimension de  , alors il existe une unique matrice de dimension   qui représente cette application linéaire unique, c'est une matrice vide que l'on pourra noter  .

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

  avec
 

Il existe donc une unique matrice de dimension   représentant cette applications linéaire, la matrice vide  .

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

 

La matrice vide de dimension  , notée  , représente en particulier l'identité   de l'espace nul. C'est donc une matrice inversible (régulière), donc carrée. Elle représente également l'application nulle, donc :

 

Dans l'anneau nul des matrices de dimension  , l'unique élément est neutre à la fois pour le produit et pour la somme.

Propriétés des matrices vides

modifier

Dans ce qui suit, la notation « () » désigne une matrice vide quelconque.

  • l'image de toute matrice vide est réduite au vecteur nul :   ; le rang de toute matrice vide est donc nul :   ;
  • le noyau d'une matrice vide est l'espace tout entier : si   est vide,   ;
  • la norme de toute matrice vide est nulle :  ;
  • 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   et une matrice B de dimension  , au moins un des entiers  ,   et   étant nul ;   est une matrice de dimension   et donc :
    • si   , alors   est une matrice de dimension   donc une matrice vide :  ,
    • si  , alors   est une matrice de dimensions  , c'est également une matrice vide :  ,
    • mais si   et si   et  , alors la matrice   est la matrice nulle de dimension  
        ; 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   vers l'espace d'arrivée   ;

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 «   » ou bien «   » que si   est elle-même une matrice vide identique, le résultat est donc également une matrice vide.

Pour la matrice vide de dimension   :

  •   (matrice identité) donc :
    • la matrice est sa propre inverse :  ,
    • la matrice   à valeurs réelles est orthogonale ;
  • conditionnement :
    • certains retiennent la convention   par calcul[2] (puisque la norme est nulle),
    • d'autres retiennent   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 :   ; 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

modifier

Jusqu'à sa version 4, Matlab n'acceptait qu'une matrice vide notée []. À partir de sa version 5, il distingue les matrices vides   (notée []),   et  [7]. On peut obtenir une matrice vide   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   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].

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].

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,]

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

(%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   ; 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  . L'expression matrix([]) donne la matrice   qui contient le vecteur vide et qui, pour Maxima, est différente de matrix(). La transposée d'une matrice   donne la matrice  .

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

modifier
  • [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

modifier
  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. a et b 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. a et b Nett et Haddad 1993, p. 771.
  5. Un tel vecteur est alors le 0-uplet d'éléments de  , et peut donc être identifié comme l'application vide vers  , notée  .
  6. a et b 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.