fix regression of min(sparseScalar) max(sparseScalar)
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / matrixoperations / max.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="max" xml:lang="ru">
20     <refnamediv>
21         <refname>max</refname>
22         <refpurpose>максимум</refpurpose>
23     </refnamediv>
24     <refsynopsisdiv>
25         <title>Синтаксис</title>
26         <synopsis>
27             m = max(A)
28             Col = max(A, 'c')
29             Row = max(A, 'r'|'m')
30             M = max(A1, A2,..., An)
31             M = max(list(A1, A2,..., An))
32             [.., K] = max(..)
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) = max(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]=max(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] = max(A1,A2,..,An)</literal> имеем для каждого линейного
119                         индекса <literal>q</literal>:
120                         <literal>[M(q),K(q)] = max([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]=max(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>max(A)</literal> даёт
140             наибольший элемент в <literal>A</literal>.
141         </para>
142         <para>
143             <literal>[m,K]=max(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]=max(list(A1,...,An))</literal> является эквивалентным для
159             <literal>[M,K]=max(A1,A2,...,An)</literal>.
160         </para>
161         <note>
162             <itemizedlist>
163                 <listitem>
164                     <literal>max()</literal> игнорирует значения <literal>NaN</literal> (если есть не
165                     только значения <literal>NaN</literal>).
166                 </listitem>
167                 <listitem>
168                     <literal>max([])</literal> возвращает <literal>[]</literal> для значений и индексов.
169                 </listitem>
170             </itemizedlist>
171         </note>
172         <warning>
173           If <literal>max(A1, A2,..., An)</literal> is used with a huge input sparse matrix of
174           low density, together with a strictly positive 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] = max([])
182 [m, k] = max([1 5 ; 3 %nan])
183 [m, k] = max([1 5 ; 3 %nan], 2.5)
184 [m, k] = max([5 -1 1], [1 0 3], [2 1 3])
185 [m, k] = max(list([5 -1 1], [1 0 3], [2 1 3]))
186  ]]></programlisting>
187     <screen><![CDATA[
188 --> [m, k] = max([])
189  m  =
190     []
191  k  =
192     []
193
194 --> [m, k] = max([1 5 ; 3 %nan])
195  m  =
196    5.
197  k  =
198    1.   2.
199
200 --> [m, k] = max([1 5 ; 3 %nan], 2.5)
201  m  =
202    2.5   5.
203    3.    2.5
204  k  =
205    2.   1.
206    1.   2.
207
208 --> [m, k] = max([5 -1 1], [1 0 3], [2 1 3])
209  m  =
210    5.   1.   3.
211  k  =
212    1.   3.   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] = max(A, "r")
220 [Col, K] = max(A, "c")
221  ]]></programlisting>
222     <screen><![CDATA[
223 --> A = grand(4,6,"uin",0,30); A(3,4) = %nan
224  A  =
225    18.   3.    22.   0.    13.   28.
226    16.   20.   25.   6.    10.   1.
227    25.   26.   20.   Nan   2.    21.
228    5.    9.    16.   15.   24.   25.
229
230 --> [Row, K] = max(A, "r")
231  Row  =
232    25.   26.   25.   15.   24.   28.
233  K  =
234    3.   3.   2.   4.   4.   1.
235
236 --> [Col, K] = max(A, "c")
237  Col  =
238    28.
239    25.
240    26.
241    25.
242  K  =
243    6.
244    3.
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] = max(s, "r")
254 [Col, K] = max(s, "c")
255 [M, K] = max(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,  2)    -2.
264 (  1,  3)    -4.
265 (  1,  4)     3.
266 (  2,  1)    -5.
267 (  2,  4)     3.
268 (  3,  2)    -2.
269 (  3,  3)    -4.
270 (  4,  2)     4.
271 (  4,  4)     2.
272 (  5,  2)    -5.
273 (  5,  3)     5.
274 (  5,  4)    -4.
275  ans  =
276    0.  -2.  -4.   3.
277   -5.   0.   0.   3.
278    0.  -2.  -4.   0.
279    0.   4.   0.   2.
280    0.  -5.   5.  -4.
281
282 --> [Row, K] = max(s, "r")
283  Row  =
284 (  1,  4) sparse matrix
285 (  1,  2)     4.
286 (  1,  3)     5.
287 (  1,  4)     3.
288  K  =
289    1.   4.   5.   1.
290
291 --> [Col, K] = max(s, "c")
292  Col  =
293 (  5,  1) sparse matrix
294 (  1,  1)     3.
295 (  2,  1)     3.
296 (  4,  1)     4.
297 (  5,  1)     5.
298  K  =
299    4.
300    4.
301    1.
302    2.
303    3.
304
305 --> [M, K] = max(s, -1);   [full(s)  ones(s(:,1))*%nan  full(M)]
306  ans  =
307    0.  -2.  -4.   3.   Nan   0.  -1.  -1.   3.
308   -5.   0.   0.   3.   Nan  -1.   0.   0.   3.
309    0.  -2.  -4.   0.   Nan   0.  -1.  -1.   0.
310    0.   4.   0.   2.   Nan   0.   4.   0.   2.
311    0.  -5.   5.  -4.   Nan   0.  -1.   5.  -1.
312
313 --> issparse(M)
314  ans  =
315    1.
316
317 --> K
318  K  =
319    1.   2.   2.   1.
320    2.   1.   1.   1.
321    1.   2.   2.   1.
322    1.   1.   1.   1.
323    1.   2.   1.   2.
324 ]]></screen>
325     </refsection>
326     <refsection role="see also">
327         <title>Смотрите также</title>
328         <simplelist type="inline">
329             <member>
330                 <link linkend="min">min</link>
331             </member>
332             <member>
333                 <link linkend="strange">strange</link>
334             </member>
335             <member>
336                 <link linkend="mean">mean</link>
337             </member>
338             <member>
339                 <link linkend="gsort">gsort</link>
340             </member>
341             <member>
342                 <link linkend="find">find</link>
343             </member>
344             <member>
345                 <link linkend="full">full</link>
346             </member>
347         </simplelist>
348     </refsection>
349     <refsection role="history">
350         <title>История</title>
351         <revhistory>
352             <revision>
353                 <revnumber>6.0.2</revnumber>
354                 <revdescription>
355                     Теперь max() действительно работает с разрежёнными матрицами
356                 </revdescription>
357             </revision>
358         </revhistory>
359     </refsection>
360 </refentry>