translation updated for sparse.
[scilab.git] / scilab / modules / sparse / help / ja_JP / matrixmanip / sprand.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!--
4  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
5  * Copyright (C) 2008 - INRIA
6  * Copyright (C) 2010 - DIGITEO - Michael Baudin
7  * 
8  * This file must be used under the terms of the CeCILL.
9  * This source file is licensed as described in the file COPYING, which
10  * you should have received as part of this distribution.  The terms
11  * are also available at    
12  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
13  *
14  -->
15
16 <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="sprand" xml:lang="ja">
17     
18     <refnamediv>
19         
20         <refname>sprand</refname>
21         
22         <refpurpose>ランダム疎行列</refpurpose>
23         
24     </refnamediv>
25     
26     <refsynopsisdiv>
27         
28         <title>呼び出し手順</title>
29         
30         <synopsis>sp=sprand(nrows,ncols,density [,typ])</synopsis>
31         
32     </refsynopsisdiv>
33     
34     <refsection>
35         
36         <title>引数</title>
37         
38         <variablelist>
39             
40             <varlistentry>
41                 
42                 <term>nrows</term>
43                 
44                 <listitem>
45                     
46                     <para>整数 (行数)</para>
47                     
48                 </listitem>
49                 
50             </varlistentry>
51             
52             <varlistentry>
53                 
54                 <term>ncols</term>
55                 
56                 <listitem>
57                     
58                     <para>整数 (列数)</para>
59                     
60                 </listitem>
61                 
62             </varlistentry>
63             
64             <varlistentry>
65                 
66                 <term>density</term>
67                 
68                 <listitem>
69                     
70                     <para>占有率 (密度)</para>
71                     
72                 </listitem>
73                 
74             </varlistentry>
75             
76             <varlistentry>
77                 
78                 <term>typ</term>
79                 
80                 <listitem>
81                     
82                     <para>
83                         
84                         文字列, <literal>"uniform"</literal> (デフォルト) または
85                         
86                         <literal>"normal"</literal>
87                         
88                     </para>
89                     
90                 </listitem>
91                 
92             </varlistentry>
93             
94             <varlistentry>
95                 
96                 <term>sp</term>
97                 
98                 <listitem>
99                     
100                     <para>疎行列</para>
101                     
102                 </listitem>
103                 
104             </varlistentry>
105             
106         </variablelist>
107         
108     </refsection>
109     
110     <refsection>
111         
112         <title>説明</title>
113         
114         <para>
115             
116             <literal>sp=sprand(nrows,ncols,density)</literal> は,
117             
118             <literal>nrows</literal> 行<literal>ncols</literal>列,
119             
120             近似的に<literal>density*nrows*ncols</literal>個の非ゼロ
121             
122             エントリを有する疎行列<literal>sp</literal>を返します.
123             
124         </para>
125         
126         <para>
127             
128             <literal>density</literal>パラメータは
129             
130             <literal>[0,1]</literal> の範囲で指定されます.
131             
132             そうでない場合,
133             
134             自動的にこの範囲に変換されます.
135             
136             このため, 0 より小さいか 1より大きい density を使用しても,
137             
138             エラーも警告も発生しません:
139             
140             式<literal>density=max(min(density,1),0)</literal>が使用されます.
141             
142         </para>
143         
144         <para>
145             
146             <literal>typ="uniform"</literal>の場合, 一様分布の
147             
148             値 [0,1]が生成されます.
149             
150             <literal>typ="normal"</literal> の場合,正規分布の
151             
152             値が生成されます (平均=0 および標準偏差=1).
153             
154         </para>
155         
156         <para>
157             
158             出力行列のエントリは指定された分布関数<literal>typ</literal>に
159             
160             基づき計算されます.
161             
162             非ゼロ要素のインデックスはランダムに計算され,
163             
164             非ゼロの平均的な数は<literal>density</literal>となります.
165             
166             実際のインデックスの値は,指数分布関数により計算されます.
167             
168             ただし,分布関数のパラメータは同時に計算されます.
169             
170         </para>
171         
172     </refsection>
173     
174     <refsection>
175         
176         <title>例</title>
177         
178         <para>
179             
180             以下の例では,近似的に密度0.001の
181             
182             100x1000疎行列を生成します.
183             
184             すなわち,およそ 100*1000*0.001=100個の非ゼロエントリとなります.
185             
186         </para>
187         
188         <programlisting role="example"><![CDATA[  
189 // 行列のエントリは一様分布となります.
190 W=sprand(100,1000,0.001);
191 // 行列のエントリは正規分布となります.
192 W=sprand(100,1000,0.001,"normal");
193  ]]></programlisting>
194         
195         <para>
196             
197             以下のスクリプトは,
198             
199             行列のエントリが指定した分布を有することを確認します.
200             
201             非ゼロエントリを取得するためにspget関数を用います.
202             
203             次に,エントリの最小値,最大値,平均を計算し,
204             
205             limit値と比較します.
206             
207         </para>
208         
209         <programlisting role="example"><![CDATA[  
210 typ = "normal"; 
211 // typ = "uniform";
212 nrows = 1000;
213 ncols = 2000;
214 density = 1/100;
215 s=sprand(nrows,ncols,density,typ);
216 nnzs=nnz(s);
217 [ij,v]=spget(s);
218 [%inf -%inf 0 %inf 1] // Limit values for "normal"
219 [nnzs min(v) mean(v) max(v) variance(v)]
220 [%inf 0 0.5 1 1/12] // Limit values for "uniform"
221  ]]></programlisting>
222         
223         <para>
224             
225             以下のスクリプトでは,ランダムに選択したエントリのインデックスを調べ,
226             
227             正しい分布を有することを確認します.
228             
229             一様分布の<literal>kmax</literal>ランダム疎行列を生成します.
230             
231             ここで,各行列について,生成する非ゼロのエントリのインデックスについて
232             
233             考えます.
234             
235             すなわち, 
236             
237             <literal>i=1,2,...,nrows</literal>
238             
239             および <literal>j=1,2,...,ncols</literal>rとなる
240             
241             各<literal>i</literal> および <literal>j</literal>について
242             
243             イベント <literal>Aij = {エントリ (i,j) が非ゼロ}</literal>
244             
245             が発生するかどうかを調べます.
246             
247             行列<literal>C(i,j)</literal>はイベント<literal>Aij</literal>
248             
249             が発生する回数を保存します.
250             
251             行列 <literal>R(k)</literal> は,<literal>k=1,2,...,kmax</literal>
252             
253             について試行回数<literal>k</literal>の実際の密度を保存します.
254             
255         </para>
256         
257         <programlisting role="example"><![CDATA[
258     kmax = 1000;
259     ncols=10;
260     nrows=15;
261     density=0.01;
262     typ="uniform";
263     C=zeros(nrows,ncols);
264     R=[];
265     for k=1:kmax
266       M=sprand(nrows,ncols,density,typ);
267       NZ=find(M<>0);
268       NZratio = size(NZ,"*")/(nrows*ncols);
269       R=[R NZratio];
270       C(NZ)=C(NZ)+1;
271     end
272  ]]></programlisting>
273         
274         <para>
275             
276             このアルゴリズムが実行される場合(時々必要となる可能性があります),
277             
278             アルゴリズムが正しく実行されていることを確認するために
279             
280             要素の統計値を計算することができます.
281             
282         </para>
283         
284         <programlisting role="no-scilab-exec"><![CDATA[
285   // A_ijの期待値は
286   density * kmax
287   // この値を実際のイベントと比較 :
288   C
289   // 平均値は期待値に近くなります.
290   [density*kmax mean(C)]
291   // 密度は密度の期待値に近くなります
292   [density mean(R)]
293   ]]></programlisting>
294         
295     </refsection>
296     
297     <refsection role="see also">
298         
299         <title>参照</title>
300         
301         <simplelist type="inline">
302             
303             <member>
304                 
305                 <link linkend="sparse">sparse</link>
306                 
307             </member>
308             
309             <member>
310                 
311                 <link linkend="full">full</link>
312                 
313             </member>
314             
315             <member>
316                 
317                 <link linkend="rand">rand</link>
318                 
319             </member>
320             
321             <member>
322                 
323                 <link linkend="speye">speye</link>
324                 
325             </member>
326             
327         </simplelist>
328         
329     </refsection>
330     
331 </refentry>
332