* Bug 16636 fixed: det(sparse) now actually implemented
[scilab.git] / scilab / modules / linear_algebra / help / ru_RU / 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="ru" xml:id="det">
20     <refnamediv>
21         <refname>det</refname>
22         <refpurpose>определитель квадратной матрицы</refpurpose>
23     </refnamediv>
24     <refsynopsisdiv>
25         <title>Синтаксис</title>
26         <synopsis>
27             d = det(X)
28             [e,m] = det(X)
29         </synopsis>
30     </refsynopsisdiv>
31     <refsection>
32         <title>Аргументы</title>
33         <variablelist>
34             <varlistentry>
35                 <term>X</term>
36                 <listitem>
37                     квадратная матрица вещественных или комплексных чисел, полиномов или
38                     дробно-рациональных выражений. Принимаются разрежённо-кодированные
39                     матрицы.
40                     <para/>
41                 </listitem>
42             </varlistentry>
43             <varlistentry>
44                 <term>d</term>
45                 <listitem>
46                     Скаляр типа <varname>X</varname>: определитель <varname>X</varname>.
47                     Если <varname>X</varname> является разрежённо-кодированной, то
48                     <varname>d</varname> является плотной.
49                     <para/>
50                 </listitem>
51             </varlistentry>
52             <varlistentry>
53                 <term>m</term>
54                 <listitem>
55                     вещественное или комплексное число: определитель мантиссы по основанию 10
56                     <literal>abs(m) ∈ [1,10)</literal>. Не поддерживается для полиномиального
57                     или дробно-рационального <varname>X</varname>.
58                     <para/>
59                 </listitem>
60             </varlistentry>
61             <varlistentry>
62                 <term>e</term>
63                 <listitem>
64                     целое: определитель экспоненты по основанию 10, такой, что
65                     <literal>d = m * 10<superscript>e</superscript></literal>.
66                     Не поддерживается для полиномиального или дробно-рационального
67                     <varname>X</varname>.
68                     <para/>
69                 </listitem>
70             </varlistentry>
71         </variablelist>
72     </refsection>
73     <refsection>
74         <title>Описание</title>
75         <para>
76             <emphasis role="bold">d = det(X)</emphasis> выдаёт определитель матрицы
77             <varname>X</varname>.
78         </para>
79         <para>
80             Для полиномиальной или дробно-рациональной матрицы <literal>d=det(X)</literal>
81             использует <literal>determ(..)</literal>, чей алгоритм основан на БПФ.
82             Альтернативно может использоваться <literal>d=detr(X)</literal>, основанный
83             на алгоритме Леверье. Оба метода выдают одинаковые результаты. Для
84             дробно-рациональных матриц может потребоваться отключение <code>simp_mode(%f)</code>
85             для получения идентичных результатов.
86         </para>
87         <para>
88             <emphasis role="bold">[e, m] = det(X)</emphasis> может использоваться только
89             для матрицы чисел. Этот синтаксис позволяет преодолеть переполнение снизу
90             или сверху, когда <literal>abs(d)</literal> меньше, чем
91             <literal>number_properties("tiny")</literal> ≈ 2,23 10<superscript>-308</superscript>
92             либо больше, чем
93             <literal>number_properties("huge")</literal> ≈ 1,80 10<superscript>308</superscript>.
94         </para>
95         <para>
96             Для плотных матриц <literal>det(..)</literal> основан на процедуре из Lapack
97             DGETRF для вещественных матриц и ZGETRF для комплексных.
98         </para>
99         <para>
100             Для разрежённых матриц определитель получается из LU-разложения, благодаря
101             библиотеке umfpack.
102         </para>
103     </refsection>
104     <refsection>
105         <title>Примеры</title>
106         <programlisting role="example"><![CDATA[
107 A = rand(3,3)*5;
108 det(A)
109 [e, m] = det(A)
110
111 // Матрица комплексных чисел:
112 // A = grand(3,3,"uin",0,10) + grand(3,3,"uin",0,10)*%i
113 A = [3+%i, 9+%i*3, 9+%i ; 8+%i*8, 4+%i*3, 7+%i*7 ; 4, 6+%i*2, 6+%i*9]
114 det(A)
115 [e, m] = det(A)
116 abs(m)  // in [1, 10)
117      ]]></programlisting>
118         <screen><![CDATA[
119 --> A = rand(3,3)*5;
120 --> det(A)
121  ans  =
122   -10.805163
123
124 --> [e, m] = det(A)
125  e  =
126    1.
127  m  =
128   -1.0805163
129
130 --> // Matrix of complex numbers:
131 --> A = [3+%i, 9+%i*3, 9+%i ; 8+%i*8, 4+%i*3, 7+%i*7 ; 4, 6+%i*2, 6+%i*9]
132  A  =
133    3. + i     9. + 3.i   9. + i
134    8. + 8.i   4. + 3.i   7. + 7.i
135    4. + 0.i   6. + 2.i   6. + 9.i
136
137 --> det(A)
138  ans  =
139    745. - 225.i
140
141 --> [e, m] = det(A)
142  e  =
143    2.
144  m  =
145    7.45 - 2.25i
146
147 --> abs(m)  // in [1, 10)
148  ans  =
149    7.7823518
150 ]]></screen>
151         <para/>
152         <para>
153             Очень большой или маленький определители: обработка переполнения снизу и сверху:
154         </para>
155         <programlisting role="example"><![CDATA[
156 // Очень большой определитель:
157 n = 1000;
158 A = rand(n, n);
159 det(A)
160 [e, m] = det(A)
161
162 // Очень маленький определитель (разрежённой кодированной матрицы):
163 A = (triu(sprand(n,n,1)) + diag(rand(1,n)))/1.5;
164 det(A)
165 prod(diag(A))
166 [e, m] = det(A)
167 A = A/2;
168 det(A)
169 [e, m] = det(A)
170      ]]></programlisting>
171         <screen><![CDATA[
172 --> // Very big determinant:
173 --> A = rand(n, n);
174 --> det(A)
175  ans  =
176   -Inf
177
178 --> [e, m] = det(A)  // -3.1199e743
179  e  =
180    743.
181  m  =
182   -3.1198687
183
184 --> // Very small determinant (of a sparse-encoded matrix):
185 --> n = 1000;
186 --> A = (triu(sprand(n,n,1)) + diag(rand(1,n)))/1.5;
187 --> det(A)
188  ans  =
189    5.21D-236
190
191 --> prod(diag(A))
192  ans  =
193    5.21D-236
194
195 --> [e, m] = det(A)
196  e  =
197   -236.
198  m  =
199    5.2119757
200
201 --> A = A/2;
202 --> det(A)
203  ans  =
204    0.
205
206 --> [e, m] = det(A)
207  e  =
208   -537.
209  m  =
210    4.8641473
211 ]]></screen>
212         <para/>
213         <para>
214             Определитель полиномиальной матрицы:
215         </para>
216         <programlisting role="example"><![CDATA[
217 s = %s;
218 det([s, 1+s ; 2-s, s^2])
219
220 w = ssrand(2,2,4);
221 roots(det(systmat(w))),trzeros(w)   //нули линейной системы
222      ]]></programlisting>
223         <screen><![CDATA[
224 --> det([s, 1+s ; 2-s, s^2])
225  ans  =
226   -2 -s +s² +s³
227
228 --> w = ssrand(2,2,4);
229 --> roots(det(systmat(w))),trzeros(w)
230  ans  =
231   -3.1907522 + 0.i
232    2.3596502 + 0.i
233
234  ans  =
235    2.3596502 + 0.i
236   -3.1907522 + 0.i
237 ]]></screen>
238     </refsection>
239     <refsection role="see also">
240         <title>Смотрите также</title>
241         <simplelist type="inline">
242             <member>
243                 <link linkend="detr">detr</link>
244             </member>
245             <member>
246                 <link linkend="determ">determ</link>
247             </member>
248             <member>
249                 <link linkend="simp_mode">simp_mode</link>
250             </member>
251         </simplelist>
252     </refsection>
253     <refsection role="history">
254         <title>История</title>
255         <revhistory>
256             <revision>
257                 <revnumber>6.1.1</revnumber>
258                 <revdescription>
259                     Синтаксис [e,m]=det(X) расширен до разрежённых матриц.
260                 </revdescription>
261             </revision>
262         </revhistory>
263     </refsection>
264 </refentry>