help pages: toeplitz overhauled. diag, sparse, speye improved
[scilab.git] / scilab / modules / elementary_functions / help / fr_FR / 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"
3           xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
4           xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
5           xmlns:scilab="http://www.scilab.org"  xml:id="ndgrid" xml:lang="fr">
6     <refnamediv>
7         <refname>ndgrid</refname>
8         <refpurpose>construit des matrices ou hypermatrices en répliquant des vecteurs
9         </refpurpose>
10     </refnamediv>
11     <refsynopsisdiv>
12         <title>Séquences d'appel</title>
13         <synopsis>
14             [X, Y] = ndgrid(x)
15             [X, Y] = ndgrid(x,y)
16             [X, Y, Z] = ndgrid(x,y,z)
17             [X, Y, Z, T] = ndgrid(x,y,z,t)
18             [X1, X2, ..., Xm] = ndgrid(x1,x2,...,xm)
19         </synopsis>
20     </refsynopsisdiv>
21     <refsection role="arguments">
22         <title>Paramètres</title>
23         <variablelist>
24             <varlistentry>
25                 <term>x, y, z, ...</term>
26                 <listitem>
27                     <para>vecteurs de types simples quelconques possiblement
28                         distincts (booléens,
29                         entiers encodés, décimaux, complexes, polynômes, rationnels,
30                         textes). Par défaut, <literal>y=x</literal>.
31                     </para>
32                 </listitem>
33             </varlistentry>
34             <varlistentry>
35                 <term>X, Y, Z, ...</term>
36                 <listitem>
37                     <para>Matrices (si seulement 2 vecteurs d'entrée),
38                         ou hypermatrices, toutes de tailles identiques :
39                        size(x,"*") lignes, size(y,"*") colonnes,
40                         size(z,"*") feuilles, etc.
41                   </para>
42                   <para>Par ailleurs,
43                         <varname>X</varname> a le type de <varname>x</varname>;
44                         <varname>Y</varname> a le type de <varname>y</varname>;
45                         etc.
46                     </para>
47                 </listitem>
48             </varlistentry>
49         </variablelist>
50     </refsection>
51     <refsection role="description">
52         <title>Description</title>
53         <para>
54             La première application de <function>ndgrid</function> consiste à
55             construire une grille multidimensionnelle de noeuds échantillonnant
56             l'espace 2D ou 3D ou N-D, à partir de 2, 3 ou N vecteurs
57             <literal>x</literal>, <literal> y</literal>, etc.. indiquant
58             l'échantillonage de chaque direction de l'espace.
59         </para>
60         <para>Pour ce faire,
61             <itemizedlist>
62                 <listitem>la matrice ou l'hypermatrice <literal>X</literal>
63                 est construite en répliquant le vecteur  <literal>x</literal>
64                 dans toutes ses colonnes ;
65             </listitem>
66             <listitem>
67                 la matrice ou l'hypermatrice <literal>Y</literal>
68                 est construite en répliquant le vecteur  <literal>y</literal>
69                 dans toutes ses lignes ;
70             </listitem>
71             <listitem>
72                 la matrice ou l'hypermatrice <literal>Z</literal>
73                 est construite en répliquant le vecteur  <literal>z</literal>
74                 en épaisseur pour tous les points (x,y) ;
75                 etc.
76             </listitem>
77         </itemizedlist>
78     </para>
79     <screen><![CDATA[--> [X, Y] = ndgrid([1 3 4], [0 2 4 6])
80  X  =
81    1.   1.   1.   1.
82    3.   3.   3.   3.
83    4.   4.   4.   4.
84
85  Y  =
86    0.   2.   4.   6.
87    0.   2.   4.   6.
88    0.   2.   4.   6.
89 ]]>
90     </screen>
91     <para>
92         Les coordonnées du noeud node(i,j) dans l'espace 2D seront alors
93         simplement <literal>[x(i), y(j)]</literal> maintenant données par
94         <literal>[X(i,j), Y(i,j)]</literal>. De même, les coordonnées du noeud
95         <literal>node(i,j,k)</literal> dans une grille 3D seront
96         <literal>[x(i), y(j), z(k)]</literal> données par
97         <literal>[X(i,j,k), Y(i,j,k), Z(i,j,k)]</literal>.
98     </para>
99     <para>Ce schéma de construction par réplication peut être utilisé
100         pour construire une grille à un nombre N quelconque de dimensions.
101         Par ailleurs, il est indépendant de la nature des vecteurs de base répliqués
102         et peut donc être utilisé pour tous les types de données uniformes.
103         A titre d'exemple, considérons un ensemble d'objets ayant tous 2 attributs :
104         <orderedlist>
105             <listitem>
106                 Le premier est un nombre <literal>n</literal>,
107                 avec 2 valeurs possibles, par exemple: <literal>n = [ 3 7 ]</literal>
108             </listitem>
109             <listitem>Le second est une lettre, avec 6 choix possibles,
110                 par exemple: <literal>c = ["a" "e" "i" "o" "u" "y"]</literal>
111             </listitem>
112         </orderedlist>
113         Nous souhaitons maintenant générer l'ensemble complet des
114         objets {n,c} possibles. Il s'agit juste d'une grille 2D
115         d'<literal>objets</literal> :
116     </para>
117     <screen><![CDATA[--> [N, C] = ndgrid([3 7],["a" "e" "i" "o" "u" "y"])
118  C  =
119 !a  e  i  o  u  y  !
120 !a  e  i  o  u  y  !
121
122  N  =
123    3.   3.   3.   3.   3.   3.
124    7.   7.   7.   7.   7.   7.
125 ]]></screen>
126     <para>De là, l'objet(i,j) aura les attributs
127         <literal>{n(i) c(j)}</literal> que l'on pourra maintenant désigner par
128         <literal>{N(i,j) C(i,j)}</literal>.
129         Ce type de grille pourra être utilisée pour initialiser un tableau
130         2D de structures ayant 2 champs <literal>n</literal> et <literal>c</literal>.
131     </para>
132     <para>Les exemples suivants montrent comment utiliser les matrices ou
133         hypermatrices <varname>X, Y, Z</varname> produites, pour des applications
134         usuelles.
135     </para>
136 </refsection>
137 <refsection role="examples">
138     <title>Exemples</title>
139     <para>
140         <emphasis role="bold">Exemple #1:</emphasis>
141     </para>
142     <programlisting role="example"><![CDATA[
143 // Créons une grille de points {X,Y}
144 x = linspace(-10,2,40);
145 y = linspace(-5,5,40);
146 [X,Y] = ndgrid(x,y); // x et y sont répliqués pour créer la grille
147
148 // Calculons des ordonnées Z(X,Y) et traçons Z(X,Y) :
149 Z = X - 3*X.*sin(X).*cos(Y-4) ;
150
151 clf()
152 plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
153  ]]></programlisting>
154     <scilab:image>
155         x = linspace(-10,2,40);
156         y = linspace(-5,5,40);
157         [X,Y] = ndgrid(x,y);
158         Z = X - 3*X.*sin(X).*cos(Y-4) ;
159         clf()
160         plot3d(x,y,Z, flag=[color("green") 2 4], alpha=7, theta=60); show_window()
161     </scilab:image>
162     <para>
163         <emphasis role="bold">Exemple #2:</emphasis>
164     </para>
165     <programlisting role="example"><![CDATA[
166 // Créons une grille en 3 dimensions
167 nx = 10; ny = 6; nz = 4;
168 x = linspace(0,2,nx);
169 y = linspace(0,1,ny);
170 z = linspace(0,0.5,nz);
171 [X,Y,Z] = ndgrid(x,y,z);
172
173 // Nous choisissons ici une représentation cartésienne, mais l'on pourrait
174 // aussi travailler en coordonnées cylindriques, sphériques, ou autres.
175 // Transformons les coordonnées pour plot3d() :
176 XF=[]; YF=[]; ZF=[];
177 for k=1:nz
178    [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
179    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
180 end
181 for j=1:ny
182    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
183                      matrix(Y(:,j,:),[nx,nz]),...
184                      matrix(Z(:,j,:),[nx,nz]));
185    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
186 end
187
188 // Affichage :
189 clf()
190 plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
191 xtitle("A 3d grid !"); show_window()
192  ]]></programlisting>
193     <scilab:image>
194         nx = 10; ny = 6; nz = 4;
195         x = linspace(0,2,nx);
196         y = linspace(0,1,ny);
197         z = linspace(0,0.5,nz);
198         [X,Y,Z] = ndgrid(x,y,z);
199         XF=[]; YF=[]; ZF=[];
200         for k=1:nz
201         [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
202         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
203         end
204         for j=1:ny
205         [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
206         matrix(Y(:,j,:),[nx,nz]),...
207         matrix(Z(:,j,:),[nx,nz]));
208         XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
209         end
210         plot3d(XF,YF,ZF, flag=[0 6 3], 66, 61, leg="X@Y@Z")
211         xtitle("A 3d grid !");
212     </scilab:image>
213     <para>
214         <emphasis role="bold">Exemple #3: création d'une table de digrammes</emphasis>
215     </para>
216     <programlisting role="example"><![CDATA[
217 [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
218 c1+c2
219  ]]></programlisting>
220     <screen><![CDATA[--> [c1, c2] = ndgrid(["a" "b" "c"], ["a" "b" "c" "d" "e" "f" "g" "h"])
221  c2  =
222 !a  b  c  d  e  f  g  h  !
223 !a  b  c  d  e  f  g  h  !
224 !a  b  c  d  e  f  g  h  !
225
226  c1  =
227 !a  a  a  a  a  a  a  a  !
228 !b  b  b  b  b  b  b  b  !
229 !c  c  c  c  c  c  c  c  !
230
231 --> c1+c2
232  ans  =
233 !aa  ab  ac  ad  ae  af  ag  ah  !
234 !ba  bb  bc  bd  be  bf  bg  bh  !
235 !ca  cb  cc  cd  ce  cf  cg  ch  !
236 ]]></screen>
237 </refsection>
238 <refsection role="see also">
239     <title>Voir aussi</title>
240     <simplelist type="inline">
241         <member>
242             <link linkend="meshgrid">meshgrid</link>
243         </member>
244         <member>
245             <link linkend="kron">kron</link>
246         </member>
247         <member>
248             <link linkend="feval">feval</link>
249         </member>
250         <member>
251             <link linkend="nf3d">nf3d</link>
252         </member>
253     </simplelist>
254 </refsection>
255 <refsection role="history">
256     <title>Historique</title>
257     <revhistory>
258         <revision>
259             <revnumber>6.0.0</revnumber>
260             <revdescription>
261                 Extension à tous les types de données uniformes ([], booléens, entiers encodés,
262                 polynomes, fractions rationelles, texte). Révision de la page d'aide.
263             </revdescription>
264         </revision>
265         <revision>
266             <revnumber>6.0.1</revnumber>
267             <revdescription>
268                 <literal>ndgrid(x)</literal> est désormais accepté (<literal>y=x</literal>).
269             </revdescription>
270         </revision>
271     </revhistory>
272 </refsection>
273 </refentry>