Déterminant d’une matrice : det

### 6.53.4 Déterminant d’une matrice : det

det a comme argument une matrice A.
det renvoie le déterminant de la matrice A.
On tape :

det([[1,2],[3,4]])

On obtient :

-2

On tape :

det(idn(3))

On obtient :

1

On peut spécifier l’algorithme de calcul du déterminant en ajoutant un argument optionnel

- `lagrange` : lorsque les coefficients de la matrice sont des polynômes ou des fractions rationnelles, calcule le déterminant par évaluation des variables de ces polynômes ou fractions et interpolation de Lagrange
- `rational_det` : l’algorithme du pivot de Gauss est appliqué sans conversion au format interne pour les fractions, et sans réduction préalable vers des coefficients sans dénominateurs
- `bareiss` : l’algorithme de Gauss-Bareiss est utilisé (réduction sans fraction et division par le pivot de l’étape précédente).
- `linsolve` : algorithme p-adique (pour une matrice à coefficients entiers).
- `minor_det` : l’algorithme utilisé est le développement des mineurs. Ceci nécessite 2n opérations, mais est parfois plus rapide que les autres algorithmes pour des matrices de taille moyenne (jusquà n=20 environ) à coefficients polynomiaux.

Par défaut, l’algorithme utilisé est choisi parmi Bareiss et Lagrange, celui donnant à priori en fonction des coefficients le temps de calcul le plus rapide est utilisé. Pour les matrices à coefficients entiers, l’algorithme utilisé par défaut est un mix d’une méthode p-adique et d’une méthode modulaire. On commence par résoudre un système linéaire modulo un premier p pour trouver un grand facteur du déterminant, puis on termine le calcul en complétant par les restes chinois avec quelques nombres premiers. On arrête l’algorithme de manière probabiliste (en fonction de la valeur de є=`proba_epsilon`) lorsque le déterminant reconstruit par les restes chinois reste constant pour un produit de nombres premiers supérieur à 1/є. Si є=0, l’algorithme est déterministe, le test d’arrêt utilise la borne de Hadamard du déterminant. Le temps de calcul est en O(n4 ln(n)) mais pour des valeurs de n pas trop grandes il ressemble plutot à un O(n3).