Add mathjax for dgeqrf
[maxima.git] / doc / info / ja / lbfgs.texi
blob1deeda07f90cb16b5f1dad33d30ec28aa3f23d9f
1 @menu
2 * Introduction to lbfgs::
3 * Functions and Variables for lbfgs::
4 @end menu
6 @node Introduction to lbfgs, Functions and Variables for lbfgs, Top, Top
7 @section Introduction to lbfgs
9 @code{lbfgs}はL-BFGS algorithm [1]の実装であり、
10 限定メモリ準ニュートン(BFGS)アルゴリズムによって無制約な最小化問題を解きます。
11 Hessian行列の逆元全体の代わりに低ランク近似が保存されるので、限定メモリと呼ばれます。
12 プログラムは、
13 Jorge Nocedalによって、
14 Jorge J. Mor@'{e}とDavid J. Thuenteが最初に書いたいくつかの関数を組み入れて
15 最初、Fortranで書かれ、
16 プログラム@code{f2cl}によってLispに自動翻訳されました。
18 Maximaパッケージ@code{lbfgs}は翻訳されたコードと
19 いくつかの詳細を扱うインターフェース関数からなります。
21 参考文献:
23 [1] D. Liu and J. Nocedal. "On the limited memory BFGS method for large
24 scale optimization". @i{Mathematical Programming B} 45:503--528 (1989)
26 [2] @url{http://netlib.org/opt/lbfgs_um.shar}
28 @opencatbox
29 @category{Numerical methods}
30 @category{Optimization}
31 @category{Share packages}
32 @category{Package lbfgs}
33 @closecatbox
35 @node Functions and Variables for lbfgs, , Introduction to lbfgs, Top
36 @section Functions and Variables for lbfgs
38 @deffn {関数} lbfgs (@var{FOM}, @var{X}, @var{X0}, @var{epsilon}, @var{iprint})
39 @deffnx {関数} lbfgs ([@var{FOM}, @var{grad}], @var{X}, @var{X0}, @var{epsilon}, @var{iprint})
41 性能指標@var{FOM}の、
42 初期見積もり@var{X0}から始めて
43 変数リスト@var{X}上での、
44 @math{norm(grad(FOM)) < epsilon*max(1, norm(X))}のような
45 無制約最小化の近似解を見つけます。
47 もし与えられたなら、@var{grad}は@var{FOM}の多変数@var{X}に関する勾配です。
48 @var{grad}は@var{X}の要素それぞれに対して1つの要素を持つリストです。
49 もし与えられなかったら、勾配は記号微分で自動的に計算されます。
51 適用されるアルゴリズムは限定メモリ準Newton(BFGS)アルゴリズム [1]です。
52 Hessian行列の逆元全体の代わりに低ランク近似が保存されるので、限定メモリと呼ばれます。
53 アルゴリズムのそれぞれの繰り返しは直線探索です。
54 すなわち、変数@var{X}に関して、近似Hessian逆元から計算される探索方向の線(ray)に沿っての探索です。
55 FOMはいつも直線探索でうまく減少します。
56 普通(しかしいつもではありません)FOMの勾配のノルムも減少します。
58 @var{iprint}は@code{lbfgs}が印字する進捗メッセージを制御します。
60 @table @code
61 @item iprint[1]
62 @code{@var{iprint}[1]} controls the frequency of progress messages.
63 @table @code
64 @item iprint[1] < 0
65 進捗メッセージなし。
66 @item iprint[1] = 0
67 最初と最後の繰り返しでメッセージ。
68 @item iprint[1] > 0
69 毎@code{@var{iprint}[1]}回の繰り返してメッセージを印字する。
70 @end table
71 @item iprint[2]
72 @code{@var{iprint}[2]}は進捗メッセージの量を制御します。
73 @table @code
74 @item iprint[2] = 0
75 繰り返し回数、@var{FOM}の評価回数、@var{FOM}の値、@var{FOM}の勾配のノルム、ステップ長
76 を印字します。
77 @item iprint[2] = 1
78 @code{@var{iprint}[2] = 0}に加えて、
79 @var{X0}と@var{X0}で評価された@var{FOM}の勾配を印字します。
80 @item iprint[2] = 2
81 @code{@var{iprint}[2] = 1}に加えて、
82 繰り返しそれぞれで@var{X}の値を印字します。
83 @item iprint[2] = 3
84 @code{@var{iprint}[2] = 2}に加えて、
85 繰り返しそれぞれで@var{FOM}の勾配を印字します。
86 @end table
87 @end table
89 @code{lbfgs}が印字する列は以下の通りです。
91 @table @code
92 @item I
93 繰り返し関数。それぞれの直線探索で増えます。
94 @item NFN
95 性能指標の評価回数。
96 @item FUNC
97 最も最近の直線探索の最後での性能指標の値。
98 @item GNORM
99 最も最近の直線探索の最後での性能指標の勾配のノルム。
100 @item STEPLENGTH
101 探索アルゴリズムの内部パラメータ。
102 @end table
104 アルゴリズムの詳細に関係する付加情報は、元々のFortranコード[2]のコメントに見つけられます。
106 @code{lbfgs_nfeval_max}と@code{lbfgs_ncorrections}も参照してください。
108 参考文献:
110 [1] D. Liu and J. Nocedal. "On the limited memory BFGS method for large
111 scale optimization". @i{Mathematical Programming B} 45:503--528 (1989)
113 [2] @url{http://netlib.org/opt/lbfgs_um.shar}
115 例:
117 NetlibからのLBFGSパッケージの中で、プログラムsdrive.f中、
118 FGCOMPUTEが計算したのと同じFOM。
119 問題の変数が添字付き変数であることに注意してください。
120 FOMは@math{u[k] = 1}(@math{k = 1, ..., 8})で0に等しい厳密な最小を持ちます。
121 @c ===beg===
122 @c load ("lbfgs");
123 @c t1[j] := 1 - u[j];
124 @c t2[j] := 10*(u[j + 1] - u[j]^2);
125 @c n : 8;
126 @c FOM : sum (t1[2*j - 1]^2 + t2[2*j - 1]^2, j, 1, n/2);
127 @c lbfgs (FOM, '[u[1], u[2], u[3], u[4], u[5], u[6], u[7], u[8]],
128 @c        [-1.2, 1, -1.2, 1, -1.2, 1, -1.2, 1], 1e-3, [1, 0]);
129 @c ===end===
131 @example
132 (%i1) load ("lbfgs");
133 (%o1)   /usr/share/maxima/5.10.0cvs/share/lbfgs/lbfgs.mac
134 (%i2) t1[j] := 1 - u[j];
135 (%o2)                     t1  := 1 - u
136                             j         j
137 (%i3) t2[j] := 10*(u[j + 1] - u[j]^2);
138                                           2
139 (%o3)                t2  := 10 (u      - u )
140                        j         j + 1    j
141 (%i4) n : 8;
142 (%o4)                           8
143 (%i5) FOM : sum (t1[2*j - 1]^2 + t2[2*j - 1]^2, j, 1, n/2);
144                  2 2           2              2 2           2
145 (%o5) 100 (u  - u )  + (1 - u )  + 100 (u  - u )  + (1 - u )
146             8    7           7           6    5           5
147                      2 2           2              2 2           2
148         + 100 (u  - u )  + (1 - u )  + 100 (u  - u )  + (1 - u )
149                 4    3           3           2    1           1
150 (%i6) lbfgs (FOM, '[u[1],u[2],u[3],u[4],u[5],u[6],u[7],u[8]],
151        [-1.2, 1, -1.2, 1, -1.2, 1, -1.2, 1], 1e-3, [1, 0]);
152 *************************************************
153   N=    8   NUMBER OF CORRECTIONS=25
154        INITIAL VALUES
155  F=  9.680000000000000D+01   GNORM=  4.657353755084532D+02
156 *************************************************
157 @end example
158 @ifnottex
159 @example
160  I NFN   FUNC                    GNORM                   STEPLENGTH
162  1   3   1.651479526340304D+01   4.324359291335977D+00   7.926153934390631D-04
163  2   4   1.650209316638371D+01   3.575788161060007D+00   1.000000000000000D+00
164  3   5   1.645461701312851D+01   6.230869903601577D+00   1.000000000000000D+00 
165  4   6   1.636867301275588D+01   1.177589920974980D+01   1.000000000000000D+00
166  5   7   1.612153014409201D+01   2.292797147151288D+01   1.000000000000000D+00
167  6   8   1.569118407390628D+01   3.687447158775571D+01   1.000000000000000D+00
168  7   9   1.510361958398942D+01   4.501931728123680D+01   1.000000000000000D+00
169  8  10   1.391077875774294D+01   4.526061463810632D+01   1.000000000000000D+00
170  9  11   1.165625686278198D+01   2.748348965356917D+01   1.000000000000000D+00
171 10  12   9.859422687859137D+00   2.111494974231644D+01   1.000000000000000D+00
172 11  13   7.815442521732281D+00   6.110762325766556D+00   1.000000000000000D+00
173 12  15   7.346380905773160D+00   2.165281166714631D+01   1.285316401779533D-01
174 13  16   6.330460634066370D+00   1.401220851762050D+01   1.000000000000000D+00
175 14  17   5.238763939851439D+00   1.702473787613255D+01   1.000000000000000D+00
176 15  18   3.754016790406701D+00   7.981845727704576D+00   1.000000000000000D+00
177 16  20   3.001238402309352D+00   3.925482944716691D+00   2.333129631296807D-01
178 17  22   2.794390709718290D+00   8.243329982546473D+00   2.503577283782332D-01
179 18  23   2.563783562918759D+00   1.035413426521790D+01   1.000000000000000D+00
180 19  24   2.019429976377856D+00   1.065187312346769D+01   1.000000000000000D+00
181 20  25   1.428003167670903D+00   2.475962450826961D+00   1.000000000000000D+00
182 21  27   1.197874264861340D+00   8.441707983493810D+00   4.303451060808756D-01
183 22  28   9.023848941942773D-01   1.113189216635162D+01   1.000000000000000D+00
184 23  29   5.508226405863770D-01   2.380830600326308D+00   1.000000000000000D+00
185 24  31   3.902893258815567D-01   5.625595816584421D+00   4.834988416524465D-01
186 25  32   3.207542206990315D-01   1.149444645416472D+01   1.000000000000000D+00
187 26  33   1.874468266362791D-01   3.632482152880997D+00   1.000000000000000D+00
188 27  34   9.575763380706598D-02   4.816497446154354D+00   1.000000000000000D+00
189 28  35   4.085145107543406D-02   2.087009350166495D+00   1.000000000000000D+00
190 29  36   1.931106001379290D-02   3.886818608498966D+00   1.000000000000000D+00
191 30  37   6.894000721499670D-03   3.198505796342214D+00   1.000000000000000D+00
192 31  38   1.443296033051864D-03   1.590265471025043D+00   1.000000000000000D+00
193 32  39   1.571766603154336D-04   3.098257063980634D-01   1.000000000000000D+00
194 33  40   1.288011776581970D-05   1.207784183577257D-02   1.000000000000000D+00
195 34  41   1.806140173752971D-06   4.587890233385193D-02   1.000000000000000D+00
196 35  42   1.769004645459358D-07   1.790537375052208D-02   1.000000000000000D+00
197 36  43   3.312164100763217D-10   6.782068426119681D-04   1.000000000000000D+00
198 @end example
199 @end ifnottex
200 @tex
201 \halign{\hfil\tt#&\quad\hfil\tt#\quad&\tt#\hfil\quad&\tt#\hfil\quad&\tt#\hfil\cr
202 I& NFN&   FUNC&                    GNORM&                   STEPLENGTH\cr
203 &&&&\cr
204  1& 3& 1.651479526340304D+01& 4.324359291335977D+00& 7.926153934390631D-04\cr
205  2& 4& 1.650209316638371D+01& 3.575788161060007D+00& 1.000000000000000D+00\cr
206  3& 5& 1.645461701312851D+01& 6.230869903601577D+00& 1.000000000000000D+00\cr
207  4& 6& 1.636867301275588D+01& 1.177589920974980D+01& 1.000000000000000D+00\cr
208  5& 7& 1.612153014409201D+01& 2.292797147151288D+01& 1.000000000000000D+00\cr
209  6& 8& 1.569118407390628D+01& 3.687447158775571D+01& 1.000000000000000D+00\cr
210  7& 9& 1.510361958398942D+01& 4.501931728123680D+01& 1.000000000000000D+00\cr
211  8&10& 1.391077875774294D+01& 4.526061463810632D+01& 1.000000000000000D+00\cr
212  9&11& 1.165625686278198D+01& 2.748348965356917D+01& 1.000000000000000D+00\cr
213 10&12& 9.859422687859137D+00& 2.111494974231644D+01& 1.000000000000000D+00\cr
214 11&13& 7.815442521732281D+00& 6.110762325766556D+00& 1.000000000000000D+00\cr
215 12&15& 7.346380905773160D+00& 2.165281166714631D+01& 1.285316401779533D-01\cr
216 13&16& 6.330460634066370D+00& 1.401220851762050D+01& 1.000000000000000D+00\cr
217 14&17& 5.238763939851439D+00& 1.702473787613255D+01& 1.000000000000000D+00\cr
218 15&18& 3.754016790406701D+00& 7.981845727704576D+00& 1.000000000000000D+00\cr
219 16&20& 3.001238402309352D+00& 3.925482944716691D+00& 2.333129631296807D-01\cr
220 17&22& 2.794390709718290D+00& 8.243329982546473D+00& 2.503577283782332D-01\cr
221 18&23& 2.563783562918759D+00& 1.035413426521790D+01& 1.000000000000000D+00\cr
222 19&24& 2.019429976377856D+00& 1.065187312346769D+01& 1.000000000000000D+00\cr
223 20&25& 1.428003167670903D+00& 2.475962450826961D+00& 1.000000000000000D+00\cr
224 21&27& 1.197874264861340D+00& 8.441707983493810D+00& 4.303451060808756D-01\cr
225 22&28& 9.023848941942773D-01& 1.113189216635162D+01& 1.000000000000000D+00\cr
226 23&29& 5.508226405863770D-01& 2.380830600326308D+00& 1.000000000000000D+00\cr
227 24&31& 3.902893258815567D-01& 5.625595816584421D+00& 4.834988416524465D-01\cr
228 25&32& 3.207542206990315D-01& 1.149444645416472D+01& 1.000000000000000D+00\cr
229 26&33& 1.874468266362791D-01& 3.632482152880997D+00& 1.000000000000000D+00\cr
230 27&34& 9.575763380706598D-02& 4.816497446154354D+00& 1.000000000000000D+00\cr
231 28&35& 4.085145107543406D-02& 2.087009350166495D+00& 1.000000000000000D+00\cr
232 29&36& 1.931106001379290D-02& 3.886818608498966D+00& 1.000000000000000D+00\cr
233 30&37& 6.894000721499670D-03& 3.198505796342214D+00& 1.000000000000000D+00\cr
234 31&38& 1.443296033051864D-03& 1.590265471025043D+00& 1.000000000000000D+00\cr
235 32&39& 1.571766603154336D-04& 3.098257063980634D-01& 1.000000000000000D+00\cr
236 33&40& 1.288011776581970D-05& 1.207784183577257D-02& 1.000000000000000D+00\cr
237 34&41& 1.806140173752971D-06& 4.587890233385193D-02& 1.000000000000000D+00\cr
238 35&42& 1.769004645459358D-07& 1.790537375052208D-02& 1.000000000000000D+00\cr
239 36&43& 3.312164100763217D-10& 6.782068426119681D-04& 1.000000000000000D+00\cr
241 @end tex
242 @example
244  THE MINIMIZATION TERMINATED WITHOUT DETECTING ERRORS.
245  IFLAG = 0
246 (%o6) [u  = 1.000005339815974, u  = 1.000009942839805, 
247         1                       2
248 u  = 1.000005339815974, u  = 1.000009942839805, 
249  3                       4
250 u  = 1.000005339815974, u  = 1.000009942839805, 
251  5                       6
252 u  = 1.000005339815974, u  = 1.000009942839805]
253  7                       8
254 @end example
256 回帰問題。
257 FOMは、予言値@math{F(X[i])}と観測値@math{Y[i]}の二乗平均差です。
258 関数@math{F}は有界な単調関数(いわゆる「シグモイド」函数)です。
259 この例では、@math{F}のパラメータに関して@code{lbfgs}は近似値を計算し、
260 @code{plot2d}は@math{F}の観測データとの比較を表示します。
261 @c ===beg===
262 @c load ("lbfgs");
263 @c FOM : '((1/length(X))*sum((F(X[i]) - Y[i])^2, i, 1, 
264 @c                                                 length(X)));
265 @c X : [1, 2, 3, 4, 5];
266 @c Y : [0, 0.5, 1, 1.25, 1.5];
267 @c F(x) := A/(1 + exp(-B*(x - C)));
268 @c ''FOM;
269 @c estimates : lbfgs (FOM, '[A, B, C], [1, 1, 1], 1e-4, [1, 0]);
270 @c plot2d ([F(x), [discrete, X, Y]], [x, -1, 6]), ''estimates;
271 @c ===end===
273 @example
274 (%i1) load ("lbfgs");
275 (%o1)   /usr/share/maxima/5.10.0cvs/share/lbfgs/lbfgs.mac
276 (%i2) FOM : '((1/length(X))*sum((F(X[i]) - Y[i])^2, i, 1,
277                                                 length(X)));
278                                2
279                sum((F(X ) - Y ) , i, 1, length(X))
280                        i     i
281 (%o2)          -----------------------------------
282                             length(X)
283 (%i3) X : [1, 2, 3, 4, 5];
284 (%o3)                    [1, 2, 3, 4, 5]
285 (%i4) Y : [0, 0.5, 1, 1.25, 1.5];
286 (%o4)                [0, 0.5, 1, 1.25, 1.5]
287 (%i5) F(x) := A/(1 + exp(-B*(x - C)));
288                                    A
289 (%o5)            F(x) := ----------------------
290                          1 + exp((- B) (x - C))
291 (%i6) ''FOM;
292                 A               2            A                2
293 (%o6) ((----------------- - 1.5)  + (----------------- - 1.25)
294           - B (5 - C)                  - B (4 - C)
295         %e            + 1            %e            + 1
296             A             2            A               2
297  + (----------------- - 1)  + (----------------- - 0.5)
298       - B (3 - C)                - B (2 - C)
299     %e            + 1          %e            + 1
300              2
301             A
302  + --------------------)/5
303       - B (1 - C)     2
304    (%e            + 1)
305 (%i7) estimates : lbfgs (FOM, '[A, B, C], [1, 1, 1], 1e-4, [1, 0]);
306 *************************************************
307   N=    3   NUMBER OF CORRECTIONS=25
308        INITIAL VALUES
309  F=  1.348738534246918D-01   GNORM=  2.000215531936760D-01
310 *************************************************
312 @end example
313 @ifnottex
314 @example
315 I  NFN  FUNC                    GNORM                   STEPLENGTH
316 1    3  1.177820636622582D-01   9.893138394953992D-02   8.554435968992371D-01  
317 2    6  2.302653892214013D-02   1.180098521565904D-01   2.100000000000000D+01  
318 3    8  1.496348495303005D-02   9.611201567691633D-02   5.257340567840707D-01  
319 4    9  7.900460841091139D-03   1.325041647391314D-02   1.000000000000000D+00  
320 5   10  7.314495451266917D-03   1.510670810312237D-02   1.000000000000000D+00  
321 6   11  6.750147275936680D-03   1.914964958023047D-02   1.000000000000000D+00  
322 7   12  5.850716021108205D-03   1.028089194579363D-02   1.000000000000000D+00  
323 8   13  5.778664230657791D-03   3.676866074530332D-04   1.000000000000000D+00  
324 9   14  5.777818823650782D-03   3.010740179797255D-04   1.000000000000000D+00  
325 @end example
326 @end ifnottex
327 @tex
328 \halign{\hfil\tt#&\quad\hfil\tt#\quad&\tt#\hfil\quad&\tt#\hfil\quad&\tt#\hfil\cr
329 I& NFN&   FUNC&                    GNORM&                   STEPLENGTH\cr
330 &&&&\cr
331 1&  3&1.177820636622582D-01& 9.893138394953992D-02& 8.554435968992371D-01\cr
332 2&  6&2.302653892214013D-02& 1.180098521565904D-01& 2.100000000000000D+01\cr
333 3&  8&1.496348495303005D-02& 9.611201567691633D-02& 5.257340567840707D-01\cr
334 4&  9&7.900460841091139D-03& 1.325041647391314D-02& 1.000000000000000D+00\cr
335 5& 10&7.314495451266917D-03& 1.510670810312237D-02& 1.000000000000000D+00\cr
336 6& 11&6.750147275936680D-03& 1.914964958023047D-02& 1.000000000000000D+00\cr
337 7& 12&5.850716021108205D-03& 1.028089194579363D-02& 1.000000000000000D+00\cr
338 8& 13&5.778664230657791D-03& 3.676866074530332D-04& 1.000000000000000D+00\cr
339 9& 14&5.777818823650782D-03& 3.010740179797255D-04& 1.000000000000000D+00\cr
341 @end tex
342 @example
344  THE MINIMIZATION TERMINATED WITHOUT DETECTING ERRORS.
345  IFLAG = 0
346 (%o7) [A = 1.461933911464101, B = 1.601593973254802, 
347                                            C = 2.528933072164854]
348 (%i8) plot2d ([F(x), [discrete, X, Y]], [x, -1, 6]), ''estimates;
349 (%o8) 
350 @end example
352 FOMの勾配が(自動的に計算される代わりに)指定されます。
354 @c ===beg===
355 @c load ("lbfgs")$
356 @c F(a, b, c) := (a - 5)^2 + (b - 3)^4 + (c - 2)^6;
357 @c F_grad : map (lambda ([x], diff (F(a, b, c), x)), [a, b, c]);
358 @c estimates : lbfgs ([F(a, b, c), F_grad],
359 @c                    [a, b, c], [0, 0, 0], 1e-4, [1, 0]);
360 @c ===end===
361 @example
362 (%i1) load ("lbfgs")$
363 (%i2) F(a, b, c) := (a - 5)^2 + (b - 3)^4 + (c - 2)^6;
364                                2          4          6
365 (%o2)     F(a, b, c) := (a - 5)  + (b - 3)  + (c - 2)
366 (%i3) F_grad : map (lambda ([x], diff (F(a, b, c), x)), [a, b, c]);
367                                     3           5
368 (%o3)          [2 (a - 5), 4 (b - 3) , 6 (c - 2) ]
369 (%i4) estimates : lbfgs ([F(a, b, c), F_grad],
370                          [a, b, c], [0, 0, 0], 1e-4, [1, 0]);
371 *************************************************
372   N=    3   NUMBER OF CORRECTIONS=25
373        INITIAL VALUES
374  F=  1.700000000000000D+02   GNORM=  2.205175729958953D+02
375 *************************************************
377 @end example
378 @ifnottex
379 @example
380    I  NFN     FUNC                    GNORM                   STEPLENGTH
382    1    2     6.632967565917638D+01   6.498411132518770D+01   4.534785987412505D-03  
383    2    3     4.368890936228036D+01   3.784147651974131D+01   1.000000000000000D+00  
384    3    4     2.685298972775190D+01   1.640262125898521D+01   1.000000000000000D+00  
385    4    5     1.909064767659852D+01   9.733664001790506D+00   1.000000000000000D+00  
386    5    6     1.006493272061515D+01   6.344808151880209D+00   1.000000000000000D+00  
387    6    7     1.215263596054294D+00   2.204727876126879D+00   1.000000000000000D+00  
388    7    8     1.080252896385334D-02   1.431637116951849D-01   1.000000000000000D+00  
389    8    9     8.407195124830908D-03   1.126344579730013D-01   1.000000000000000D+00  
390    9   10     5.022091686198527D-03   7.750731829225274D-02   1.000000000000000D+00  
391   10   11     2.277152808939775D-03   5.032810859286795D-02   1.000000000000000D+00  
392   11   12     6.489384688303218D-04   1.932007150271008D-02   1.000000000000000D+00  
393   12   13     2.075791943844548D-04   6.964319310814364D-03   1.000000000000000D+00  
394   13   14     7.349472666162257D-05   4.017449067849554D-03   1.000000000000000D+00  
395   14   15     2.293617477985237D-05   1.334590390856715D-03   1.000000000000000D+00  
396   15   16     7.683645404048675D-06   6.011057038099201D-04   1.000000000000000D+00  
397 @end example
398 @end ifnottex
399 @tex
400 \halign{\hfil\tt#&\quad\hfil\tt#\quad&\tt#\hfil\quad&\tt#\hfil\quad&\tt#\hfil\cr
401 I& NFN&   FUNC&                    GNORM&                   STEPLENGTH\cr
402 &&&&\cr
403    1&   2&    6.632967565917638D+01&  6.498411132518770D+01&  4.534785987412505D-03\cr
404    2&   3&    4.368890936228036D+01&  3.784147651974131D+01&  1.000000000000000D+00\cr
405    3&   4&    2.685298972775190D+01&  1.640262125898521D+01&  1.000000000000000D+00\cr
406    4&   5&    1.909064767659852D+01&  9.733664001790506D+00&  1.000000000000000D+00\cr
407    5&   6&    1.006493272061515D+01&  6.344808151880209D+00&  1.000000000000000D+00\cr
408    6&   7&    1.215263596054294D+00&  2.204727876126879D+00&  1.000000000000000D+00\cr
409    7&   8&    1.080252896385334D-02&  1.431637116951849D-01&  1.000000000000000D+00\cr
410    8&   9&    8.407195124830908D-03&  1.126344579730013D-01&  1.000000000000000D+00\cr
411    9&  10&    5.022091686198527D-03&  7.750731829225274D-02&  1.000000000000000D+00\cr
412   10&  11&    2.277152808939775D-03&  5.032810859286795D-02&  1.000000000000000D+00\cr
413   11&  12&    6.489384688303218D-04&  1.932007150271008D-02&  1.000000000000000D+00\cr
414   12&  13&    2.075791943844548D-04&  6.964319310814364D-03&  1.000000000000000D+00\cr
415   13&  14&    7.349472666162257D-05&  4.017449067849554D-03&  1.000000000000000D+00\cr
416   14&  15&    2.293617477985237D-05&  1.334590390856715D-03&  1.000000000000000D+00\cr
417   15&  16&    7.683645404048675D-06&  6.011057038099201D-04&  1.000000000000000D+00\cr
419 @end tex
420 @example
422  THE MINIMIZATION TERMINATED WITHOUT DETECTING ERRORS.
423  IFLAG = 0
424 (%o4) [a = 5.000086823042934, b = 3.05239542970518, 
425                                            c = 1.927980629919583]
426 @end example
428 @opencatbox
429 @category{Package lbfgs}
430 @closecatbox
432 @end deffn
434 @defvr {変数} lbfgs_nfeval_max
435 デフォルト値: 100
437 @code{lbfgs_nfeval_max}は、@code{lbfgs}がする性能指標(FOM)の評価の最大回数です。
438 @code{lbfgs_nfeval_max}に届いた時、
439 @code{lbfgs}は最後に成功した直線探索の結果を返します。
441 @opencatbox
442 @category{Package lbfgs}
443 @closecatbox
445 @end defvr
447 @defvr {変数} lbfgs_ncorrections
448 デフォルト値: 25
450 @code{lbfgs_ncorrections}は@code{lbfgs}が保つ近似逆Hessian行列に適用された修正回数です。
452 @opencatbox
453 @category{Package lbfgs}
454 @closecatbox
456 @end defvr