translation updated for sparse.
[scilab.git] / scilab / modules / sparse / help / ja_JP / sparseconvert / sp2adj.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  * 
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at    
11  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
12  *
13  -->
14
15 <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="sp2adj" xml:lang="ja">
16     
17     <refnamediv>
18         
19         <refname>sp2adj</refname>
20         
21         <refpurpose>疎行列を隣接形式に変換する</refpurpose>
22         
23     </refnamediv>
24     
25     <refsynopsisdiv>
26         
27         <title>呼び出し手順</title>
28         
29         <synopsis>
30             
31             [xadj,iadj,v]=sp2adj(A)
32             
33         </synopsis>
34         
35     </refsynopsisdiv>
36     
37     <refsection>
38         
39         <title>引数</title>
40         
41         <variablelist>
42             
43             <varlistentry>
44                 
45                 <term>A</term>
46                 
47                 <listitem>
48                     
49                     <para>
50                         
51                         m行n列の実数または複素数の疎行列 (nz 個の非ゼロエントリ)
52                         
53                     </para>
54                     
55                 </listitem>
56                 
57             </varlistentry>
58             
59             <varlistentry>
60                 
61                 <term>xadj</term>
62                 
63                 <listitem>
64                     
65                     <para>
66                         
67                         (n+1)行1列の浮動小数点整数の行列で,
68                         
69                         各列のiadjとvの先頭の添字を指します.
70                         
71                         <literal>j=1:n</literal>の場合, 
72                         
73                         浮動小数点整数
74                         
75                         <literal>xadj(j+1)-xadj(j)</literal> は
76                         
77                         j列の非ゼロエントリの数になります.
78                         
79                     </para>
80                     
81                 </listitem>
82                 
83             </varlistentry>
84             
85             <varlistentry>
86                 
87                 <term>iadj</term>
88                 
89                 <listitem>
90                     
91                     <para>
92                         
93                         nz行1列の浮動小数点整数の行列, 非ゼロエントリの行添字.
94                         
95                         <literal>j=1:n</literal>および, 
96                         
97                         <literal>k = xadj(j):xadj(j+1)-1</literal>に関して, 
98                         
99                         浮動小数点整数 <literal>i = iadj(k)</literal> は
100                         
101                         非ゼロエントリ #k の行添字です.
102                         
103                     </para>
104                     
105                 </listitem>
106                 
107             </varlistentry>
108             
109             <varlistentry>
110                 
111                 <term>v</term>
112                 
113                 <listitem>
114                     
115                     <para>
116                         
117                         nz行1列の浮動小数点整数の行列, Aの非ゼロエントリ.
118                         
119                         <literal>j=1:n</literal>および, 
120                         
121                         <literal>k = xadj(j):xadj(j+1)-1</literal>に関して, 
122                         
123                         浮動小数点整数<literal>Aij = v(k)</literal>は
124                         
125                         非ゼロエントリ #k の値です.
126                         
127                     </para>
128                     
129                 </listitem>
130                 
131             </varlistentry>
132             
133         </variablelist>
134         
135     </refsection>
136     
137     <refsection>
138         
139         <title>説明</title>
140         
141         <para>
142             
143             sp2adjは,疎行列を隣接形式に変換します.
144             
145             隣接形式の値は列毎に保存されています.
146             
147             これは,この形式がしばしば
148             
149             "Compressed sparse column" または CSCと呼ばれる理由です.
150             
151         </para>
152         
153     </refsection>
154     
155     <refsection>
156         
157         <title>例</title>
158         
159         <para>
160             
161             以下の例では,1から10のエントリを有する通常の行列を作成します.
162             
163             次に,これを疎行列に変換し,ゼロを除きます.
164             
165             最後に,この行列の隣接形式を計算します.
166             
167             行列bはAの非ゼロ要素のみを有します.
168             
169         </para>
170         
171         <programlisting role="example"><![CDATA[
172 A = [
173 0 0 4 0 9
174 0 0 5 0 0
175 1 3 0 7 0
176 0 0 6 0 10
177 2 0 0 8 0
178 ];
179 B=sparse(A);
180 [xadj,iadj,v]=sp2adj(B)
181 expected_xadj = [1 3 4 7 9 11]';
182 expected_adjncy = [3 5 3 1 2 4 3 5 1 4]';
183 expected_anz = [1 2 3 4 5 6 7 8 9 10]';
184 and(expected_xadj == xadj) // Should be %t
185 and(expected_adjncy == iadj) // Should be %t
186 and(expected_anz == v) // Should be %t
187 // j is the column index
188 for j = 1 : size(xadj,"*")-1
189   irows = iadj(xadj(j):xadj(j+1)-1);
190   vcolj = v(xadj(j):xadj(j+1)-1);
191   mprintf("Column #%d:\n",j)
192   mprintf("  Rows  = %s:\n",sci2exp(irows))
193   mprintf("  Values= %s:\n",sci2exp(vcolj))
194 end
195  ]]></programlisting>
196         
197         <para>
198             
199             前のスクリプトは以下の出力を生成します.
200             
201         </para>
202         
203         <programlisting role="no-scilab-exec"><![CDATA[
204 Column #1:
205   Rows  = [3;5]:
206   Values= [1;2]:
207 Column #2:
208   Rows  = 3:
209   Values= 3:
210 Column #3:
211   Rows  = [1;2;4]:
212   Values= [4;5;6]:
213 Column #4:
214   Rows  = [3;5]:
215   Values= [7;8]:
216 Column #5:
217   Rows  = [1;4]:
218   Values= [9;10]:
219  ]]></programlisting>
220         
221         <para>
222             
223             列 #1について考えてみましょう.
224             
225             等式 xadj(2)-xadj(1)=2 は列 #1に非ゼロ要素が2個あることを示します.
226             
227             行添字は iadjに保存され, 列 #1 の非ゼロエントリは
228             
229             行 #3 および #5であることを示します.
230             
231             行列 v は実際のエントリが 1および2であることを示します.
232             
233         </para>
234         
235         <para>
236             
237             以下の例では,疎行列の非ゼロエントリを隣接構造でループ処理を
238             
239             することにより,調べます.
240             
241         </para>
242         
243         <programlisting role="example"><![CDATA[
244 A = [
245 0 0 0 0 0 6 0 0 0 0
246 3 0 5 0 0 0 0 5 0 0
247 0 0 0 3 0 0 0 0 0 0
248 0 0 0 0 0 0 0 0 0 0
249 0 7 0 0 0 0 0 0 0 0
250 0 0 0 0 0 0 0 0 0 3
251 0 0 0 0 0 0 0 0 2 0
252 ];
253 B=sparse(A);
254 [xadj,iadj,v]=sp2adj(B)
255 expected_xadj = [1 2 3 4 5 5 6 6 7 8 9]';
256 expected_adjncy = [2 5 2 3 1 2 7 6]';
257 expected_anz = [3 7 5 3 6 5 2 3]';
258 and(expected_xadj == xadj) // Should be %t
259 and(expected_adjncy == iadj) // Should be %t
260 and(expected_anz == v) // Should be %t
261  ]]></programlisting>
262         
263         <para>
264             
265             以下の例では,sp2adjおよびadj2sp関数が逆関数であることを
266             
267             確認します.
268             
269         </para>
270         
271         <programlisting role="example"><![CDATA[
272 // Templates for the Solution of Algebraic Eigenvalue Problems: a Practical Guide
273 // Edited by Zhaojun Bai, James Demmel, Jack Dongarra, Axel Ruhe, and Henk van der Vorst
274 // "Sparse Matrix Storage Formats", J. Dongarra
275 // http://web.eecs.utk.edu/~dongarra/etemplates/book.html
276
277 A = [
278 10 0 0 0 -2 0
279 3 9 0 0 0 3
280 0 7 8 7 0 0
281 3 0 8 7 5 0
282 0 8 0 9 9 13
283 0 4 0 0 2 -1
284 ];
285 A = sparse(A)
286
287 // To get the Compressed Sparse Column (CSC) :
288 [col_ptr,row_ind,val]=sp2adj(A)
289 // To convert back to sparse:
290 AAsp=adj2sp(col_ptr,row_ind,val)
291 // Check the conversion
292 AAsp - A
293
294 // To get the Compressed Sparse Row (CSR) :
295 [row_ptr,col_ind,val]=sp2adj(A')
296 // To convert back to sparse:
297 AAsp=adj2sp(row_ptr,col_ind,val)'
298 // Check the conversion
299 AAsp - A
300  ]]></programlisting>
301         
302     </refsection>
303     
304     <refsection role="see also">
305         
306         <title>参照</title>
307         
308         <simplelist type="inline">
309             
310             <member>
311                 
312                 <link linkend="adj2sp">adj2sp</link>
313                 
314             </member>
315             
316             <member>
317                 
318                 <link linkend="sparse">sparse</link>
319                 
320             </member>
321             
322             <member>
323                 
324                 <link linkend="spcompack">spcompack</link>
325                 
326             </member>
327             
328             <member>
329                 
330                 <link linkend="spget">spget</link>
331                 
332             </member>
333             
334         </simplelist>
335         
336     </refsection>
337     
338     <refsection>
339         
340         <title>参考文献</title>
341         
342         <para>
343             
344             "Implementation of Lipsol in Scilab", Hector E. Rubio Scola, INRIA, Decembre 1997, Rapport Technique No 0215
345             
346         </para>
347         
348         <para>
349             
350             "Solving Large Linear Optimization Problems with Scilab : Application to Multicommodity Problems", Hector E. Rubio Scola, Janvier 1999, Rapport Technique No 0227
351             
352         </para>
353         
354         <para>
355             
356             "Toolbox Scilab : Detection signal design for failure detection and isolation for linear dynamic systems User's Guide", Hector E. Rubio Scola, 2000, Rapport Technique No 0241
357             
358         </para>
359         
360         <para>
361             
362             "Computer Solution of Large Sparse Positive Definite Systems", A. George, Prentice-Hall, Inc. Englewood Cliffs, New Jersey, 1981.
363             
364         </para>
365         
366     </refsection>
367     
368 </refentry>
369