det
déterminant
Séquence d'appel
d = det(X) [e,m] = det(X)
Paramètres
- X
- matrice carrée de nombres ou polynômes ou fractions rationnelles (à coefficients) réels ou complexes. Matrices creuses acceptées.
- d
- Scalaire du type de
X
: le déterminant de la matriceX
. SiX
est creuse,d
est toujours dense. - m
- nombre réel ou complexe : mantisse du déterminant en base 10, telle que
abs(m) ∈ [1,10)
. Argument non supporté lorsqueX
est polynômiale ou en fractions rationnelles. - e
- entier : la puissance de 10 du déterminant, telle que
d = m * 10e
. Argument non supporté lorsqueX
est polynômiale ou en fractions rationnelles.
Description
d = det(X) calcule et donne le déterminant de la matrice
X
.
Pour une matrice de polynômes ou de fractions rationelles, d=det(X)
utilise determ(..)
dont l'algorithme est basé sur la transformée de
Fourier.
d=detr(X)
peut être utilisée de manière alternative, utilisant
l'algorithme de Leverrier. Les deux méthodes produisent des résultats équivalents.
Pour une matrice de fractions rationnelles, neutraliser la simplification avec
simp_mode(%f)
peut être requis pour obtenir deux résultats identiques.
[e, m] = det(X) peut être utilisé uniquement pour des
matrices de nombres. Cette syntaxe permet de remédier aux débordements numériques vers 0
ou vers l'infini, lorsque abs(d)
est plus petit que
number_properties("tiny")
≈ 2.23 10-308 ou
plus grand que number_properties("huge")
≈ 1.80 10308.
Pour les matrices numériques denses, det(..)
est basée sur les routines LAPACK
DGETRF pour les matrices réelles et ZGETRF pour les matrices de nombres complexes.
Pour les matrices numériques creuses, le déterminant est calculé d'après la factorisation
LU de X
, réalisée à l'aide de la bibliothèque UMFPACK.
Exemples
A = rand(3,3)*5; det(A) [e, m] = det(A) // Matrice de nombres complexes : // A = grand(3,3,"uin",0,10) + grand(3,3,"uin",0,10)*%i A = [3+%i, 9+%i*3, 9+%i ; 8+%i*8, 4+%i*3, 7+%i*7 ; 4, 6+%i*2, 6+%i*9] det(A) [e, m] = det(A) abs(m) // dans [1, 10)
--> A = rand(3,3)*5; --> det(A) ans = -10.805163 --> [e, m] = det(A) e = 1. m = -1.0805163 --> // Matrice de nombres complexes : --> A = [3+%i,9+%i*3,9+%i;8+%i*8,4+%i*3,7+%i*7;4,6+%i*2,6+%i*9] A = 3. + i 9. + 3.i 9. + i 8. + 8.i 4. + 3.i 7. + 7.i 4. + 0.i 6. + 2.i 6. + 9.i --> det(A) ans = 745. - 225.i --> [e, m] = det(A) e = 2. m = 7.45 - 2.25i --> abs(m) // dans [1, 10) ans = 7.7823518
Déterminants très grands ou très petits : gestion des débordements numériques :
// Très grand déterminant : n = 1000; A = rand(n, n); det(A) [e, m] = det(A) // Très petit déterminant (d'une matrice encodée creuse) : A = (triu(sprand(n,n,1)) + diag(rand(1,n)))/1.5; det(A) prod(diag(A)) [e, m] = det(A) A = A/2; det(A) [e, m] = det(A)
--> // Très grand déterminant : --> A = rand(n, n); --> det(A) ans = -Inf --> [e, m] = det(A) // -3.1199e743 e = 743. m = -3.1198687 --> // Très petit déterminant (d'une matrice encodée creuse) : --> n = 1000; --> A = (triu(sprand(n,n,1)) + diag(rand(1,n)))/1.5; --> det(A) ans = 5.21D-236 --> prod(diag(A)) ans = 5.21D-236 --> [e, m] = det(A) e = -236. m = 5.2119757 --> A = A/2; --> det(A) ans = 0. --> [e, m] = det(A) e = -537. m = 4.8641473
Déterminant de matrices polynômiales :
s = %s; det([s, 1+s ; 2-s, s^2]) w = ssrand(2,2,4); roots(det(systmat(w))),trzeros(w) //zeros of linear system
--> det([s, 1+s ; 2-s, s^2]) ans = -2 -s +s² +s³ --> w = ssrand(2,2,4); --> roots(det(systmat(w))),trzeros(w) ans = -3.1907522 + 0.i 2.3596502 + 0.i ans = 2.3596502 + 0.i -3.1907522 + 0.i
Voir aussi
Fonctions Utilisées
Le calcul du determinant est basé sur les routines Lapack : DGETRF pour les matrices réelles et ZGETRF pour le cas complexe.
Concernant le cas des matrices creuses, le calcul du déterminant est effectué à partir de la décomposition LU de la librairie umfpack.
Historique
Version | Description |
6.1.1 | [e,m]=det(X) syntax extended to sparse matrices. |
Report an issue | ||
<< cond | Matrix Analysis | orth >> |