Calcul du déterminant d'une matrice par la
méthode des mineurs
Nous allons nous intéresser
à la méthode de calcul du déterminant d'une
matrice utilisant les mineurs de la matrice.
On rappelle le résultat du
cours : Soit A=(a_i,j) une matrice nxn dans R. On note A_ij son mineur
d'ordre (i,j) (ie. la matrice formée à partir de A en lui
ôtant sa i-ème ligne et sa j-ème colonne). Alors
det(A) =
_i=1
a_ij
det(A_ij)=
_j=1
a_ij det(A_ij).
Nous allons pour nous simplifier le
travail travailler avec des matrices dont les coefficients sont des
entiers entre 0 et 10. Nous pouvons créer de telles matrices
à l'aide de la procédure suivante.
> |
aleabis:=proc() evalf(rand()mod 10); end; |
> |
A := randmatrix(7,7,entries=aleabis); |
1. Donner une procédure Mineur
qui à partir d'une matrice A et de deux indices i et j nous
donne le mineur de A d'ordre (i,j) (en vous servant de ce qui a
été fait à la dernière séance).
> |
M:= randmatrix(4,4,entries=aleabis); |
2. Donner une procédure
NbZeroLigne qui à partir d'une matrice A et d'un indice i nous
donne le nombre de coefficients nuls de la ligne i de la matrice A.
3. Donner une procédure
NbZeroColonne qui à partir d'une matrice A et d'un indice j nous
donne le nombre de coefficients nuls de la colonne j de la matrice A.
4. Donner une procédure
LigneZero qui à partir d'une matrice A détermine l'indice
de la ligne de A qui a le plus de coefficients nuls et le nombre de
coefficients nuls de cette ligne. En utilisant cette procédure,
donner une procédure ColonneZero qui à partir d'une matrice
A donne
la colonne de A qui a le plus de coefficients nuls et le nombre de
coefficients nuls de cette ligne.
5. Donner une procédure
DetParMineur récursive qui détermine le
déterminant d'une matrice A par la méthode des mineurs.
Cette procédure choisira la ligne ou la colonne ayant le plus de
coefficients nuls. On rappelle que le déterminant d'une matrice
1x1 est égal au coefficient de la matrice.
> |
N:=randmatrix(2,2, entries = aleabis); |
On peut vérifier le calcul par
la procédure préprogrammée.
> |
J := randmatrix(5,5, entries = aleabis); |