1 @c English version: 2010-10-10
3 * Introducción a minpack::
4 * Funciones y variables para minpack::
7 @node Introducción a minpack, Funciones y variables para minpack, ,
8 @section Introducción a minpack
10 @code{Minpack} es una traducción a Common Lisp (via @code{f2cl}) de la
11 librería MINPACK escrita en Fortran, tal como se puede
15 @node Funciones y variables para minpack, , Introducción a minpack,
16 @section Funciones y variables para minpack
20 @deffn {Función} minpack_lsquares @
21 @fname{minpack_lsquares} (@var{flist}, @var{varlist}, @var{guess}) @
22 @fname{minpack_lsquares} (..., 'tolerance = @var{tolerance}) @
23 @fname{minpack_lsquares} (..., 'jacobian = @var{jacobian})
25 Calcula el punto @code{x} que minimiza la suma de los cuadrados de las
26 funciones de la lista @var{flist}. Las variables se escriben en
27 la lista @code{varlist}. El argumento @var{guess} debe guardar una
28 estimación inicial del punto óptimo.
30 Los argumentos opcionales @var{tolerance} y @var{jacobian} permiten
31 mantener cierto control sobre el algoritmo; @var{tolerance} es el
32 error relativo estimado que se desea en la suma de cuadrados,
33 mientras que @var{jacobian} puede utilizarse para especificar el
34 jacobiano. Si @var{jacobian} no se suministra, o se le da el valor
35 @code{true}, el que ya tiene por defecto, el jacobiano se calcula
36 a partir de @var{flist}. Si @var{jacobian} vale @code{false}, se
37 utilizará una aproximación numérica.
39 @code{minpack_lsquares} devuelve una lista, siendo su primer
40 elemento la solución estimada, el segundo la suma de cuadrados y
41 el tercero indica la bondad del algoritmo, siendo sus posibles valores
46 Número incorrecto de parámetros.
48 El algoritmo estima que el error relativo de la suma de cuadrados
49 es, como mucho, igual a @code{tolerance}.
51 El algoritmo estima que el error relativo entre @var{x} y la solución es,
52 como mucho, igual a @code{tolerance}.
54 Las dos condiciones anteriores se cumplen.
56 El vector formado por las funciones evaluadas en el punto @var{x} es
57 ortogonal a las columnas del jacobiano dentro de la precisión de la
60 El número de llamadas a las funciones ha alcanzado 100*(n+1), siendo
61 n el número de variables.
63 La tolerancia es demasiado pequeña, no siendo posible reducir más la
66 La tolerancia es demasiado pequeña, no siendo posible mejorar la
67 solución aproximada @var{x}.
71 /* Problem 6: Powell singular function */
72 (%i1) powell(x1,x2,x3,x4) :=
73 [x1+10*x2, sqrt(5)*(x3-x4), (x2-2*x3)^2,
75 (%i2) minpack_lsquares(powell(x1,x2,x3,x4), [x1,x2,x3,x4],
77 (%o2) [[1.652117596168394e-17, - 1.652117596168393e-18,
78 2.643388153869468e-18, 2.643388153869468e-18],
79 6.109327859207777e-34, 4]
83 /* Same problem but use numerical approximation to Jacobian */
84 (%i3) minpack_lsquares(powell(x1,x2,x3,x4), [x1,x2,x3,x4],
85 [3,-1,0,1], jacobian = false);
86 (%o3) [[5.060282149485331e-11, - 5.060282149491206e-12,
87 2.179447843547218e-11, 2.179447843547218e-11],
88 3.534491794847031e-21, 5]
95 @deffn {Función} minpack_solve @
96 @fname{minpack_solve} (@var{flist}, @var{varlist}, @var{guess}) @
97 @fname{minpack_solve} (..., 'tolerance = @var{tolerance}) @
98 @fname{minpack_solve} (..., 'jacobian = @var{jacobian})
100 Resuelve un sistema de @code{n} ecuaciones con @code{n} incógnitas.
101 Las @code{n} ecuaciones forman la lista @var{flist}, estando la
102 lista @var{varlist} formada por las incógnitas. El argumento
103 @var{guess} es una estimación inicial de la solución.
105 Los argumentos opcionales @var{tolerance} y @var{jacobian} permiten
106 mantener cierto control sobre el algoritmo; @var{tolerance} es el
107 error relativo estimado que se desea en la suma de cuadrados,
108 mientras que @var{jacobian} puede utilizarse para especificar el
109 jacobiano. Si @var{jacobian} no se suministra, o se le da el valor
110 @code{true}, el que ya tiene por defecto, el jacobiano se calcula
111 a partir de @var{flist}. Si @var{jacobian} vale @code{false}, se
112 utilizará una aproximación numérica.
114 @code{minpack_solve} devuelve una lista, siendo su primer
115 elemento la solución estimada, el segundo la suma de cuadrados y
116 el tercero indica la bondad del algoritmo, siendo sus posibles valores
121 Número incorrecto de parámetros.
123 El algoritmo estima que el error relativo de la suma de cuadrados
124 es, como mucho, igual a @code{tolerance}.
126 El número de llamadas a las funciones ha alcanzado 100*(n+1), siendo
127 n el número de incógnitas.
129 La tolerancia es demasiado pequeña, no siendo posible reducir más la
132 El algoritmo no progresa adecuadamente.