7a76447f623a3bf613c799f497bfbb9ed92b13c3
[scilab.git] / scilab / modules / elementary_functions / help / ja_JP / 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="ja">
3     <refnamediv>
4         <refname>ndgrid</refname>
5         <refpurpose>
6             多次元関数評価用グリッドの配列
7         </refpurpose>
8     </refnamediv>
9     <refsynopsisdiv>
10         <title>呼び出し手順</title>
11         <synopsis>[X, Y] = ndgrid(x,y)
12             [X, Y, Z] = ndgrid(x,y,z)
13             [X, Y, Z, T] = ndgrid(x,y,z,t)
14             [X1, X2, ..., Xm] = ndgrid(x1,x2,...,xm)
15         </synopsis>
16     </refsynopsisdiv>
17     <refsection>
18         <title>引数</title>
19         <variablelist>
20             <varlistentry>
21                 <term>x, y, z, ...</term>
22                 <listitem>
23                     <para>ベクトル</para>
24                 </listitem>
25             </varlistentry>
26             <varlistentry>
27                 <term>X, Y, Z, ...</term>
28                 <listitem>
29                     <para>
30                         入力引数が2個の場合は行列,
31                         それ以外の場合はハイパー行列
32                     </para>
33                 </listitem>
34             </varlistentry>
35         </variablelist>
36     </refsection>
37     <refsection>
38         <title>説明</title>
39         <para>
40             この関数はユーティリティルーチンで,
41             2, 3, ..., n次元のグリッド上で関数の評価を行う
42             ための配列を作成する際に便利です.
43             例えば, 2次元の場合, グリッドは
44             長さ nx および nyの
45             2つのベクトル
46             <literal>x</literal> および <literal> y</literal>
47             で定義され,
48             <emphasis>i=1,..,nx</emphasis> および <emphasis>j=1,..,ny</emphasis>
49             として,座標<emphasis>(x(i),y(j))</emphasis>となります.
50             そのグリッド上で (例えば<emphasis>f</emphasis>のような)関数の評価を
51             行うことになります.
52             この場合,この関数は,以下のような大きさ<emphasis>nx x ny</emphasis>の
53             2つの行列<literal>X,Y</literal>を計算します :
54         </para>
55         <programlisting role=""><![CDATA[ 
56 X(i,j) = x(i)   for all i in [1,nx]
57 Y(i,j) = y(j)       and j in [1,ny]
58  ]]></programlisting>
59         <para>
60             評価は,<literal>Z=f(X,Y)</literal>で行うことができます.
61             (ベクトル引数で<literal>f</literal>を評価するようコードが
62             作成されている場合,
63             <literal>*</literal>,
64             <literal>/</literal> および <literal>^</literal>の部分に
65             要素毎の演算 <literal>.*</literal>, <literal>./</literal> および
66             <literal>.^</literal>を使用することにより,(一般に)動作します..
67         </para>
68         <para>
69             3次元の場合, 長さ nx, ny および nzの3個のベクトル<literal>x,y,z</literal>
70             を指定し,
71             <literal>X,Y,Z</literal>は以下のように大きさ
72             <emphasis>nx x ny x nz</emphasis>のハイパー行列となります :
73         </para>
74         <programlisting role=""><![CDATA[ 
75 X(i,j,k) = x(i)  
76 Y(i,j,k) = y(j)   for all (i,j,k) in [1,nx]x[1,ny]x[1,nz]
77 Z(i,j,k) = z(k)
78  ]]></programlisting>
79         <para>
80             一般的な場合, m 個の入力引数<literal>x1, x2, ..,
81                 xm
82             </literal>
83             ,それから m個の出力引数
84             <literal>X1, X2, .., Xm</literal> は以下のような
85             大きさ <emphasis>nx1 x nx2 x ... x
86                 nxm
87             </emphasis>
88             のハイパー行列となります :
89         </para>
90         <programlisting role=""><![CDATA[ 
91 Xj(i1,i2,...,ij,...,im) = xj(ij)   
92 for all (i1,i2,...,im) in [1,nx1]x[1,nx2]x...x[1,nxm]  
93  ]]></programlisting>
94     </refsection>
95     <refsection>
96         <title>例</title>
97         <programlisting role="example"><![CDATA[  
98 // 簡単な2次元グリッドを作
99 nx = 40; ny = 40;
100 x = linspace(-1,1,nx);
101 y = linspace(-1,1,ny);
102 [X,Y] = ndgrid(x,y);
103
104 // グリッド上で関数を計算してプロット
105 //deff("z=f(x,y)","z=128*x.^2 .*(1-x).^2 .*y.^2 .*(1-y).^2");
106 deff("z=f(x,y)","z=x.^2 + y.^3")
107 Z = f(X,Y);
108 clf()
109 plot3d(x,y,Z, flag=[2 6 4]); xselect()
110  ]]></programlisting>
111         <scilab:image>
112             nx = 40; ny = 40;
113             x = linspace(-1,1,nx);
114             y = linspace(-1,1,ny);
115             [X,Y] = ndgrid(x,y);
116             deff("z=f(x,y)","z=x.^2 + y.^3")
117             Z = f(X,Y);
118             plot3d(x,y,Z, flag=[2 6 4]);
119         </scilab:image>
120         <programlisting role="example"><![CDATA[
121 // 簡単な3次元グリッドを作成
122 nx = 10; ny = 6; nz = 4;
123 x = linspace(0,2,nx);
124 y = linspace(0,1,ny);
125 z = linspace(0,0.5,nz);
126 [X,Y,Z] = ndgrid(x,y,z);
127
128 // 3次元グリッドを表示する ...
129 XF=[]; YF=[]; ZF=[];
130
131 for k=1:nz
132    [xf,yf,zf] = nf3d(X(:,:,k),Y(:,:,k),Z(:,:,k));
133    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
134 end
135
136 for j=1:ny
137    [xf,yf,zf] = nf3d(matrix(X(:,j,:),[nx,nz]),...
138                      matrix(Y(:,j,:),[nx,nz]),...
139                      matrix(Z(:,j,:),[nx,nz]));
140    XF = [XF xf]; YF = [YF yf]; ZF = [ZF zf];
141 end
142
143 clf()
144 plot3d(XF,YF,ZF, flag=[0 6 3], leg="X@Y@Z")
145 xtitle("A 3d grid !"); show_window()
146  ]]></programlisting>
147     </refsection>
148     <refsection role="see also">
149         <title>参照</title>
150         <simplelist type="inline">
151             <member>
152                 <link linkend="kron">kron</link>
153             </member>
154         </simplelist>
155     </refsection>
156 </refentry>