* Bug 16636 fixed: det(sparse) now actually implemented
[scilab.git] / scilab / modules / linear_algebra / help / fr_FR / matrix / det.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) 2008 - INRIA
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  * Copyright (C) 2021 - Samuel GOUGEON - Le Mans Université
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  -->
16 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
17           xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
18           xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
19           xml:lang="fr" xml:id="det">
20     <refnamediv>
21         <refname>det </refname>
22         <refpurpose>déterminant  </refpurpose>
23     </refnamediv>
24     <refsynopsisdiv>
25         <title>Séquence d'appel</title>
26         <synopsis>
27             d = det(X)
28             [e,m] = det(X)
29         </synopsis>
30     </refsynopsisdiv>
31     <refsection>
32         <title>Paramètres</title>
33         <variablelist>
34             <varlistentry>
35                 <term>X</term>
36                 <listitem>
37                     matrice carrée de nombres ou polynômes ou fractions rationnelles (à coefficients)
38                     réels ou complexes. Matrices creuses acceptées.
39                     <para/>
40                 </listitem>
41             </varlistentry>
42             <varlistentry>
43                 <term>d</term>
44                 <listitem>
45                     Scalaire du type de <varname>X</varname> : le déterminant de la matrice
46                     <varname>X</varname>. Si <varname>X</varname> est creuse,
47                     <varname>d</varname> est toujours dense.
48                     <para/>
49                 </listitem>
50             </varlistentry>
51             <varlistentry>
52                 <term>m</term>
53                 <listitem>
54                     nombre réel ou complexe : mantisse du déterminant en base 10, telle que
55                     <literal>abs(m) ∈ [1,10)</literal>. Argument non supporté lorsque <varname>X</varname>
56                     est polynômiale ou en fractions rationnelles.
57                     <para/>
58                 </listitem>
59             </varlistentry>
60             <varlistentry>
61                 <term>e</term>
62                 <listitem>
63                     entier : la puissance de 10 du déterminant, telle que
64                     <literal>d = m * 10<superscript>e</superscript></literal>.
65                     Argument non supporté lorsque <varname>X</varname> est polynômiale ou
66                     en fractions rationnelles.
67                     <para/>
68                 </listitem>
69             </varlistentry>
70         </variablelist>
71     </refsection>
72     <refsection>
73         <title>Description</title>
74         <para>
75             <emphasis role="bold">d = det(X)</emphasis> calcule et donne le déterminant de la matrice
76             <varname>X</varname>.
77         </para>
78         <para>
79             Pour une matrice de polynômes ou de fractions rationelles, <literal>d=det(X)</literal>
80             utilise <literal>determ(..)</literal> dont l'algorithme est basé sur la transformée de
81             Fourier.
82             <literal>d=detr(X)</literal> peut être utilisée de manière alternative, utilisant
83             l'algorithme de Leverrier. Les deux méthodes produisent des résultats équivalents.
84             Pour une matrice de fractions rationnelles, neutraliser la simplification avec
85             <code>simp_mode(%f)</code> peut être requis pour obtenir deux résultats identiques.
86         </para>
87         <para>
88             <emphasis role="bold">[e, m] = det(X)</emphasis> peut être utilisé uniquement pour des
89             matrices de nombres. Cette syntaxe permet de remédier aux débordements numériques vers 0
90             ou vers l'infini, lorsque <literal>abs(d)</literal> est plus petit que
91             <literal>number_properties("tiny")</literal> ≈ 2.23 10<superscript>-308</superscript> ou
92             plus grand que <literal>number_properties("huge")</literal> ≈ 1.80 10<superscript>308</superscript>.
93         </para>
94         <para>
95             Pour les matrices numériques denses, <literal>det(..)</literal> est basée sur les routines LAPACK
96             DGETRF pour les matrices réelles et  ZGETRF pour les matrices de nombres complexes.
97         </para>
98         <para>
99             Pour les matrices numériques creuses, le déterminant est calculé d'après la factorisation
100             LU  de <varname>X</varname>, réalisée à l'aide de la bibliothèque UMFPACK.
101         </para>
102     </refsection>
103     <refsection>
104         <title>Exemples</title>
105         <programlisting role="example"><![CDATA[
106 A = rand(3,3)*5;
107 det(A)
108 [e, m] = det(A)
109
110 // Matrice de nombres complexes :
111 // A = grand(3,3,"uin",0,10) + grand(3,3,"uin",0,10)*%i
112 A = [3+%i, 9+%i*3, 9+%i ; 8+%i*8, 4+%i*3, 7+%i*7 ; 4, 6+%i*2, 6+%i*9]
113 det(A)
114 [e, m] = det(A)
115 abs(m)  // dans [1, 10)
116      ]]></programlisting>
117         <screen><![CDATA[
118 --> A = rand(3,3)*5;
119 --> det(A)
120  ans  =
121   -10.805163
122
123 --> [e, m] = det(A)
124  e  =
125    1.
126  m  =
127   -1.0805163
128
129 --> // Matrice de nombres complexes :
130 --> A = [3+%i,9+%i*3,9+%i;8+%i*8,4+%i*3,7+%i*7;4,6+%i*2,6+%i*9]
131  A  =
132    3. + i     9. + 3.i   9. + i
133    8. + 8.i   4. + 3.i   7. + 7.i
134    4. + 0.i   6. + 2.i   6. + 9.i
135
136 --> det(A)
137  ans  =
138    745. - 225.i
139
140 --> [e, m] = det(A)
141  e  =
142    2.
143  m  =
144    7.45 - 2.25i
145
146 --> abs(m)  // dans [1, 10)
147  ans  =
148    7.7823518
149 ]]></screen>
150         <para/>
151         <para>
152             Déterminants très grands ou très petits : gestion des débordements numériques :
153         </para>
154         <programlisting role="example"><![CDATA[
155 // Très grand déterminant :
156 n = 1000;
157 A = rand(n, n);
158 det(A)
159 [e, m] = det(A)
160
161 // Très petit déterminant (d'une matrice encodée creuse) :
162 A = (triu(sprand(n,n,1)) + diag(rand(1,n)))/1.5;
163 det(A)
164 prod(diag(A))
165 [e, m] = det(A)
166 A = A/2;
167 det(A)
168 [e, m] = det(A)
169      ]]></programlisting>
170         <screen><![CDATA[
171 --> // Très grand déterminant :
172 --> A = rand(n, n);
173 --> det(A)
174  ans  =
175   -Inf
176
177 --> [e, m] = det(A)  // -3.1199e743
178  e  =
179    743.
180  m  =
181   -3.1198687
182
183 --> // Très petit déterminant (d'une matrice encodée creuse) :
184 --> n = 1000;
185 --> A = (triu(sprand(n,n,1)) + diag(rand(1,n)))/1.5;
186 --> det(A)
187  ans  =
188    5.21D-236
189
190 --> prod(diag(A))
191  ans  =
192    5.21D-236
193
194 --> [e, m] = det(A)
195  e  =
196   -236.
197  m  =
198    5.2119757
199
200 --> A = A/2;
201 --> det(A)
202  ans  =
203    0.
204
205 --> [e, m] = det(A)
206  e  =
207   -537.
208  m  =
209    4.8641473
210 ]]></screen>
211         <para/>
212         <para>
213             Déterminant de matrices polynômiales :
214         </para>
215         <programlisting role="example"><![CDATA[
216 s = %s;
217 det([s, 1+s ; 2-s, s^2])
218
219 w = ssrand(2,2,4);
220 roots(det(systmat(w))),trzeros(w)   //zeros of linear system
221      ]]></programlisting>
222         <screen><![CDATA[
223 --> det([s, 1+s ; 2-s, s^2])
224  ans  =
225   -2 -s +s² +s³
226
227 --> w = ssrand(2,2,4);
228 --> roots(det(systmat(w))),trzeros(w)
229  ans  =
230   -3.1907522 + 0.i
231    2.3596502 + 0.i
232
233  ans  =
234    2.3596502 + 0.i
235   -3.1907522 + 0.i
236 ]]></screen>
237     </refsection>
238     <refsection role="see also">
239         <title>Voir aussi</title>
240         <simplelist type="inline">
241             <member>
242                 <link linkend="detr">detr</link>
243             </member>
244             <member>
245                 <link linkend="determ">determ</link>
246             </member>
247             <member>
248                 <link linkend="simp_mode">simp_mode</link>
249             </member>
250         </simplelist>
251     </refsection>
252     <refsection>
253         <title>Fonctions Utilisées</title>
254         <para>
255             Le calcul du determinant est basé sur les routines Lapack :
256             DGETRF pour les matrices réelles et  ZGETRF pour le cas complexe.
257         </para>
258         <para>
259             Concernant le cas des matrices creuses, le calcul du déterminant est effectué
260             à partir de la décomposition LU de la librairie umfpack.
261         </para>
262     </refsection>
263     <refsection role="history">
264         <title>Historique</title>
265         <revhistory>
266             <revision>
267                 <revnumber>6.1.1</revnumber>
268                 <revdescription>
269                     [e,m]=det(X) syntax extended to sparse matrices.
270                 </revdescription>
271             </revision>
272         </revhistory>
273     </refsection>
274 </refentry>