SciPy, рдЕрдиреБрдХреВрд▓рди


SciPy (рд╕реНрдкрд╖реНрдЯ рд╕рд╛рдИ рдкрд╛рдИ) рдПрдХ рдЧрдгрд┐рддреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рдирдореНрдкреА рдкрд╛рдпрдерди рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред SciPy рдХреЗ рд╕рд╛рде, рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкрд╛рдпрдерди рд╕рддреНрд░ MATLAB, IDL, рдСрдХреНрдЯреЗрд╡, рдЖрд░-рд▓реИрдм рдФрд░ SciLab рдЬреИрд╕реА рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЬ рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ scipy.optimize рдкреИрдХреЗрдЬ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╕рд┐рджреНрдз рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рдЕрджреНрдпрддрд┐рдд рд╕рд╣рд╛рдпрддрд╛ рд╣рдореЗрд╢рд╛ рдорджрдж () рдХрдорд╛рдВрдб рдпрд╛ Shift + Tab рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


рдкрд░рд┐рдЪрдп


рд╕реНрд░реЛрдд рдХреА рдЦреЛрдЬ рдФрд░ рдкрдврд╝рдиреЗ рд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдФрд░ рдкрд╛рдардХреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд░реАрдХреЛрдВ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд▓рд┐рдВрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╣реЛрдВрдЧреЗред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЧрдгрд┐рддреАрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдзрд┐рдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдпрд╛ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рддреЛ, scipy.optimize рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИ:


  1. рд╡рд┐рднрд┐рдиреНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рдиреЗрд▓реНрдбрд░-рдореЗрдб рд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕, рдмреАрдПрдлрдЬреАрдПрд╕, рд╕рдВрдпреБрдЧреНрдо рдиреНрдпреВрдЯрди рдЧреНрд░реЗрдбрд┐рдПрдЯрд░реНрд╕ , COBYLA рдФрд░ SLSQP ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдЪрд░ (рдиреНрдпреВрдирддрдо) рдХреЗ рд╕реНрдХреЗрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕рд╢рд░реНрдд рдФрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд рдиреНрдпреВрдирддрдордХрд░рдг
  2. рдЧреНрд▓реЛрдмрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рдЙрджрд╛: рдмреЗрд╕рд┐рдирд╣реЛрдкрд┐рдВрдЧ , diff_evolution )
  3. рдЧреИрд░-рд░реИрдЦрд┐рдХ рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрдЧреЛрдВ (рдХрд░реНрд╡_рдлрд┐рдЯ) рдХреЗ рд▓рд┐рдП рдлрд┐рдЯрд┐рдВрдЧ рдШрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрдЧреЛрдВ (рд╕рдмрд╕реЗ рдХрдо рд╡рд░реНрдЧ ) рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрд╡рд╢реЗрд╖ рдХрд╛ рдиреНрдпреВрдирддрдордХрд░рдг
  4. рдПрдХ рдЪрд░ (рдорд┐рдирд┐рдордо_рд╕реНрдХрд▓рд░) рдХреЗ рд╕реНрдХреЗрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХрдо рдХрд░рдирд╛ рдФрд░ рдЬрдбрд╝реЛрдВ (root_scalar) рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛
  5. рд╡рд┐рднрд┐рдиреНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рд╣рд╛рдЗрдмреНрд░рд┐рдб рдкреЙрд╡реЗрд▓, рд▓реЗрд╡реЗрдирдмрд░реНрдЧ-рдорд╛рд░реНрдХреНрд╡рд╛рд░реНрдб рдпрд╛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рддрд░реАрдХреЛрдВ, рдЬреИрд╕реЗ рдиреНрдпреВрдЯрди- рдХреНрд░рд┐рд▓реЛрд╡ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореАрдХрд░рдгреЛрдВ (рд░реВрдЯ) рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╣реБрдЖрдпрд╛рдореА рд╕реЙрд▓реНрд╡рд░ред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕ рдкреВрд░реА рд╕реВрдЪреА рд╕реЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЖрдЗрдЯрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред


рдХрдИ рдЪрд░ рдХреЗ рдЕрджрд┐рд╢ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдиреНрдпреВрдирддрдордХрд░рдг


Scipy.optimize рдкреИрдХреЗрдЬ рд╕реЗ рдиреНрдпреВрдирддрдо рдлрд╝рдВрдХреНрд╢рди рдХрдИ рдЪрд░ рдХреЗ рд╕реНрдХреЗрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕рд╢рд░реНрдд рдФрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд рдиреНрдпреВрдирддрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдИ рдЪрд░реЛрдВ рдХреЗ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВрдЧреЗред


рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, N рдЪрд░реЛрдВ рдХрд╛ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд░реВрдк рд╣реИ:


f l e f t ( m a t h b f x r i g h t ) = s u m N - 1 i = 1 [ 100 l e f t ( x i + 1 - x 2 i r i g h h t ) 2 + рдм рд╛ рдп рд╛ рдВ ( 1 - рдПрдХреНрд╕       i right)2]


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рдЬреИрдХреЛрдмреА рдФрд░ рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рд╕реЗрд╕ (рдХреНрд░рдорд╢рдГ рдкрд╣рд▓рд╛ рдФрд░ рджреВрд╕рд░рд╛ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡), рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдХрд╛рдЗрдк рдореЗрдВ рд╣реИрдВред рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдирд╛рдирд╛, рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


import numpy as np def rosen(x): """The Rosenbrock function""" return np.sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0, axis=0) 

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдЪрд░ рдХреЗ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ 3 рдбреА рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЛрдб
 from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter #  3D  fig = plt.figure(figsize=[15, 10]) ax = fig.gca(projection='3d') #    ax.view_init(45, 30) #     X = np.arange(-2, 2, 0.1) Y = np.arange(-1, 3, 0.1) X, Y = np.meshgrid(X, Y) Z = rosen(np.array([X,Y])) #   surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm) plt.show() 


рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЬрд╛рдирдирд╛ рдХрд┐ рдиреНрдпреВрдирддрдо 0 рдХреЗ рд▓рд┐рдП рд╣реИ xi=1 , рд╡рд┐рднрд┐рдиреНрди scipy.optimize рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


рдиреЗрд▓реНрдбрд░-рдореАрдб рд╕рд┐рдореНрдкрд▓реЗрдХреНрд╕ рд╡рд┐рдзрд┐ (рдиреЗрд▓реНрдбрд░-рдореАрдб)


5-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ x0 рд╣реЛрдиреЗ рджреЗрдВред рдиреЗрд▓реНрдбрд░-рдореАрдб рд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд┐рдХрдЯрддрдо рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдиреНрдпреВрдирддрдо рдмрд┐рдВрджреБ рдвреВрдВрдвреЗрдВ (рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ):


 from scipy.optimize import minimize x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2]) res = minimize(rosen, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True}) print(res.x) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 339 Function evaluations: 571 [1. 1. 1. 1. 1.] 

рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдХрд╛рдлреА рдЪрд┐рдХрдиреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рдХреА рдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╕рд░рд▓ рдиреНрдпреВрдирддрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдиреЗрд▓реНрдбрд░-рдореАрдб рд╡рд┐рдзрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреВрдВрдХрд┐ рдпрд╣ рдврд╛рд▓ рдЕрдиреБрдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред


рдкрд╛рд╡реЗрд▓ рд╡рд┐рдзрд┐


рдПрдХ рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ , рдкреЙрд╡реЗрд▓ рд╡рд┐рдзрд┐ рд╣реИ ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдиреНрдпреВрдирддрдо рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд┐рдзрд┐ = 'рдкреЙрд╡реЗрд▓' рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


 x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2]) res = minimize(rosen, x0, method='powell', options={'xtol': 1e-8, 'disp': True}) print(res.x) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 19 Function evaluations: 1622 [1. 1. 1. 1. 1.] 

рдмреНрд░реЛрдпрдбреЗрди-рдлреНрд▓реЗрдЪрд░-рдЧреЛрд▓реНрдбрдлрд░реНрдм-рдЪрдиреНрдиреЛ рдПрд▓реНрдЧреЛрд░рд┐рдердо (BFGS)


рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ рдЕрднрд┐рд╕рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, BFGS рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдврд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдкрд╣рд▓реЗ-рдХреНрд░рдо рдХреЗ рдЕрдВрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ BFGS рд╡рд┐рдзрд┐ рдХреЛ рд╕рд┐рдВрдкрд▓ рд╡рд┐рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд░реВрдк рдореЗрдВ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдкрд╛рддреЗ рд╣реИрдВ:


 frac рдЖрдВрд╢рд┐рдХf рдЖрдВрд╢рд┐рдХxj= sum limitNi=1200(xiтИТx2iтИТ1)( deltai,j/2xiтИТ1,j)тИТ2(1тИТxiтИТ1) deltaiтИТ1,j=


=200(xjтИТx2jтИТ1)тИТ400xj(xj+1тИТx2j)тИТ2(1тИТxj)


рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЪрд░ рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 frac рдЖрдВрд╢рд┐рдХf рдЖрдВрд╢рд┐рдХx0=тИТ400x0(x1тИТx20)тИТ2(1тИТx0),


 frac рдЖрдВрд╢рд┐рдХf рдЖрдВрд╢рд┐рдХxNтИТ1=200(xNтИТ1тИТx2NтИТ2)ред


рдЖрдЗрдП рдЗрд╕ рдХреНрд░рдорд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдпрдерди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ:


 def rosen_der (x): xm = x [1: -1] xm_m1 = x [: - 2] xm_p1 = x [2:] der = np.zeros_like (x) der [1: -1] = 200 * (xm-xm_m1 ** 2) - 400 * (xm_p1 - xm ** 2) * xm - 2 * (1-xm) der [0] = -400 * x [0] * (x [1] -x [0] ** 2) - 2 * (1-x [0]) der [-1] = 200 * (x [-1] -x [-2] ** 2) return der 

рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдиреНрдпреВрдирддрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЬрд╛рд╡рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


 res = minimize(rosen, x0, method='BFGS', jac=rosen_der, options={'disp': True}) print(res.x) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 25 Function evaluations: 30 Gradient evaluations: 30 [1.00000004 1.0000001 1.00000021 1.00000044 1.00000092] 

рд╕рдВрдпреБрдЧреНрдорд┐рдд рд╕реНрдирд╛рддрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рдиреНрдпреВрдЯрди)


рдиреНрдпреВрдЯрди рд╕рдВрдпреБрдЧреНрдордХ рдврд╛рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдиреНрдпреВрдЯрди рд╡рд┐рдзрд┐ рд╣реИред
рдиреНрдпреВрдЯрди рдХреА рд╡рд┐рдзрд┐ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреВрд╕рд░реА рдбрд┐рдЧреНрд░реА рдХреЗ рдПрдХ рдмрд╣реБрдкрдж рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:


f left( mathbfx right) рд▓рдЧрднрдЧf left( mathbfx0 right)+ nablaf left( mathbfx0/рджрд╛рдПрдБ) cdot left( mathbfxтИТ mathbfx0 right)+ frac12 left( mathbfxтИТ mathbfx0) right)T mathbfH left( mathbfx0 right) left( mathbfxтИТ mathbfx0 right)$


рдЬрд╣рд╛рдБ  mathbfH left( mathbfx0 right) рджреВрд╕рд░рд╛ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ (рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕, рд╣реЗрд╕рд┐рдпрди) рдХрд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИред
рдпрджрд┐ рд╣реЗрд╕рд┐рдпрди рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ, рддреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрдерд╛рдиреАрдп рдиреНрдпреВрдирддрдо рдХреЛ рджреНрд╡рд┐рдШрд╛рдд рд░реВрдкрд╛рдВрддрд░ рдХреЗ рд╢реВрдиреНрдп рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рдХрд░рдХреЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ:


 mathbfx textrmopt= mathbfx0тИТ mathbfHтИТ1 nablaf


рдЙрд▓рдЯрд╛ рд╣реЗрд╕рд┐рдпрди рдХреА рдЧрдгрдирд╛ рд╕рдВрдпреБрдЧреНрдо рдврд╛рд▓ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИред рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреНрдпреВрдЯрди-рд╕реАрдЬреА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╣реЗрд╕рд┐рдпрди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд░реВрдк рдореЗрдВ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╣реЗрд╕рд┐рдпрди рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:


Hi,j= frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХxixj=200( deltai,jтИТ2xiтИТ1 deltaiтИТ1,jтИТ)400xi( deltai+1,jтИТ2xi deltai,j)тИТ400 deltai,j(xi+1тИТx2i)2"2рдбреЗрд▓реНрдЯрд╛=i,j=


=(202+1200x2iтИТ400xi+1) deltai,jтИТ400xi deltai+1,jтИТ400xiтИТ1deltaiтИТ1,j


рдЬрд╣рд╛рдБ i,j in[left[1,NтИТ2 right] рдФрд░ i,j in left[0,NтИТ1 right] рдореИрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдПрди Nрдмрд╛рд░ ред


рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╢реЗрд╖ рдиреЙрдирдЬрд╝рд░реЛ рддрддреНрд╡ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ:


 frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХx20=1200x20тИТ400x1/2


 frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХx0x1= frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХx1x0=тИТ400x0


 frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХxNтИТ1xNтИТ2= frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХxNтИТ2xNтИТ1=тИТ400xNтИТ2


 frac рдЖрдВрд╢рд┐рдХ2f рдЖрдВрд╢рд┐рдХx2NтИТ1=200x


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдВрдЪ рдЖрдпрд╛рдореА рд╕реНрдерд╛рди N = 5 рдореЗрдВ, рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдЯреЗрдк рд░реВрдк рд╣реИ:


\ small \ mathbf {H} = \ start {bmatrix} 1200x_ {0} ^ {2} -400x_ {1} +2 & -400x_ {0} & 0 & 0 & 0 \\ -400x_ {0} & 202 + 1200x_ {1} ^ {2} -400x_ {2} & -400x_ {1} & 0 & 0 \\ 0 & -400x_ {1} & 202 + 1200x_ {2} ^ {2} -400x_ {3} & -400x_ {2} & 0 \\ 0 & -400x_ {2} & 202 + 1200x_ {3} ^ {2} -400x_ {4} & -400x_ {3} \\ 0 & 0 & 0 & -400x_ { 3} & 200 \ рдЕрдВрдд {bmatrix}


рдХреЛрдб рдЬреЛ рдЗрд╕ рд╣реЗрд╕реНрд╕рд┐рдпрди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреЗ рд╕рд╛рде рд░реВрдЬреЗрдирдмреНрд░реИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдпреБрдЧреНрдо рдврд╛рд▓ рд╡рд┐рдзрд┐ (рдиреНрдпреВрдЯрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:


 def rosen_hess(x): x = np.asarray(x) H = np.diag(-400*x[:-1],1) - np.diag(400*x[:-1],-1) diagonal = np.zeros_like(x) diagonal[0] = 1200*x[0]**2-400*x[1]+2 diagonal[-1] = 200 diagonal[1:-1] = 202 + 1200*x[1:-1]**2 - 400*x[2:] H = H + np.diag(diagonal) return H res = minimize(rosen, x0, method='Newton-CG', jac=rosen_der, hess=rosen_hess, options={'xtol': 1e-8, 'disp': True}) print(res.x) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 24 Function evaluations: 33 Gradient evaluations: 56 Hessian evaluations: 24 [1. 1. 1. 0.99999999 0.99999999] 

рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдХрд╛рд░реНрдп рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ, рдкреВрд░реЗ рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЧрдгрдирд╛ рдФрд░ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рд╕реНрдореГрддрд┐ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдиреНрдпреВрдирддрдордХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЕрдиреНрдп рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдмрд┐рдВрджреБ рд╕реЗ, рдпрд╣ рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред


рд╣реЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдиреНрдпреВрдирддрдо рд╡реЗрдХреНрдЯрд░ рдФрд░ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ (рдиреНрдпреВрдирддрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдиреНрдп рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде) рд▓реЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣реЗрд╕реНрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдкреА рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИ, рддреЛ рдЙрддреНрдкрд╛рдж H(x) cdotp рдлрд╛рд░реНрдо рд╣реИ:


\ mathbf {H} \ left (\ mathbf {x} \ right) \ mathbf {p} = \ start {bmatrix} \ left (1200x_ {0} ^ {2} -400x_ {1} # 2 \ рд╕рд╣реА) p_ {0} -400x_ {0} p_ {1} \\ \ vdots \\ -400x_ {i-1} p_ {i-1} + \ left (202 + 1200x_ {i} ^ {2} -400x_ {i +) 1} \ right) p_ {i} -400x_ {i} p_ {i + 1} \\ \ vdots \\ -400x_ {N-2} p_ {N-2} + 200p_ {N-1 \ "{bmatrix }ред


рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╣реЗрд╕реНрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП hessp рддрд░реНрдХ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 def rosen_hess_p(x, p): x = np.asarray(x) Hp = np.zeros_like(x) Hp[0] = (1200*x[0]**2 - 400*x[1] + 2)*p[0] - 400*x[0]*p[1] Hp[1:-1] = -400*x[:-2]*p[:-2]+(202+1200*x[1:-1]**2-400*x[2:])*p[1:-1] \ -400*x[1:-1]*p[2:] Hp[-1] = -400*x[-2]*p[-2] + 200*p[-1] return Hp res = minimize(rosen, x0, method='Newton-CG', jac=rosen_der, hessp=rosen_hess_p, options={'xtol': 1e-8, 'disp': True}) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 24 Function evaluations: 33 Gradient evaluations: 56 Hessian evaluations: 66 

рд╕рдВрдпреБрдЧреНрдо рдЧреНрд░реЗрдбрд┐рдПрдЯрд░реНрд╕ рдХрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреНрд╖реЗрддреНрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рдиреНрдпреВрдЯрди)


рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдФрд░ рдЧрд▓рдд рдЦреЛрдЬ рдирд┐рд░реНрджреЗрд╢ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдпреБрдЧреНрдо рдиреНрдпреВрдЯрди рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдиреНрдпреВрдЯрди рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЛ рд╕рдВрдпреБрдЧреНрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреНрд╖реЗрддреНрд░ рдкрджреНрдзрддрд┐ рдХреЛ рджреА рдЬрд╛рддреА рд╣реИ ред


рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдЙрджрд╛рд╣рд░рдг:


 res = minimize(rosen, x0, method='trust-ncg', jac=rosen_der, hess=rosen_hess, options={'gtol': 1e-8, 'disp': True}) print(res.x) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 20 Function evaluations: 21 Gradient evaluations: 20 Hessian evaluations: 19 [1. 1. 1. 1. 1.] 

рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рд╕рдорд╛рд░реЛрд╣ рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 res = minimize(rosen, x0, method='trust-ncg', jac=rosen_der, hessp=rosen_hess_p, options={'gtol': 1e-8, 'disp': True}) print(res.x) 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 20 Function evaluations: 21 Gradient evaluations: 20 Hessian evaluations: 0 [1. 1. 1. 1. 1.] 

рдХреНрд░рд╛рдпрд▓реЛрд╡реНрд╕реНрдХреА рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЗ


рдЯреНрд░рд╕реНрдЯ-рдПрдирд╕реАрдЬреА рд╡рд┐рдзрд┐ рдХреА рддрд░рд╣, рдХреНрд░рд┐рд▓реЛрд╡реНрд╕реНрдХреА-рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рд╕рд╛рд░ рддреНрд░рд╕реНрдд рдХреНрд░рд╛рдпрд▓реЛрд╡ рдЙрдк-рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдЧреЛрдкрдиреАрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╣реИред рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯреНрд░рд╕реНрдЯ-рдПрдирд╕реАрдЬреА рд╡рд┐рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рддрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдХрдо рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЧреИрд░-рд░реИрдЦрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЯреНрд░рд╕реНрдЯ-рдПрдирд╕реАрдЬреА рд╡рд┐рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреНрд╡рд┐рдШрд╛рдд рдЙрдкрд╕рдореВрд╣ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реИред
рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдЙрджрд╛рд╣рд░рдг:


 res = minimize(rosen, x0, method='trust-krylov', jac=rosen_der, hess=rosen_hess, options={'gtol': 1e-8, 'disp': True}) Optimization terminated successfully. Current function value: 0.000000 Iterations: 19 Function evaluations: 20 Gradient evaluations: 20 Hessian evaluations: 18 print(res.x) [1. 1. 1. 1. 1.] 

рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рд╕рдорд╛рд░реЛрд╣ рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 res = minimize(rosen, x0, method='trust-krylov', jac=rosen_der, hessp=rosen_hess_p, options={'gtol': 1e-8, 'disp': True}) Optimization terminated successfully. Current function value: 0.000000 Iterations: 19 Function evaluations: 20 Gradient evaluations: 20 Hessian evaluations: 0 print(res.x) [1. 1. 1. 1. 1.] 

рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдорд╛рдирд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо


рд╕рднреА рддрд░реАрдХреЗ (рдиреНрдпреВрдЯрди-рд╕реАрдЬреА, рдЯреНрд░рд╕реНрдЯ-рдПрдирд╕реАрдЬреА рдФрд░ рдЯреНрд░рд╕реНрдЯ-рдХреНрд░рд┐рд▓реЛрд╡) рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ (рд╣рдЬрд╛рд░реЛрдВ рдЪрд░ рдХреЗ рд╕рд╛рде) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕рдВрдпреБрдЧреНрдо рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЙрд▓рдЯрд╛ рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рдирд┐рд░реНрдзрд╛рд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣реЗрд╕рд┐рдпрди рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЕрдкрдШрдЯрди рдХреЗ рдмрд┐рдирд╛, рд╕рдорд╛рдзрд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реИред рдЪреВрдВрдХрд┐ рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд░рд▓ (рдЯреЗрдк рд╡рд┐рдХрд░реНрдг) рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣ рдХрдо рдореЗрдореЛрд░реА рд▓рд╛рдЧрдд рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордп рдХреА рдмрдЪрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ, рд╣реЗрд╕рд┐рдпрди рдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рд▓рд╛рдЧрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЯреНрд░рд╕реНрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЛ рд▓рдЧрднрдЧ рдмрд┐рд▓реНрдХреБрд▓ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рджреНрд╡рд┐рдШрд╛рдд рд╕рдореАрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рджреНрд╡рд┐рдШрд╛рдд рдЙрдкрд╡рд╛рдХреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдп рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рд╣реЛрд▓рд╕ рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ 3 рдпрд╛ 4 рд╡рд┐рдШрдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдирддреАрдЬрддрди, рд╡рд┐рдзрд┐ рдХрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдбреЛрдореЗрди рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА рдХрдо рдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗрд╡рд▓ рдкреВрд░реНрдг рд╣реЗрд╕рд┐рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдФрд░ рд╣реЗрд╕рд┐рдпрди рдХреЗ рдЙрддреНрдкрд╛рдж рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


рд░реЛрд╕реЗрдирдмреНрд░реЙрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 res = minimize(rosen, x0, method='trust-exact', jac=rosen_der, hess=rosen_hess, options={'gtol': 1e-8, 'disp': True}) res.x 

 Optimization terminated successfully. Current function value: 0.000000 Iterations: 13 Function evaluations: 14 Gradient evaluations: 13 Hessian evaluations: 14 array([1., 1., 1., 1., 1.]) 

рдпрд╣, рд╢рд╛рдпрдж, рдирд┐рд╡рд╛рд╕реАред рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рд╢рд░реНрдд рдиреНрдпреВрдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд╕рдиреНрдирд┐рдХрдЯрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдиреНрдпреВрдирддрдордХрд░рдг рдХрд╛ рдЖрд╡реЗрджрди, рдПрдХ рдЪрд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдХрдо рдХрд░рдирд╛, рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдиреНрдпреВрдирддрдо рдХрд░рдирд╛ рдФрд░ рд╕реНрдХреИрдкреА рдХреЛ рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреА рдЬрдбрд╝реЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ред рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рд╕реНрд░реЛрдд: https://docs.scipy.org/doc/scipy/reference/

Source: https://habr.com/ru/post/hi439288/


All Articles