fix regression of min(sparseScalar) max(sparseScalar)
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / matrixoperations / min.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) 2018 - Samuel GOUGEON
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:ns5="http://www.w3.org/1999/xhtml"
18         xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
19         xmlns:scilab="http://www.scilab.org" xml:id="min" xml:lang="ru">
20     <refnamediv>
21         <refname>min</refname>
22         <refpurpose>минимум</refpurpose>
23     </refnamediv>
24     <refsynopsisdiv>
25         <title>Синтаксис</title>
26         <synopsis>
27             m = min(A)
28             Col = min(A, 'c')
29             Row = min(A, 'r'|'m')
30             M = min(A1, A2,..., An)
31             M = min(list(A1, A2,..., An))
32             [.., K] = min(..)
33         </synopsis>
34     </refsynopsisdiv>
35     <refsection>
36         <title>Аргументы</title>
37         <variablelist>
38             <varlistentry>
39                 <term>A, A1, ..., An</term>
40                 <listitem>
41                     <para>
42                         скаляры, векторы, матрицы или гиперматрицы кодированных целых чисел или
43                         вещественных чисел в полном или разрежённом формате. Они должны иметь
44                         одинаковые размеры или быть смешанными со скалярами (скаляры,
45                         следовательно, неявно расширяются  до размеров массивов).
46                         Разрежённые массивы не могут смешиваться с полными массивами, за
47                         исключением скаляров.
48                     </para>
49                 </listitem>
50             </varlistentry>
51             <varlistentry>
52                 <term>m</term>
53                 <listitem>
54                     <para>
55                         одиночное число = минимум из всех значений элементов <varname>A</varname>.
56                         Всегда в полном формате, даже если <varname>A</varname> является разряжённой.
57                     </para>
58                 </listitem>
59             </varlistentry>
60             <varlistentry>
61                 <term>Col</term>
62                 <listitem>
63                     <para>
64                         вектор-столбец, если <varname>A</varname> является двумерной матрицей или
65                         гиперматрицей размерами <literal>size(A)</literal> с размером
66                         <literal>size(A,2)</literal> равным 1: минимумы по столбцам (для каждой
67                         строки).
68                         Если <varname>A</varname> - разрежённая матрица, то <varname>Col</varname>
69                         тоже разрежённый.
70                     </para>
71                 </listitem>
72             </varlistentry>
73             <varlistentry>
74                 <term>Row</term>
75                 <listitem>
76                     <para>
77                         вектор-строка, если <varname>A</varname>  является двумерной матрицей или
78                         гиперматрицей размерами <literal>size(A)</literal> с размером
79                         <literal>size(A,2)</literal> равным 1: минимумы по строкам (для каждого
80                         стролбца).
81                         Если <varname>A</varname> - разрежённая матрица, то <varname>Row</varname>
82                         тоже разрежённый.
83                     </para>
84                 </listitem>
85             </varlistentry>
86             <varlistentry>
87                 <term>M</term>
88                 <listitem>
89                     <para>
90                         Массив размером = <literal>size(A1)</literal>, такой, что для каждого
91                         <literal>q</literal> <literal>M(q) = min(A1(q),A2(q),..An(q))</literal>.
92                         Если <varname>A</varname>,...,<varname>An</varname> - разрежённые матрицы,
93                         то <varname>M</varname> тоже разрежённый.
94                     </para>
95                 </listitem>
96             </varlistentry>
97             <varlistentry>
98                 <term>K</term>
99                 <listitem>
100                     <para>
101                         Указывает в <varname>A</varname> (первый) найденный минимум.
102                         Когда используется <literal>[m,K]=min(A)</literal>, то
103                         <itemizedlist>
104                             <listitem>
105                                 Если <literal>A</literal> вектор, то <varname>K</varname> - скаляр.
106                             </listitem>
107                             <listitem>
108                                 В противном случае <varname>K</varname> является вектор-строкой
109                                 <literal>[i,j,..]</literal> индексов.
110                             </listitem>
111                         </itemizedlist>
112                     </para>
113                     <para>
114                         Для других синтаксисов <varname>K</varname> имеет форму и размеры, соответствующие
115                         <varname>Col</varname>, <varname>Row</varname> и <varname>M</varname>.
116                     </para>
117                     <para>
118                         Для синтаксиса <literal>[M,K] = min(A1,A2,..,An)</literal> имеем для каждого линейного
119                         индекса <literal>q</literal>:
120                         <literal>[M(q),K(q)] = min([A1(q) A2(q) .. An(q)])</literal>.
121                     </para>
122                     <para>
123                         <warning>
124                             <varname>K</varname> всегда в полном формате, даже когда
125                             <varname>A, A1,..,An</varname> в разрежённом виде. Следовательно, когда
126                             используется синтаксис <literal>[M,K]=min(A1,A2,..)</literal> с огромными,
127                             но разрежёнными матрицами, то это приводит к огромной <emphasis>полной</emphasis>
128                             матрице <varname>K</varname>. Пользователь должен проверить достаточно ли памяти
129                             имеется для этого.
130                         </warning>
131                     </para>
132                 </listitem>
133             </varlistentry>
134         </variablelist>
135     </refsection>
136     <refsection>
137         <title>Описание</title>
138         <para>
139             Для <literal>A</literal> вещественного вектора или матрицы <literal>min(A)</literal> даёт
140             наименьший элемент в <literal>A</literal>.
141         </para>
142         <para>
143             <literal>[m,K]=min(A)</literal> даёт дополнительно индексы первого минимума.
144         </para>
145         <para>
146             Может быть использован второй строковый аргумент <literal>'r'</literal> или
147             <literal>'c'</literal>: <literal>'r'</literal> используется для получения
148             вектор-строки <literal>Row</literal> такой что <literal>Row(j)</literal>
149             содержит минимум <literal>j</literal>-го столбца <literal>A(:,j)</literal>,
150             <literal>K(j)</literal> даёт индекс строки, которая содержит минимум
151             столбца №<literal>j</literal>.
152         </para>
153         <para>
154             <literal>'c'</literal> используется для парной операции по строкам <literal>A</literal>.
155             <literal>'m'</literal> используется для совместимости с Matlab.
156         </para>
157         <para>
158             <literal>[M,K]=min(list(A1,...,An))</literal> является эквивалентным для
159             <literal>[M,K]=min(A1,A2,...,An)</literal>.
160         </para>
161         <note>
162             <itemizedlist>
163                <listitem>
164                     <literal>min()</literal> игнорирует значения <literal>NaN</literal> (если есть не
165                     только значения <literal>NaN</literal>).
166                 </listitem>
167                 <listitem>
168                     <literal>min([])</literal> возвращает <literal>[]</literal> для значений и индексов.
169                 </listitem>
170              </itemizedlist>
171         </note>
172         <warning>
173           If <literal>min(A1, A2,..., An)</literal> is used with a huge input sparse matrix of
174           low density, together with a strictly negative scalar input, the sparse result will no longer
175           have any 0 value: It will be a sparse array with density=1, that may lead to a memory failure.
176         </warning>
177     </refsection>
178     <refsection>
179         <title>Примеры</title>
180         <programlisting role="example"><![CDATA[
181 [m, k] = min([])
182 [m, k] = min([5 3 ; 2 %nan])
183 [m, n] = min([5 3 ; 2 %nan], 4)
184 [m, k] = min([5 -1 2], [1 5 1], [0 1 3])
185 [m, k] = min(list([5 -1 2], [1 5 1], [0 1 3]))
186  ]]></programlisting>
187     <screen><![CDATA[
188 --> [m, k] = min([])
189  m  =
190     []
191  k  =
192     []
193
194 --> [m, k] = min([5 3 ; 2 %nan])
195  m  =
196    2.
197  k  =
198    2.   1.
199
200 --> [m, k] = min([5 3 ; 2 %nan], 4)
201  m  =
202    4.   3.
203    2.   4.
204  k  =
205    2.   1.
206    1.   2.
207
208 --> [m, k] = min([5 -1 2], [1 5 1], [0 1 3])
209  m  =
210    0.  -1.   1.
211  k  =
212    3.   1.   2.
213 ]]></screen>
214         <para>
215             <emphasis role="bold">С опциями "r" или "c"</emphasis>:
216         </para>
217         <programlisting role="example"><![CDATA[
218 A = grand(4,6,"uin",0,30); A(3,4) = %nan
219 [Row, K] = min(A, "r")
220 [Col, K] = min(A, "c")
221  ]]></programlisting>
222     <screen><![CDATA[
223 --> A = grand(4,6,"uin",0,30); A(3,4) = %nan
224  A  =
225    24.   14.   24.   4.    6.    11.
226    23.   25.   29.   6.    19.   5.
227    30.   2.    20.   Nan    6.   6.
228    20.   8.    13.   14.   16.   3.
229
230 --> [Row, K] = min(A, "r")
231  Row  =
232    20.   2.   13.   4.   6.   3.
233  K  =
234    4.   3.   4.   1.   1.   4.
235
236 --> [Col, K] = min(A, "c")
237  Col  =
238    4.
239    5.
240    2.
241    3.
242  K  =
243    4.
244    6.
245    2.
246    6.
247 ]]></screen>
248         <para>
249             <emphasis role="bold">С разрежёнными входными данными</emphasis>:
250         </para>
251         <programlisting role="example"><![CDATA[
252 s = sprand(5,4,0.5); k = s~=0; s(k) = round((s(k)-0.5)*10), full(s)
253 [Row, K] = min(s, "r")
254 [Col, K] = min(s, "c")
255 [M, K] = min(s,1);   [full(s)  ones(s(:,1))*%nan  full(M)]
256 issparse(M)
257 K
258  ]]></programlisting>
259     <screen><![CDATA[
260 --> s = sprand(5,4,0.5); k = s~=0; s(k) = round((s(k)-0.5)*10), full(s)
261  s  =
262 (  5,  4) sparse matrix
263 (  1,  3)     5.
264 (  1,  4)    -2.
265 (  2,  1)    -3.
266 (  2,  3)    -5.
267 (  3,  1)     3.
268 (  3,  2)    -1.
269 (  3,  3)     3.
270 (  3,  4)     4.
271 (  5,  3)     4.
272 (  5,  4)    -5.
273  ans  =
274    0.   0.   5.  -2.
275   -3.   0.  -5.   0.
276    3.  -1.   3.   4.
277    0.   0.   0.   0.
278    0.   0.   4.  -5.
279
280 --> [Row, K] = min(s, "r")
281  Row  =
282 (  1,  4) sparse matrix
283 (  1,  1)    -3.
284 (  1,  2)    -1.
285 (  1,  3)    -5.
286 (  1,  4)    -5.
287  K  =
288    2.   3.   2.   5.
289
290 --> [Col, K] = min(s, "c")
291  Col  =
292 (  5,  1) sparse matrix
293 (  1,  1)    -2.
294 (  2,  1)    -5.
295 (  3,  1)    -1.
296 (  5,  1)    -5.
297  K  =
298    4.
299    3.
300    2.
301    1.
302    4.
303
304 --> [M, K] = min(s,1);   [full(s)  ones(s(:,1))*%nan  full(M)]
305  ans  =
306    0.   0.   5.  -2.   Nan   0.   0.   1.  -2.
307   -3.   0.  -5.   0.   Nan  -3.   0.  -5.   0.
308    3.  -1.   3.   4.   Nan   1.  -1.   1.   1.
309    0.   0.   0.   0.   Nan   0.   0.   0.   0.
310    0.   0.   4.  -5.   Nan   0.   0.   1.  -5.
311
312 --> issparse(M)
313  ans  =
314    1.
315 --> K
316  K  =
317    1.   1.   2.   1.
318    1.   1.   1.   1.
319    2.   1.   2.   2.
320    1.   1.   1.   1.
321    1.   1.   2.   1.
322 ]]></screen>
323     </refsection>
324     <refsection role="see also">
325         <title>Смотрите также</title>
326         <simplelist type="inline">
327             <member>
328                 <link linkend="max">max</link>
329             </member>
330             <member>
331                 <link linkend="strange">strange</link>
332             </member>
333             <member>
334                 <link linkend="mean">mean</link>
335             </member>
336             <member>
337                 <link linkend="gsort">gsort</link>
338             </member>
339             <member>
340                 <link linkend="find">find</link>
341             </member>
342             <member>
343                 <link linkend="full">full</link>
344             </member>
345         </simplelist>
346     </refsection>
347     <refsection role="history">
348         <title>История</title>
349         <revhistory>
350             <revision>
351                 <revnumber>6.0.2</revnumber>
352                 <revdescription>
353                     Теперь min() действительно работает с разрежёнными матрицами
354                 </revdescription>
355             </revision>
356         </revhistory>
357     </refsection>
358 </refentry>