Examples cleanup
[maxima.git] / doc / info / ja / augmented_lagrangian.texi
blobf4ec29bbbc9a390f7da758afe4f906ed812ea473
1 @menu
2 * Functions and Variables for augmented_lagrangian::
3 @end menu
5 @node Functions and Variables for augmented_lagrangian,  , augmented_lagrangian, augmented_lagrangian
6 @section Functions and Variables for augmented_lagrangian
8 @deffn  {関数} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{C}, @var{yy})
9 @deffnx {関数} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{C}, @var{yy}, optional_args)
10 @deffnx {関数} augmented_lagrangian_method ([@var{FOM}, @var{grad}], @var{xx}, @var{C}, @var{yy})
11 @deffnx {関数} augmented_lagrangian_method ([@var{FOM}, @var{grad}], @var{xx}, @var{C}, @var{yy}, optional_args)
13 ゼロに等しい制約@var{C}を保ちながら、
14 式@var{FOM}の変数@var{xx}に関する近似最小を返します。
15 @var{yy}は
16 @var{xx}の初期推量のリストです。
17 利用した方法は拡張Lagrange法です。(文献[1]と[2]を参照してください。)
19 もしあるなら、@var{grad}は
20 @var{FOM}の@var{xx}に関するグラディエントであり、
21 @var{xx}の変数それぞれに関する式のリストとして表されます。
22 もしないなら、グラディエントは自動的に構成されます。
24 @var{FOM}と、もしあるなら@var{grad}の要素それぞれは、
25 関数名やラムダ式ではなく、通常の式でなければいけません。
27 @code{optional_args}は、
28 @code{@var{symbol} = @var{value}}として指定される、
29 追加の引数を表します。
30 認識されるオプション引数は以下の通りです:
32 @table @code
33 @item niter
34 拡張Lagrangeアルゴリズムの繰り返しの回数
35 @item lbfgs_tolerance
36 LBFGSに供給される許容誤差
37 @item iprint
38 LBFGSに供給される
39 IPRINTパラメータ(メッセージ出力を制御する2つの整数のリスト)
40 @item %lambda
41 拡張Lagrangeを計算するために使われる
42 @code{%lambda}の初期値
43 @end table
45 この実装は
46 擬似Newtonアルゴリズムであるメモリ制限付きBFGS (LBFGS)アルゴリズムを適用することで
47 拡張Lagraneを最小化します。
49 @code{load(augmented_lagrangian)}はこの関数をロードします。
51 @code{lbfgs}も参照してください。
53 参考文献:
55 @ifnottex
56 [1] @url{http://www-fp.mcs.anl.gov/otc/Guide/OptWeb/continuous/constrained/nonlinearcon/auglag.html}
58 [2] @url{http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf}
59 @end ifnottex
60 @iftex
61 [1] @url{http://www-fp.mcs.anl.gov/@-otc/@-Guide/@-OptWeb/@-continuous/@-constrained/@*nonlinearcon/@-auglag.html}
63 [2] @url{http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf}
64 @end iftex
66 例:
68 @c ===beg===
69 @c load (lbfgs);
70 @c load (augmented_lagrangian);
71 @c FOM: x^2 + 2*y^2;
72 @c xx: [x, y];
73 @c C: [x + y - 1];
74 @c yy: [1, 1];
75 @c augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
76 @c ===end===
77 @example
78 (%i1) load (lbfgs);
79 (%o1)     /maxima/share/lbfgs/lbfgs.mac
80 (%i2) load (augmented_lagrangian);
81 (%o2) 
82    /maxima/share/contrib/augmented_lagrangian.mac
83 (%i3) FOM: x^2 + 2*y^2;
84                                2    2
85 (%o3)                       2 y  + x
86 (%i4) xx: [x, y];
87 (%o4)                        [x, y]
88 (%i5) C: [x + y - 1];
89 (%o5)                      [y + x - 1]
90 (%i6) yy: [1, 1];
91 (%o6)                        [1, 1]
92 (%i7) augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
93 (%o7) [[x = 0.66665984108002, y = 0.33334027245545],
94                                  %lambda = [- 1.333337940892525]]
95 @end example
97 前と同じ例ですが、今回は
98 グラディエントが引数として供給されます。
100 @c ===beg===
101 @c load (lbfgs)$
102 @c load (augmented_lagrangian)$
103 @c FOM: x^2 + 2*y^2;
104 @c xx: [x, y];
105 @c grad : [2*x, 4*y];
106 @c C: [x + y - 1];
107 @c yy: [1, 1];
108 @c augmented_lagrangian_method ([FOM, grad], xx, C, yy, 
109 @c                              iprint = [-1, 0]);
110 @c ===end===
111 @example
112 (%i1) load (lbfgs)$
113 (%i2) load (augmented_lagrangian)$
114 (%i3) FOM: x^2 + 2*y^2;
115                                2    2
116 (%o3)                       2 y  + x
117 (%i4) FOM: x^2 + 2*y^2;
118                                2    2
119 (%o4)                       2 y  + x
120 (%i5) xx: [x, y];
121 (%o5)                        [x, y]
122 (%i6) grad : [2*x, 4*y];
123 (%o6)                      [2 x, 4 y]
124 (%i7) C: [x + y - 1];
125 (%o7)                      [y + x - 1]
126 (%i8) yy: [1, 1];
127 (%o8)                        [1, 1]
128 (%i9) augmented_lagrangian_method ([FOM, grad], xx, C, yy,
129                                    iprint = [-1, 0]);
130 (%o9) [[x = 0.666659841080025, y = .3333402724554462], 
131                                  %lambda = [- 1.333337940892543]]
132 @end example
134 @opencatbox
135 @category{Numerical methods} @category{Optimization} @category{Share packages} @category{Package augmented_lagrangian}
136 @closecatbox
138 @end deffn