Page 445 - Chapra y Canale. Metodos Numericos para Ingenieros 5edición_Neat
P. 445
15.3 OPTIMIZACIÓN CON BIBLIOTECAS Y PAQUETES DE SOFTWARE 421
15.3.4 IMSL
IMSL tiene varias subrutinas en Fortran para optimización (tabla 15.2). El presente
análisis se concentrará en la rutina UVMID. Esta rutina localiza el punto mínimo de
una función suave en una sola variable, mediante evaluaciones de la función y de las
primeras derivadas.
UVMID es implementado por la siguiente instrucción CALL:
CALL UVMID (F, G, XGUESS, ERREL, GTOL, MAXFN, A, B, X, FX, GX)
donde
F = FUNCIÓN suministrada por el usuario para calcular el valor de la función que
va a minimizarse. La forma es F(X), donde X = punto donde se evalúa la fun-
ción. (Entrada). X no deberá ser modificada por F. F = valor de la función
calculado en el punto X. (Salida)
G = FUNCIÓN suministrada por el usuario para calcular la derivada de la función,
donde G = valor de la función calculado en el punto X. (Salida)
F y G se deben declarar como EXTERNAL en el programa de llamado.
XGUESS = Un valor inicial del punto mínimo de F. (Entrada)
ERREL = Exactitud relativa requerida del valor final de X. (Entrada)
GTOL = Tolerancia de la derivada usada para decidir si el punto actual es un míni-
mo. (Entrada)
MAXFN = Número máximo permitido de evaluaciones de la función. (Entrada)
A = Punto extremo inferior del intervalo en el cual se localizará el máximo. (Entrada)
B = Punto extremo superior del intervalo en el cual se localizará el máximo. (Entrada)
FX = Valor de la función en X. (Salida)
GX = Valor de la derivada en X. (Salida)
EJEMPLO 15.7 Uso de IMSL para localizar un solo óptimo
Planteamiento del problema. Use UVMID para determinar el máximo de la función
unidimensional resuelta en el capítulo 13 (recuerde los ejemplos del 13.1 al 13.3).
x 2
f(x) = 2 sen x –
10
Solución. Un ejemplo de un programa principal en Fortran 90 y de una función usan-
do UVMIF para resolver este problema se escribe así:
PROGRAM Oned
USE mimsl
IMPLICIT NONE
INTEGER::maxfn=50
REAL::xguess=0., errel=1.E-6,gtol=1.E-6,a=–2.,b=2.
REAL::x,f,g,fx,gx
EXTERNAL f,g
CALL UVMID(f,g,xguess,errrel,gtol,maxfn,a,b,x,fx,gx)
PRINT *,x,fx,gx
END PROGRAM
6/12/06 13:56:07
Chapra-15.indd 421
Chapra-15.indd 421 6/12/06 13:56:07

