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 :
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
- (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
- de Boor 1990
- 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.
- Nett et Haddad 1993, p. 771.
- 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.
- 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 ).
- Loren, « Calculus with Empty Arrays », sur The Art of Matlab, (consulté le )
- « Empty matrices », sur octave.org (consulté le )
- « Matrice vide (Scilab 5.5.2) », sur help.scilab.org, (consulté le ).
- « Matrice vide (Scilab 6.0.0) », sur help.scilab.org, (consulté le ).
- Contrairement Ă ce que mentionne l'aide en ligne.