Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Algèbre Lineaire > Matrix Analysis > det

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 matrice X. Si X 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é lorsque X est polynômiale ou en fractions rationnelles.

e
entier : la puissance de 10 du déterminant, telle que d = m * 10e. Argument non supporté lorsque X 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

  • detr — déterminant d'une matrice de fractions rationnelles ou de polynômes
  • determ — déterminant d'une matrice de polynômes
  • simp_mode — mode de simplification des fractions rationnelles

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

VersionDescription
6.1.1 [e,m]=det(X) syntax extended to sparse matrices.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jan 03 14:33:05 CET 2022