# Matrice vide

En mathématiques, une matrice vide$^,$ 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\times 0$, $0\times n$ ou de manière triviale $0\times 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és par un produit cartésien $I\times J$ où $I$ et $J$ sont des ensembles finis, une matrice vide correspond au cas où soit $I$ soit $J$ est l'ensemble vide.
Ces matrices sont utiles pour travailler avec l'espace nul $K^{0}$ ($K$ étant un corps commutatif quelconque, habituellement $\mathbb {R}$ ou $\mathbb {C}$). 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. 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.

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

L'espace nul $K^{0}$ ne contient qu'un seul élément, le « vecteur vide » (le vecteur n'ayant aucune coordonnée). Un espace vectoriel ayant nécessairement un élément neutre, ce vecteur vide est le vecteur nul de $K^{0}$ noté $0_{K^{0}}$ :
    $K^{0}=\{0_{K^{0}}\}$
L'espace nul est de dimension 0. Soit un $K$-espace vectoriel $E$ quelconque. Il n'existe qu'une seule application linéaire de $E$ dans $K^{0}$, celle transformant tout vecteur de $E$ en ce vecteur nul (c'est l'application nulle). L'ensemble des applications linéaires de $E$ dans $K^{0}$ est donc un singleton.
    $L(E,K^{0})=\left\{f_{E,K^{0}}\right\}$ avec
    ${\begin{matrix}f_{E,K^{0}}:&E&\rightarrow &K^{0}\\&x&\mapsto &0_{K^{0}}\end{matrix}}$
Si l'on appelle $n$ la dimension de $E$, alors il existe une unique matrice de dimension $n\times 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 $K^{0}$ dans $E$, l'image de $K^{0}$ par cette application étant le vecteur nul de E puisque l'unique élément de $K^{0}$ est le vecteur nul (c'est donc également l'application nulle). L'ensemble des applications linéaires de $K^{0}$ dans $E$ est également un singleton.
    $L(K^{0},E)=\left\{f_{K^{0},E}\right\}$ avec
    ${\begin{matrix}f_{K^{0},E}:&K^{0}&\rightarrow &E\\&x&\mapsto &0_{E}\end{matrix}}$
Il existe donc une unique matrice de dimension $0\times n$ représentant cette application linéaire, la matrice vide $_{0,n}$.
En tant que représentant d'une application nulle, une matrice vide est une matrice nulle :
    ${\begin{aligned}_{n,0}=0_{n,0}\\_{0,n}=0_{0,n}\end{aligned}}$
La matrice vide de dimension $0\times 0$, notée $_{0,0}$, représente en particulier l'identité $\mathrm {Id} _{0}$ de l'espace nul. C'est donc une matrice inversible (régulière), donc carrée. Elle représente également l'application nulle, donc :
    $_{0,0}=\mathrm {Id} _{0}=0_{0,0}$
Dans l'anneau nul des matrices de dimension $0\times 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 quelconque.
* l'image de toute matrice vide est réduite au vecteur nul : $\operatorname {Im} ~=\{0\}$ ; le rang de toute matrice vide est donc nul : $\operatorname {rg} ~=0$ ;
* le noyau d'une matrice vide est l'espace tout entier : si $_{n,m}$ est vide, $\operatorname {Ker} ~_{m,n}=K^{m}$ ;
* 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\times n$ et une matrice B de dimension $n\times p$, au moins un des entiers $m$, $n$ et $p$ étant nul ; $AB$ est une matrice de dimension $m\times p$ et donc :
** si $m=0$ , alors $AB$ est une matrice de dimension $0\times p$ donc une matrice vide : $_{0,n}\times B=_{0,p}$,
** si $p=0$, alors $AB$ est une matrice de dimensions $m\times 0$, c'est également une matrice vide : $A\times_{n,0}=_{m,0}$,
** mais si $n=0$ et si $m\neq 0$ et $p\neq 0$, alors la matrice $AB$ est la matrice nulle de dimension $m\times p$
    $_{m,0}\times_{0,p}=0_{m,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 $K^{p}$ vers l'espace d'arrivée $K^{m}$ ;
L'addition de matrices est une loi de composition interne, les matrices ont donc 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\times 0$ :
* $_{0,0}=I_{0}$ (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 $\operatorname {cond} ~_{0,0}=0$ par calcul (puisque la norme est nulle),
** d'autres retiennent $\operatorname {cond} ~_{0,0}=1$ par application de la notion de conditionnement (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 : $\operatorname {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\times 0$ (notée), $0\times 1$ et $1\times 0$. On peut obtenir une matrice vide $0\times 1$ par
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.
Concernant le produit, on a :
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\times 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.

### Scilab

Le logiciel Scilab ne définit qu'une seule matrice vide notée. L'exemple précédent donne dans Scilab :
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 et
* + A == A + == à partir de sa version 6.0.0 ;
* A* ==*A == ;
* sum() == 0 et prod() == 1 ;
* det() == 0 ;
* inv() == ;
* cond() == 1.

### R

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

### Maxima

Le logiciel Maxima ne permet de créer que des matrices colonne vides $_{n,0}$ et la matrice carrée vide $_{0,0}$ :
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\times 0$. L'expression matrix() donne la matrice $1\times 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 bibliothèque numpy permet de créer une matrice vide (ci-dessous, la matrice se compose de zéro lignes et 5 colonnes) :
La bibliothèque pytorch permet de créer un tenseur vide de zéro lignes et 5 colonnes :