Rename specvar integer-info to *integer-info*
[maxima.git] / doc / info / es / augmented_lagrangian.texi
blob104325181e2b99e2e10e087fb6c535296f6cccec
1 @c English version: 2011-06-11
2 @menu
3 * Funciones y variables para augmented_lagrangian::
4 @end menu
6 @node Funciones y variables para augmented_lagrangian,  , augmented_lagrangian, augmented_lagrangian
7 @section Funciones y variables para augmented_lagrangian
10 @deffn {Función} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{C}, @var{yy})
11 @deffnx {Función} augmented_lagrangian_method (@var{FOM}, @var{xx}, @var{C}, @var{yy}, optional_args)
12 @deffnx {Función} augmented_lagrangian_method ([@var{FOM}, @var{grad}], @var{xx}, @var{C}, @var{yy})
13 @deffnx {Función} augmented_lagrangian_method ([@var{FOM}, @var{grad}], @var{xx}, @var{C}, @var{yy}, optional_args)
15 Devuelve una aproximación del valor mínimo de
16 la expresión @var{FOM} respecto de las variables @var{xx},
17 manteniendo las restricciones @var{C} igual a cero. La lista
18 @var{yy} contiene las soluciones iniciales para @var{xx}.
19 El algoritmo que se utiliza es el método del lagrangiano
20 aumentado (ver referencias [1] y [2]).
22 Si @var{grad} está presente en la llamada a la función, se interpreta
23 como el gradiente de @var{FOM} respecto de @var{xx}, representado como una
24 lista de tantas expresiones como variables tenga @var{xx}. Si el
25 argumento @var{grad} no está, se calculará de forma automática.
27 Tanto @var{FOM} como cada uno de los elementos de @var{grad}, si se
28 da como argumento, deben ser expresiones ordinarias; no admitiéndose
29 ni nombres de funciones ni expresiones lambda.
31 El argumento @code{optional_args} hace referencia a otros argumentos adicionales,
32 los cuales se especifican de la forma @code{@var{symbol} = @var{value}}.
33 Los argumentos opcionales reconocidos son:
35 @table @code
36 @item niter
37 Número de iteraciones del algoritmo.
38 @item lbfgs_tolerance
39 Tolerancia que se pasa a LBFGS.
40 @item iprint
41 Parámetro IPRINT (lista de dos enteros que controlan la frecuencia
42 de mensajes) que se pasa a LBFGS.
43 @item %lambda
44 Valor inicial de @code{%lambda} que será utilizado para calcular el
45 lagrangiano aumentado.
46 @end table
48 Esta función minimiza el lagrangiano aumentado haciendo uso
49 del algoritmo LBFGS, que es un método de los llamados
50 quasi-Newton.
52 Antes de hacer uso de esta función ejecútense @code{load("augmented_lagrangian")}.
54 Véase también @code{lbfgs}.
56 Referencias:
58 @ifnottex
59 [1] @url{http://www-fp.mcs.anl.gov/otc/Guide/OptWeb/continuous/constrained/nonlinearcon/auglag.html}
61 [2] @url{http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf}
62 @end ifnottex
63 @iftex
64 [1] @url{http://www-fp.mcs.anl.gov/@-otc/@-Guide/@-OptWeb/@-continuous/@-constrained/@*nonlinearcon/@-auglag.html}
66 [2] @url{http://www.cs.ubc.ca/spider/ascher/542/chap10.pdf}
67 @end iftex
69 Ejemplos:
71 @c ===beg===
72 @c load ("lbfgs");
73 @c load ("augmented_lagrangian");
74 @c FOM: x^2 + 2*y^2;
75 @c xx: [x, y];
76 @c C: [x + y - 1];
77 @c yy: [1, 1];
78 @c augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
79 @c ===end===
80 @example
81 (%i1) load ("lbfgs");
82 (%o1)     /maxima/share/lbfgs/lbfgs.mac
83 (%i2) load ("augmented_lagrangian");
84 (%o2) 
85    /maxima/share/contrib/augmented_lagrangian.mac
86 (%i3) FOM: x^2 + 2*y^2;
87                                2    2
88 (%o3)                       2 y  + x
89 (%i4) xx: [x, y];
90 (%o4)                        [x, y]
91 (%i5) C: [x + y - 1];
92 (%o5)                      [y + x - 1]
93 (%i6) yy: [1, 1];
94 (%o6)                        [1, 1]
95 (%i7) augmented_lagrangian_method(FOM, xx, C, yy, iprint=[-1,0]);
96 (%o7) [[x = 0.66665984108002, y = 0.33334027245545], 
97                                  %lambda = [- 1.333337940892525]]
98 @end example
100 Mismo ejemplo que en el caso anterior, pero ahora el
101 gradiente se suministra como argumento.
103 @c ===beg===
104 @c load ("lbfgs")$
105 @c load ("augmented_lagrangian")$
106 @c FOM: x^2 + 2*y^2;
107 @c xx: [x, y];
108 @c grad : [2*x, 4*y];
109 @c C: [x + y - 1];
110 @c yy: [1, 1];
111 @c augmented_lagrangian_method ([FOM, grad], xx, C, yy, 
112 @c                              iprint = [-1, 0]);
113 @c ===end===
114 @example
115 (%i1) load ("lbfgs")$
116 (%i2) load ("augmented_lagrangian")$
117 (%i3) FOM: x^2 + 2*y^2;
118                                2    2
119 (%o3)                       2 y  + x
120 (%i4) FOM: x^2 + 2*y^2;
121                                2    2
122 (%o4)                       2 y  + x
123 (%i5) xx: [x, y];
124 (%o5)                        [x, y]
125 (%i6) grad : [2*x, 4*y];
126 (%o6)                      [2 x, 4 y]
127 (%i7) C: [x + y - 1];
128 (%o7)                      [y + x - 1]
129 (%i8) yy: [1, 1];
130 (%o8)                        [1, 1]
131 (%i9) augmented_lagrangian_method ([FOM, grad], xx, C, yy,
132                                    iprint = [-1, 0]);
133 (%o9) [[x = 0.666659841080025, y = .3333402724554462], 
134                                  %lambda = [- 1.333337940892543]]
135 @end example
136 @end deffn