SciPy (แแแแแแแฅแแแก sai pie) แแ แแก แแแแแแแขแแแฃแ แ แแแแแแแชแแแก แแแแแขแ, แ แแแแแแช แแแคแฃแซแแแแฃแแแ Numpy Python แแแคแแ แแแแแแแ. SciPy-แแ, แแฅแแแแ แแแขแแ แแฅแขแแฃแแ Python แกแแกแแ แฎแแแแ แแแแแ แกแ แฃแแ แแแแแชแแแแ แแแชแแแแ แแแ แแ แ แแฃแแ แกแแกแขแแแแก แแ แแขแแขแแแแแแก แแแ แแแ, แ แแแแ แช MATLAB, IDL, Octave, R-Lab แแ SciLab. แแฆแแก แแแแแ แแแแแแ แแแกแแฃแแ แ แแแแแ, แแฃ แ แแแแ แแแแแแแงแแแแ แแแแแแ แแ แชแแแแแแ แแแขแแแแแแชแแแก แแแแแ แแแแ scipy.optimize แแแแแขแจแ. แฃแคแ แ แแแขแแแฃแ แ แแ แแแแแฎแแแแฃแแ แแแฎแแแ แแแ แคแฃแแฅแชแแแแแก แแแแแงแแแแแแกแแแ แแแแแแจแแ แแแแ แงแแแแแแแแก แจแแแแซแแแแ แแแแฆแแ help() แแ แซแแแแแแก แแ Shift+Tab-แแก แแแแแงแแแแแแ.
แจแแกแแแแแ
แแแแกแแแแแก, แ แแ แแแแชแแแ แแแแ แแ แแแแแฎแแแแแแ แแแ แแแแแแ แฌแงแแ แแแแแก แซแแแแแกแ แแ แฌแแแแแฎแแแกแแแ, แแแแแแแแแก แแฆแฌแแ แแแแแแก แแแฃแแแแ แซแแ แแแแแแ แแแแแแแแแแจแ แแฅแแแแ. แ แแแแ แช แฌแแกแ, แแก แแแคแแ แแแชแแ แกแแแแแ แแกแแ แแแแแแแแแก แแแแแแ แแแแแกแแแ แแกแแ แแ แแแแ แแแแแงแแแแแแก แแแ แแแแแแก แแแกแแแแแแ. แแแแแแแขแแแฃแ แ แแแแแแแแแก แแ แกแแก แแแกแแแแแแ, แแแฐแงแแแแ แฃแคแ แ แแแขแแ แแขแแขแฃแแ แแฃแแแแแแชแแแแแก แแแฃแแแแก, แ แแแแแแแช แจแแแแซแแแแ แแฎแแแแ แงแแแแแ แกแขแแขแแแก แแแแแก แแ แแฅแแแแก แกแแงแแแ แแ แกแแซแแแแ แกแแกแขแแแแจแ.
แแกแ แ แแ, scipy.optimize แแแแฃแแ แแแแชแแแก แจแแแแแแ แแ แแชแแแฃแ แแแแก แแแแฎแแ แชแแแแแแแก:
- แ แแแแแแแแ แชแแแแแแก (แแแแแแแแฃแ แ) แกแแแแแ แฃแแ แคแฃแแฅแชแแแแแก แแแ แแแแแ แแ แฃแแแ แแแ แแแแแแแแแชแแ แกแฎแแแแแกแฎแแ แแแแแ แแแแแแแก แแแแแงแแแแแแ (Nelder-Mead simplex, BFGS, Newton conjugate gradients,
แแแแแแ ะธSLSQP ) - แแแแแแแฃแ แ แแแขแแแแแแชแแ (แแแแแแแแแ:
แแแกแแแฐแแแแแแ ,diff_evolution ) - แแแ แฉแแแแแแก แแแแแแแแแชแแ
MNC (แฃแแชแแ แแกแ_แแแแแ แแขแแแ) แแ แแ แฃแแแก แแแ แแแแแก แแแแแ แแแแแแ แแ แแฌแ แคแแแ แฃแแชแแ แแกแ แแแแแ แแขแแแแก แแแแแงแแแแแแ (curve_fit) - แแ แแ แชแแแแแแก แกแแแแแ แฃแแ แคแฃแแฅแชแแแแแก แแแแแแแแแชแแ (minim_scalar) แแ แคแแกแแแแแก แซแแแแ (root_scalar)
- แแแแขแแแแแแแ แกแแกแขแแแแก แแ แแแแแแแแแแแแแแแแแแ แแแแแฎแกแแแแแแ (แคแแกแแ) แกแฎแแแแแกแฎแแ แแแแแ แแแแแแแก แแแแแงแแแแแแ (แฐแแแ แแแฃแแ แแแฃแแแ,
แแแแแแแแ แ-แแแ แแแแ แขแ แแ แคแแ แแแแแกแจแขแแแแแแ แแแแแแแแ, แ แแแแ แแชแแแแแฃแขแแ-แแ แแแแแ ).
แแ แกแขแแขแแแจแ แแแแแแฎแแแแแ แแฎแแแแ แแแ แแแ แแฃแแฅแขแก แแแแแ แกแแแแแ.
แ แแแแแแแแ แชแแแแแแก แกแแแแแ แฃแแ แคแฃแแฅแชแแแก แฃแแแ แแแ แแแแแแแแแชแแ
แแแแแแแแฃแ แ แคแฃแแฅแชแแ scipy.optimize แแแแแขแแแแ แฃแแ แฃแแแแแงแแคแก แแแแแ แแแขแแ แคแแแกแก แ แแแแแแแแ แชแแแแแแก แกแแแแแ แฃแแ แคแฃแแฅแชแแแแแก แแแ แแแแแ แแ แฃแแแ แแแ แแแแแแแแแชแแแก แแ แแแแแแแแแก แแแแแกแแญแ แแแแ. แแแแก แแแแแแกแขแ แแ แแแแกแแแแก, แแฃ แ แแแแ แแฃแจแแแแก, แแแแแญแแ แแแแ แ แแแแแแแแ แชแแแแแแก แจแแกแแแแแแกแ แคแฃแแฅแชแแ, แ แแแแแกแแช แแแแแแแแแชแแแก แแแฎแแแแ แกแฎแแแแแกแฎแแ แแแแ.
แแ แแแแแแแแกแแแแแก แกแ แฃแแงแแคแแแแ N แชแแแแแแก แ แแแแแแ แแแแก แคแฃแแฅแชแแ, แ แแแแแกแแช แแฅแแก แคแแ แแ:
แแแฃแฎแแแแแแ แแแแกแ, แ แแ Rosenbrock แคแฃแแฅแชแแ แแ แแแกแ Jacobi แแ Hessian แแแขแ แแชแแแ (แแแ แแแแ แแ แแแแ แ แฌแแ แแแแแฃแแ, แจแแกแแแแแแกแแ) แฃแแแ แแแแกแแแฆแแ แฃแแแ scipy.optimize แแแแแขแจแ, แฉแแแ แแแแแแ แแแแแกแแแฆแแ แแแ แแแก.
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)
แกแแชแฎแแแแกแแแแก, แแแแแ แแแแฎแแขแแ 3D-แจแ แแ แ แชแแแแแแก แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แแแแจแแแแแแแแแ.
แแแฎแแขแแก แแแแ
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 at , แแแแแ แจแแแฎแแแแ แแแแแแแแแแก, แแฃ แ แแแแ แแแแแกแแแฆแแ แแ Rosenbrock แคแฃแแฅแชแแแก แแแแแแแแฃแ แ แแแแจแแแแแแแ แกแฎแแแแแกแฎแแ scipy.optimize แแ แแชแแแฃแ แแแแก แแแแแงแแแแแแ.
Nelder-Mead simplex แแแแแแ
0-แแแแแแแแแแแแแ แกแแแ แชแแจแ แแงแแก แกแแฌแงแแกแ แฌแแ แขแแแ x5. แแแแแแแ แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แแแกแแแ แงแแแแแแ แแฎแแแก แแงแแคแ แแแแแแแแฃแ แ แฌแแ แขแแแ แแแแแ แแแแแก แแแแแงแแแแแแ
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.]
แกแแแแแแฅแกแแก แแแแแแ แแ แแก แงแแแแแแ แแแ แขแแแ แแแ แแจแแแ แแ แแแแกแแแฆแแ แฃแแ แแ แกแแแแแแ แแแฃแแ แคแฃแแฅแชแแแก แจแแกแแแชแแ แแแแแ. แแก แแ แกแแญแแ แแแแก แคแฃแแฅแชแแแก แฌแแ แแแแแฃแแแแแก แแแแแแแแแก, แกแแแแแ แแกแแ แแฎแแแแ แแแกแ แแแแจแแแแแแแแแแก แแแแแแแแ. Nelder-Mead แแแแแแ แแแ แแ แแ แฉแแแแแแ แแแ แขแแแ แแแแแแแแแชแแแก แแ แแแแแแแแแกแแแแก. แแฃแแชแ, แ แแแแแ แแก แแ แแงแแแแแก แแ แแแแแแขแฃแ แจแแคแแกแแแแแก, แจแแแซแแแแ แแแขแ แแ แ แแแกแญแแ แแแก แแแแแแฃแแแก แแแแแแก.
แแแฃแแแแก แแแแแแ
แแ แแก แแแแแ แแ แแ แแแขแแแแแแชแแแก แแแแแ แแแแ, แ แแแแแจแแช แแแแแแแแแแแ แแฎแแแแ แคแฃแแฅแชแแแก แแแแจแแแแแแแแแ
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) แแแแแ แแแแ
แแแแแกแแแแแแแ แฃแคแ แ แกแฌแ แแคแ แแแแแแ แแแแชแแแก แแแกแแฆแแแแ แแ แแชแแแฃแ แ
แแแแแ แแแแแแแ แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แฌแแ แแแแแฃแแ แแแแแแขแแแฃแ แ แคแแ แแแ:
แแก แแแแแแฅแแ แแแฅแแแแแแก แงแแแแ แชแแแแแแก แฌแแ แแแแแฃแแแแแกแแแแก, แแแ แแ แแแ แแแแแกแ แแ แฃแแแแแกแแแแแแกแ, แ แแแแแแแช แแแแแกแแแฆแแ แแแ แ แแแแ แช:
แแแแแ แจแแแฎแแแแ แแแแแแแก แคแฃแแฅแชแแแก, แ แแแแแแช แแแแแแก แแ แแ แแแแแแขแก:
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
แแ แแแแแแขแแก แแแแแแแแแก แคแฃแแฅแชแแ แแแแแแแแฃแแแ แแแแแแแแฃแ แ แคแฃแแฅแชแแแก jac แแแ แแแแขแ แแก แแแแจแแแแแแแแ, แ แแแแ แช แแก แแแฉแแแแแแแ แฅแแแแแ.
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]
แแแแแฃแแแขแฃแ แ แแ แแแแแแขแแก แแแแแ แแแแ (แแแฃแขแแแ)
แแแแแ แแแแ
แแแฃแขแแแแก แแแแแแ แแแงแแ แแแ แแแแแแฃแ แแ แแจแ แคแฃแแฅแชแแแก แแแแฎแแแแแแก แแแแ แ แฎแแ แแกแฎแแก แแ แแแแแฌแแแ แแ:
แกแแแแช แแ แแก แแแแ แ แฌแแ แแแแแฃแแแแแก แแแขแ แแชแ (Hessian matrix, Hessian).
แแฃ แฐแแกแแแแ แแแแแแแแ แแแแกแแแฆแแ แฃแแแ, แแแจแแ แแ แคแฃแแฅแชแแแก แแแแแแฃแ แ แแแแแแฃแแแก แแแแแ แจแแกแแซแแแแแแแ แแแแแ แแขแฃแแ แคแแ แแแก แแฃแแแแแแ แแ แแแแแแขแแก แแฃแแแแ แแแแแแแแ แแแแ. แจแแแแแ แแฅแแแแ แแแแแฎแแขแฃแแแแ:
แแแแแ แกแแฃแแ แฐแแกแแแแ แแแแแแแแแแแ แแแแแฃแแแขแฃแ แ แแ แแแแแแขแแก แแแแแแแ. แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แจแแกแแแชแแ แแแแแ แแ แแแแแแแก แแแแแงแแแแแแก แแแแแแแแ แแแชแแแฃแแแ แฅแแแแแ. Newton-CG แแแแแแแก แแแแแกแแงแแแแแแแ, แแฅแแแ แฃแแแ แแแฃแแแแแ แคแฃแแฅแชแแ, แ แแแแแแช แแแแแแก แฐแแกแแแแก.
แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แฐแแกแแแแ แแแแแแขแแแฃแ แ แคแแ แแแ แฃแแ แแก:
แกแแแแช ะธ , แแแแกแแแฆแแ แแ แแแขแ แแชแ .
แแแขแ แแชแแก แแแ แฉแแแแแ แแ แแแฃแแแแแแ แแแแแแแขแแแ แฃแแ แแก:
แแแแแแแแแ, แฎแฃแแแแแแแแแแแแแแ แกแแแ แชแแจแ N = 5, แฐแแกแแแ แแแขแ แแชแแก แ แแแแแแ แแแแก แคแฃแแฅแชแแแกแแแแก แแฅแแก แแแแแก แคแแ แแ:
แแแแ, แ แแแแแแช แแแแแแก แแ แฐแแกแแแแก แแแแแแ แแ แแแ แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แแแแแแแแแชแแแกแแแแก แแแแแฃแแแ แแแฃแแ แแ แแแแแแขแแก (แแแฃแขแแแ) แแแแแแแก แแแแแงแแแแแแ:
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]
แแแแแแแแ แฐแแกแแแแแก แแ แแแฃแฅแขแแก แคแฃแแฅแชแแแก แแแแกแแแฆแแ แแ แแ แแแแแแแแฃแ แ แแแฅแขแแ แแ
แ แแแแฃแ แกแแแงแแ แแจแ แแ แกแแแฃแ แแ แแแแแแแแจแ, แแแแแ แฐแแกแแแแฃแ แ แแแขแ แแชแแก แแแแแแแแแกแ แแ แจแแแแฎแแแก แจแแแซแแแแ แแแกแญแแ แแแก แแแแจแแแแแแแแแ แแ แ แแ แแแฎแกแแแ แแแแก แ แแกแฃแ แกแแแ. แแ แจแแแแฎแแแแแจแ, แ แแแแฃแ แแ แแ แแ แแก แกแแญแแ แ แแแแแ แฐแแกแแแแฃแ แ แแแขแ แแชแแก แแแแฃแกแขแแแ, แ แแแแแ แแแแแแแแแชแแแก แแ แแชแแแฃแ แ แแแแแฎแแแก แแฎแแแแ แแแฅแขแแ แก, แ แแแแแแช แขแแแแ แฐแแกแแแแแก แแแแ แแแแก แกแฎแแ แแแแแแแแฃแ แแแฅแขแแ แแแ. แแแ แแแแ, แแแแแแแแแแ แแแแแกแแแ แแกแแ, แแแชแแแแแแ แกแแกแฃแ แแแแแ แแแฃแงแแแแแแแแ แแแแแกแแแฆแแ แแก แคแฃแแฅแชแแ, แ แแแแแแช แแแ แฃแแแแก แฐแแกแแแแแก แแแแ แแแแแก แจแแแแแก แแแแแแแแฃแ แ แแแฅแขแแ แแ.
แแแแแแฎแแแแ แฐแแกแแก แคแฃแแฅแชแแ, แ แแแแแแช แแแ แแแ แแ แแฃแแแแขแแ แแฆแแแก แแแแแแแแแชแแแก แแแฅแขแแ แก, แฎแแแ แแแแ แ แแ แแฃแแแแขแแ แแแแแแแแฃแ แแแฅแขแแ แก (แแแแแแแแแ แแแฃแแ แคแฃแแฅแชแแแก แกแฎแแ แแ แแฃแแแแขแแแแแ แแ แแแ). แฉแแแแก แจแแแแฎแแแแแจแ, แ แแแแแแ แแแแก แคแฃแแฅแชแแแก แฐแแกแแแแแก แแแแ แแแแแก แแแแแแแแ แแแแแแแแฃแ แ แแแฅแขแแ แแ แแ แแ แแก แซแแแแแ แ แแฃแแ. แแฃ p แแ แแก แแแแแแแแฃแ แ แแแฅแขแแ แ, แจแแแแแ แแ แแแฃแฅแขแ แแฅแแก แคแแ แแ:
แคแฃแแฅแชแแ, แ แแแแแแช แแแแแแก แฐแแกแแแแฃแ แ แแ แแแแแแแแฃแ แ แแแฅแขแแ แแก แแแแ แแแแก, แแแแแแชแแแ แ แแแแ แช แฐแแกแแแก แแ แแฃแแแแขแแก แแแแจแแแแแแแ แแแแแแแแแชแแแก แคแฃแแฅแชแแแก:
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.]
แแ แแแแแแก แขแแแแก แแแแแแแแ
แแแแแ-ncg แแแแแแแก แแกแแแแกแแ, แแ แแแแแแก แขแแแแก แแแแแแแแ แแแ แแแ แแ แแก แจแแกแแคแแ แแกแ แคแแ แแแแแกแจแขแแแแแแ แแ แแแแแแแแแก แแแแแกแแญแ แแแแ, แ แแแแแ แแกแแแ แแงแแแแแแ แแฎแแแแ แแแขแ แแชแฃแ-แแแฅแขแแ แฃแ แแ แแแฃแฅแขแแแก. แแแแ แแ แกแ แแ แแก แแ แแแแแแแก แแแแแญแ แ แแแแแแก แ แแแแแแจแ, แ แแแแแแช แจแแแแแคแแ แแแแแ แจแแแแแชแแแ แแ แแแแแแก แฅแแแกแแแ แชแแ. แแแฃแ แแแแแแแ แแ แแแแแแแแแกแแแแก แฃแแฏแแแแกแแ แแแแแแแงแแแแ แแก แแแแแแ, แ แแแแแ แแก แแงแแแแแก แแ แแฌแ แคแแแ แแแแแแ แแแแแแก แฃแคแ แ แแชแแ แ แ แแแแแแแแแก แฅแแแแ แแแแแแแ แแแขแ แแชแ-แแแฅแขแแ แฃแแ แแ แแแฃแฅแขแแแแก แแชแแ แ แ แแแแแแแแแก แแแแ, แกแแแแ-ncg แแแแแแแแ แจแแแแ แแแแ. แแแ แแ แแแแกแ, แแแแแ แแขแฃแแ แฅแแแแ แแแแแแแก แแแแแฌแงแแแขแ แฃแคแ แ แแฃแกแขแแ แแ แแก แแแแแแแ, แแแแ แ trust-ncg แแแแแแแก แแแแแงแแแแแแ.
แแแแแแแแ แฐแแกแแแแฃแ แ แแแขแ แแชแแก แแแแแแ แขแแแแ:
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.]
แแแแแแก แ แแแแแแจแ แกแแแแ แแฃแแ แแแแฎแกแแแก แแแแแ แแแแ
แงแแแแ แแแแแแ (Newton-CG, trust-ncg แแ trust-krylov) แแแ แแแ แแ แแก แจแแกแแคแแ แแกแ แคแแ แแแแแกแจแขแแแแแแ แแ แแแแแแแแแก แแแแแกแแญแ แแแแ (แแแแกแแแแ แชแแแแแ). แแก แแแแแฌแแแฃแแแ แแแแ, แ แแ แคแฃแซแแแแแแแฃแ แ แแแแแฃแแแ แแแฃแแ แแ แแแแแแขแแก แแแแแ แแแแ แแฃแแแกแฎแแแแก แแแแแ แกแแฃแแ แฐแแกแแแแฃแ แ แแแขแ แแชแแก แแแแฎแแแแแแ แแแแกแแแฆแแ แแก. แแแแแกแแแแแ แแแแแแแแ แแแแแแแ แแแแ, แฐแแกแแแแแก แแจแแแ แ แแแคแแ แแแแแแก แแแ แแจแ. แแแแแแแแ แกแแญแแ แแ แแฎแแแแ แฐแแกแแแแฃแ แ แแ แแแแแแแแฃแ แ แแแฅแขแแ แแก แแแแ แแแแแก แคแฃแแฅแชแแแก แแแแกแแแฆแแ แ, แแก แแแแแ แแแแ แแแแกแแแฃแแ แแแแ แแแ แแแ แแจแแแแ (แแแแแก แแแแแแแแแฃแ แ) แแแขแ แแชแแแแแ แแฃแจแแแแแกแแแแก. แแก แฃแแ แฃแแแแแงแแคแก แแแฎแกแแแ แแแแก แแแแแ แฎแแ แฏแแแก แแ แแแแจแแแแแแแแ แแ แแก แแแแแแแแก.
แกแแจแฃแแแ แแแแแก แแ แแแแแแแแแกแแแแก, แฐแแกแแแแแก แจแแแแฎแแแกแ แแ แคแแฅแขแแ แแแแแก แฆแแ แแแฃแแแแ แแ แแ แแก แแ แแขแแแฃแแ. แแก แแแจแแแแก, แ แแ แจแแกแแซแแแแแแแ แแแแแกแแแแแก แแแฆแแแ แแแแแแแ แแแแแแ แแแแ, แแแแแแก แ แแแแแแแก แฅแแแแ แแแแแแแแแก แแแแฅแแแก แแฃแกแขแแ แแแแแญแ แแ. แแแแกแแแแแก แ แแแแแแแแ แแ แแฌแ แคแแแ แแแแขแแแแแ แฌแงแแแแ แแขแแ แแชแแฃแแแ แแแแแแฃแแ แแแแแ แแขแฃแแ แฅแแแแ แแแแแแแกแแแแก. แแกแแแ แแแแแกแแแแแ แฉแแแฃแแแแ แแ แแแแแฎแแแก แฐแแกแแแแฃแ แ แแแขแ แแชแแก 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.])
แฉแแแ แแแแแ แแฅ แแแแฉแแ แแแแแ. แจแแแแแ แกแขแแขแแแจแ แจแแแแชแแแแ แแแแฎแ แแ แงแแแแแแ แกแแแแขแแ แแกแ แแแ แแแแแ แแแแแแแแแชแแแก แจแแกแแฎแแ, แแแแแแแแแชแแแก แแแแแงแแแแแ แแแแฎแแแแแแก แแแแชแแแแแแก แแแแแญแ แแจแ, แแ แแ แชแแแแแแก แคแฃแแฅแชแแแก แแแแแแแแแชแแ, แแแแแแแแฃแ แ แแแแแแแแแขแแ แแแ แแ แแแแขแแแแแแแ แกแแกแขแแแแก แคแแกแแแแแก แแแแแ scipy.optimize-แแก แแแแแงแแแแแแ. แแแแแขแ.
แฌแงแแ แ:
แฌแงแแ แ: www.habr.com