Page 394 - Chapra y Canale. Metodos Numericos para Ingenieros 5edición_Neat
P. 394

370                     OPTIMIZACIÓN UNIDIMENSIONAL NO RESTRINGIDA

                                      1. Muchas evaluaciones. Hay casos donde el algoritmo de búsqueda de la sección
                                         dorada puede ser parte de otros cálculos. Entonces, éste podría ser llamado muchas
                                         veces. Por lo tanto, mantener el número de evaluaciones de la función en un mínimo
                                         ofrecería dar grandes ventajas en tales casos.

              FIGURA 13.5             FUNCTION Gold (xlow, xhigh, maxit, es, fx)
              Algoritmo para la búsqueda   R = (5 0.5  – 1)/2
              de la sección dorada.   x = xlow; xu = xhigh
                                      iter = 1
                                      d = R * (xu – x)
                                      x1 = x + d; x2 = xu – d
                                      f1 = f(x1)
                                      f2 = f(x2)
                                      IF f1 > f2 THEN                              IF f1 < f2 THEN
                                        xopt = x1
                                        fx = f1
                                      ELSE
                                        xopt = x2
                                        fx = f2
                                      END IF
                                      DO
                                        d = R*d
                                        IF f1 > f2 THEN                            IF f1 < f2 THEN
                                           x = x2
                                           x2 = x1
                                           x1 = x+d
                                           f2 = f1
                                           f1 = f(x1)
                                        ELSE
                                           xu = x1
                                           x1 = x2
                                           x2 = xu–d
                                           f1 = f2
                                           f2 = f(x2)
                                        END IF
                                        iter = iter+1
                                        IF f1 > f2 THEN                            IF f1 > f2 THEN
                                           xopt = x1
                                           fx = f1
                                        ELSE
                                           xopt = x2
                                           fx = f2
                                        END IF
                                        IF xopt ≠ 0. THEN
                                           ea = (1.–R) *ABS((xu – x)/xopt) * 100.
                                        END IF
                                        IF ea ≤ es OR iter ≥ maxit EXIT
                                      END DO
                                      Gold = xopt
                                      END Gold
                                        a) Maximización                            b) Minimización




                                                                                                         6/12/06   13:55:08
          Chapra-13.indd   370                                                                           6/12/06   13:55:08
          Chapra-13.indd   370
   389   390   391   392   393   394   395   396   397   398   399