Page 162 - 6734
P. 162

y=input("Iteration %d x=%f y="%(i,x)) # вивести
           `x` і ввести відповідне `y`
               return y
           argmin = fminbound(f, -1, 1) # знайти мінімум
           print argmin

           Iteration 1 x=-0.236068 y=0.055728
           Iteration 2 x=0.236068 y=0.055728
           Iteration 3 x=0.527864 y=0.278640
           Iteration 4 x=-0.000000 y=0.000000
           Iteration 5 x=0.000003 y=0.000000
           Iteration 6 x=0.000007 y=0.000000

           scipy.optimize.fmin_l_bfgs_b – оптимізація з границями методом
                                      L-BFGS-B

               Локальна  оптимізація  векторної  функції  (двох  змінних)
           популярним  квазі-ньютонівським  методом  L-BFGS-B,  який
           призначений для нелінійних задач із великою кількістю невідомих
           (http://en.wikipedia.org/wiki/Limited-memory_BFGS).   Інтерфейсом
           для  оптимізації  функції  однієї  або  багатьох  змінних  різними
           методами  є  minimize.  У  прикладі  шукається  мінімум  функції
                       в межах значень [-5, 5] змінних   і  .

           import numpy as np
           from scipy.optimize import minimize, fmin_l_bfgs_b
           def f(x): # функція двох змінних
               return x[0]**2+x[1]**2
           res=minimize(f, x0=[1.0, 1.0], method="L-BFGS-B",
           bounds=[(-5,5),(-5,5)])
           print res.x
           argmin = fmin_l_bfgs_b(f, x0=[1.0, 1.0], bounds=[(-
           5,5),(-5,5)], approx_grad=True) # або так
           print argmin[0]

           import matplotlib.pyplot as plt

                                         161
   157   158   159   160   161   162   163   164   165   166   167