Soit E un espace vectoriel de dimension finie n, et soit B=(u1,...,un) et B'=(v1,...,vn) deux bases de E.
Nous nous posons les problèmes suivants: Le premier problème peut, dans tous les cas, être résolu en posant un système d'équations. Mais il est possible que cette opération de conversion de coordonnées soit à répéter de nombreuses fois. Il est donc souhaitable d'obtenir un procédé automatique (des formules calculées une fois pour toutes) pour effectuer les conversions. La même remarque vaut pour les matrices d'endomorphismes.
Considérons la matrice P de l'application identique par rapport aux bases B' et B, P=M(Id,B',B).
Les colonnes de P sont les coordonnées des vecteurs de la base B' exprimés dans la base B. P s'appelle par définition la 'matrice de passage' de B à B'.
Il résulte immédiatement de la définition que:
La matrice de passage de B' à B est l'inverse de la matrice de passage de B à B'
Cette matrice de passage résout nos deux problèmes, plus précisément:
Si X est la matrice colonne représentant le vecteur u dans la base B alors P-1X est la matrice colonne représentant u dans la base B'.
La démonstration tient tout entière dans la définition de P.
Soit f un endomorphisme de E. Alors si M1=M(f,B) et M2=M(f,B') on a entre M1 et M2 la relation:
M2=P-1M1P
Cela résulte du théorème sur la matrice d'une composée et du fait que f=IdofoId
Examinons maintenant le cas où B est la base canonique de Kn
Soit B'=(v1,...,vn). La matrice P est obtenue immédiatemment, c'est celle dont les colonnes sont les coordonnées des vi . Tout se résume donc à un calcul d'inverse.

Café Python

Nous calculons ici une matrice de passage en inversant une matrice par les fonctions spécialisées des bibliothèques numpy et scipy.

Voici le résultat de l'exécution
[[ 2 1 0 0]
[ 3 2 0 0]
[ 1 1 3 4]
[ 2 -1 2 3]]
[[ 2.00000000e+00 -1.00000000e+00 0.00000000e+00 0.00000000e+00]
[ -3.00000000e+00 2.00000000e+00 2.48580453e-16 -3.17210451e-16]
[ 3.10000000e+01 -1.90000000e+01 3.00000000e+00 -4.00000000e+00]
[ -2.30000000e+01 1.40000000e+01 -2.00000000e+00 3.00000000e+00]]
De fait le résultat est :
   2   1    0    0   3    2    0    0   31 19    3   4 23   14   2   3
Ce genre d'erreurs d'arrondi (très faible de l'ordre de 10-16, se produit souvent. Il est le résultat du grand nombre d'opérations effectuées et de la précision des flottants du système (quel qu'il soit ...). Il n'y a jamais de calcul exact avec des 'floats'.