78be6a8a8228b31e24d3157fb600983bfc948ca9
[scilab.git] / scilab / modules / sparse / help / ja_JP / iterativesolvers / gmres.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) XXXX-2008 - INRIA
5  * 
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at    
10  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11  *
12  -->
13 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="gmres">
14     <refnamediv>
15         <refname>gmres</refname>
16         <refpurpose>Generalized Minimum RESidual 法</refpurpose>
17     </refnamediv>
18     <refsynopsisdiv>
19         <title>呼び出し手順</title>
20         <synopsis>[x,flag,err,iter,res] = gmres(A,b,[rstr,[tol,[maxi,[M,[x0]]]]])</synopsis>
21     </refsynopsisdiv>
22     <refsection>
23         <title>パラメータ</title>
24         <variablelist>
25             <varlistentry>
26                 <term>A</term>
27                 <listitem>
28                     <para>
29                         n行n列行列または<literal>A*x</literal>を返す関数.
30                         <literal>A</literal>が関数の場合,以下のようなヘッダを有すること:
31                     </para>
32                     <programlisting role=""><![CDATA[ 
33 function y = A ( x )
34 ]]></programlisting>
35                 </listitem>
36             </varlistentry>
37             <varlistentry>
38                 <term>b</term>
39                 <listitem>
40                     <para>右辺ベクトル</para>
41                 </listitem>
42             </varlistentry>
43             <varlistentry>
44                 <term>x0</term>
45                 <listitem>
46                     <para>初期推定値ベクトル(デフォルト: zeros(n,1))</para>
47                 </listitem>
48             </varlistentry>
49             <varlistentry>
50                 <term>M</term>
51                 <listitem>
52                     <para>
53                         プリコンディショナ: n行n列行列(デフォルト: eye(n,n))または
54                         <literal>M*x</literal>を返す関数.
55                         M が関数の場合,以下のようなヘッダを有すること:
56                     </para>
57                     <programlisting role=""><![CDATA[ 
58 function y = M ( x )
59  ]]></programlisting>
60                 </listitem>
61             </varlistentry>
62             <varlistentry>
63                 <term>rstr</term>
64                 <listitem>
65                     <para>リスタートまでの反復回数 (デフォルト: 10)</para>
66                 </listitem>
67             </varlistentry>
68             <varlistentry>
69                 <term>maxi</term>
70                 <listitem>
71                     <para>最大反復回数 (デフォルト: n)</para>
72                 </listitem>
73             </varlistentry>
74             <varlistentry>
75                 <term>tol</term>
76                 <listitem>
77                     <para>許容誤差 (デフォルト: 1e-6)</para>
78                 </listitem>
79             </varlistentry>
80             <varlistentry>
81                 <term>x</term>
82                 <listitem>
83                     <para>解のベクトル</para>
84                 </listitem>
85             </varlistentry>
86             <varlistentry>
87                 <term>err</term>
88                 <listitem>
89                     <para>最終残差ノルム</para>
90                 </listitem>
91             </varlistentry>
92             <varlistentry>
93                 <term>iter</term>
94                 <listitem>
95                     <para>実行した反復回数</para>
96                 </listitem>
97             </varlistentry>
98             <varlistentry>
99                 <term>flag</term>
100                 <listitem>
101                     <variablelist>
102                         <varlistentry>
103                             <term>0 =</term>
104                             <listitem>
105                                 <para>
106                                     <literal>gmres</literal>は,
107                                     <literal>maxi</literal>回の反復内に
108                                     指定した許容誤差に収束しました
109                                 </para>
110                             </listitem>
111                         </varlistentry>
112                         <varlistentry>
113                             <term>1 =</term>
114                             <listitem>
115                                 <para>
116                                     指定した <literal>maxi</literal>回では収束しませんでした
117                                 </para>
118                             </listitem>
119                         </varlistentry>
120                     </variablelist>
121                 </listitem>
122             </varlistentry>
123             <varlistentry>
124                 <term>res</term>
125                 <listitem>
126                     <para>残差ベクトル</para>
127                 </listitem>
128             </varlistentry>
129         </variablelist>
130     </refsection>
131     <refsection>
132         <title>説明</title>
133         <variablelist>
134             <varlistentry>
135                 <term>GMRES </term>
136                 <listitem>
137                     <para>
138                         線形システム<literal>Ax=b</literal>をリスタート付きの
139                         Generalized Minimal residual法により解きます.
140                     </para>
141                 </listitem>
142             </varlistentry>
143             <varlistentry>
144                 <term>詳細</term>
145                 <listitem>
146                     <para>このアルゴリズムの詳細は以下の文献に記述されています :</para>
147                     <para>"Templates for the Solution of Linear Systems: Building Blocks for
148                         Iterative Methods", Barrett, Berry, Chan, Demmel, Donato, Dongarra,
149                         Eijkhout, Pozo, Romine, and Van der Vorst, SIAM Publications, 1993 (ftp
150                         netlib2.cs.utk.edu; cd linalg; get templates.ps).
151                     </para>
152                     <para>"Iterative Methods for Sparse Linear Systems, Second Edition" Saad,
153                         SIAM Publications, 2003 (ftp ftp.cs.umn.edu; cd dept/users/saad/PS; get
154                         all_ps.zip).
155                     </para>
156                 </listitem>
157             </varlistentry>
158         </variablelist>
159     </refsection>
160     <refsection>
161         <title>例</title>
162         <programlisting role="example"><![CDATA[
163         // A および M が行列の場合
164 A=[ 94  0   0   0    0   28  0   0   32  0  
165      0   59  13  5    0   0   0   10  0   0  
166      0   13  72  34   2   0   0   0   0   65 
167      0   5   34  114  0   0   0   0   0   55 
168      0   0   2   0    70  0   28  32  12  0  
169      28  0   0   0    0   87  20  0   33  0  
170      0   0   0   0    28  20  71  39  0   0  
171      0   10  0   0    32  0   39  46  8   0  
172      32  0   0   0    12  33  0   8   82  11 
173      0   0   65  55   0   0   0   0   11  100];
174 b=ones(10,1);
175 [x,flag,err,iter,res] = gmres(A, b)
176 M = eye(10, 10);
177 [x,flag,err,iter,res] = gmres(A, b, 10, 1d-12, 20, M, zeros(10, 1))
178         // Aが行列, Mが関数の場合
179         A=[ 94  0   0   0    0   28  0   0   32  0  
180      0   59  13  5    0   0   0   10  0   0  
181      0   13  72  34   2   0   0   0   0   65 
182      0   5   34  114  0   0   0   0   0   55 
183      0   0   2   0    70  0   28  32  12  0  
184      28  0   0   0    0   87  20  0   33  0  
185      0   0   0   0    28  20  71  39  0   0  
186      0   10  0   0    32  0   39  46  8   0  
187      32  0   0   0    12  33  0   8   82  11 
188      0   0   65  55   0   0   0   0   11  100];
189 b=ones(10,1);
190 function y = Mtimesx(x)
191 M = eye(10,10);
192 y = M*x;
193 endfunction
194 [x,flag,err,iter,res] = gmres(A, b, 10, 1d-12, 20, Mtimesx, zeros(10, 1))
195         // A が関数, M が行列の場合
196         function y = Atimesx(x)
197         A=[ 94  0   0   0    0   28  0   0   32  0  
198      0   59  13  5    0   0   0   10  0   0  
199      0   13  72  34   2   0   0   0   0   65 
200      0   5   34  114  0   0   0   0   0   55 
201      0   0   2   0    70  0   28  32  12  0  
202      28  0   0   0    0   87  20  0   33  0  
203      0   0   0   0    28  20  71  39  0   0  
204      0   10  0   0    32  0   39  46  8   0  
205      32  0   0   0    12  33  0   8   82  11 
206      0   0   65  55   0   0   0   0   11  100];
207          y = A * x;
208          endfunction
209          b = ones(10,1);
210          M = eye(10, 10);
211          [x,flag,err,iter,res] = gmres(Atimesx, b)
212          [x,flag,err,iter,res] = gmres(Atimesx, b, 10, 1d-12, 20, M, zeros(10,1))
213          // A および M が関数
214          function y = Atimesx(x)
215         A=[ 94  0   0   0    0   28  0   0   32  0  
216      0   59  13  5    0   0   0   10  0   0  
217      0   13  72  34   2   0   0   0   0   65 
218      0   5   34  114  0   0   0   0   0   55 
219      0   0   2   0    70  0   28  32  12  0  
220      28  0   0   0    0   87  20  0   33  0  
221      0   0   0   0    28  20  71  39  0   0  
222      0   10  0   0    32  0   39  46  8   0  
223      32  0   0   0    12  33  0   8   82  11 
224      0   0   65  55   0   0   0   0   11  100];
225          y = A * x;
226          endfunction
227          function y = Mtimesx(x)
228 M = eye(10,10);
229 y = M*x;
230 endfunction
231          [x,flag,err,iter,res] = gmres(Atimesx, b, 10, 1d-12, 20, Mtimesx, zeros(10,1))
232  ]]></programlisting>
233     </refsection>
234     <refsection role="see also">
235         <title>参照</title>
236         <simplelist type="inline">
237             <member>
238                 <link linkend="pcg">pcg</link>
239             </member>
240             <member>
241                 <link linkend="qmr">qmr</link>
242             </member>
243         </simplelist>
244     </refsection>
245 </refentry>