Add an image for the meshgrid
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / elementarymatrices / ndgrid.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="ndgrid" xml:lang="ru">
3     <refnamediv>
4         <refname>ndgrid</refname>
5         <refpurpose>
6             массивы для многомерного вычисления функций по координатной сетке
7         </refpurpose>
8     </refnamediv>
9     <refsynopsisdiv>
10         <title>Последовательность вызова</title>
11         <synopsis>
12             X, Y] = ndgrid(x,y)
13             [X, Y, Z] = ndgrid(x,y,z)
14             [X, Y, Z, T] = ndgrid(x,y,z,t)
15             [X1, X2, ..., Xm] = ndgrid(x1,x2,...,xm)
16         </synopsis>
17     </refsynopsisdiv>
18     <refsection>
19         <title>Аргументы</title>
20         <variablelist>
21             <varlistentry>
22                 <term>x, y, z, ...</term>
23                 <listitem>
24                     <para>векторы</para>
25                 </listitem>
26             </varlistentry>
27             <varlistentry>
28                 <term>X, Y, Z, ...</term>
29                 <listitem>
30                     <para>
31                         в случае двух входных аргументов - матрицы, в противном случае - гиперматрицы
32                     </para>
33                 </listitem>
34             </varlistentry>
35         </variablelist>
36     </refsection>
37     <refsection>
38         <title>Описание</title>
39         <para>
40             Эта служебная программа полезна для создания массивов для вычисления функций по 2-х, 3-х, ... , n-мерной координатной сетке. Например, в двухмерная координатная сетка определяется двумя векторами, <literal>x</literal> и <literal>y</literal> длиной <literal>nx</literal> и <literal>ny</literal> и вы хотите вычислить функцию (скажем, <emphasis>f</emphasis>) во всех точках координатной сетки, то есть во всех точках с координатами <emphasis>(x(i),y(j))</emphasis>, где <emphasis>i=1,..,nx</emphasis> и <emphasis>j=1,..,ny</emphasis>. В этом случае данная функция может вычислить две матрицы <literal>X,Y</literal> размером <emphasis>nx x ny</emphasis> такие, что:
41         </para>
42         <screen><![CDATA[ 
43 X(i,j) = x(i)  для всех i в [1,nx]
44 Y(i,j) = y(j)         и j в [1,ny]
45  ]]></screen>
46         <para>
47             и вычисление может быть сделано с <literal>Z=f(X,Y)</literal> (при условии, что вы написали код функции <literal>f</literal> для работы с векторными аргументами, что делается (вообще) с помощью поэлементных операторов <literal>.*</literal>, <literal>./</literal> и <literal>.^</literal> вместо <literal>*</literal>,    <literal>/</literal> и <literal>^</literal>).
48         </para>
49         <para>
50             В трёхмерном случае, рассматриваются три вектора <literal>x, y, z</literal> длиной <literal>nx</literal>, <literal>ny</literal> и <literal>nz</literal>.  <literal>X, Y, Z</literal> являются тремя гиперматрицами размерами <emphasis>nx x ny x nz</emphasis> такими, что:
51         </para>
52         <screen><![CDATA[ 
53 X(i,j,k) = x(i)  
54 Y(i,j,k) = y(j)   для всех (i,j,k) в [1,nx] x [1,ny] x [1,nz]
55 Z(i,j,k) = z(k)
56  ]]></screen>
57         <para>
58             В общем случае <literal>m</literal> входных аргументов <literal>x1, x2, ... , xm</literal>, тогда <literal>m</literal> выходных аргументов <literal>X1, X2, ... ,   Xm</literal> являются гиперматрицами размерами <emphasis>nx1 x nx2 x ... x    nxm</emphasis> и:
59         </para>
60         <screen><![CDATA[ 
61 Xj(i1,i2,...,ij,...,im) = xj(ij)   
62 для всех (i1,i2,...,im) в [1,nx1] x [1,nx2] x ... x [1,nxm]  
63  ]]></screen>
64     </refsection>
65     <refsection>
66         <title>Примеры</title>
67         <programlisting role="example"><![CDATA[  
68 // создание простой двухмерной координатной сетки
69 nx = 40; ny = 40;
70 x = linspace(-1,1,nx);
71 y = linspace(-1,1,ny);
72 [X,Y] = ndgrid(x,y);
73  
74 // вычисление функции в координатной сетке и построение её на графике
75 deff("z=f(x,y)","z=x.^2 + y.^3")
76 Z = f(X,Y);
77 clf()
78 plot3d(x,y,Z, flag=[2 6 4]); show_window()
79  ]]></programlisting>
80         <programlisting role="example"><![CDATA[  
81 // создание простой трёхмерной координатной сетки
82 nx = 10; ny = 6; nz = 4;
83 x = linspace(0,2,nx);
84 y = linspace(0,1,ny);
85 z = linspace(0,0.5,nz);
86 [X,Y,Z] = ndgrid(x,y,z);
87  
88 // попытаемся отобразить эту трёхмерную координатную сетку ...
89 XF=[]; YF=[]; ZF=[];
90  
91 for k=1:nz
92    [xf,yf,zf] = nf3d(X(:,:,k), Y(:,:,k), Z(:,:,k));
93    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
94 end
95  
96 for j=1:ny
97    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),..
98                      matrix(Y(:,j,:),[nx,nz]),..
99                      matrix(Z(:,j,:),[nx,nz]));
100    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
101 end
102  
103 clf()
104 plot3d(XF,YF,ZF, flag=[0 6 3], leg="X@Y@Z")
105 xtitle("Трёхмерная сетка!"); show_window()
106  ]]></programlisting>
107     </refsection>
108     <refsection role="see also">
109         <title>Смотрите также</title>
110         <simplelist type="inline">
111             <member>
112                 <link linkend="kron">kron</link>
113             </member>
114         </simplelist>
115     </refsection>
116 </refentry>