SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดจเดฎเตเดชเดฟ เดชเตˆเดคเตเดคเตบ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด’เดฐเต เด—เดฃเดฟเดคเดถเดพเดธเตเดคเตเดฐ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดพเด•เตเด•เต‡เดœเดพเดฃเต SciPy (เดธเดพเดฏเดฟ เดชเตˆ เดŽเดจเตเดจเต เด‰เดšเตเดšเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต). SciPy เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเด‚เดตเต‡เดฆเดจเดพเดคเตเดฎเด• เดชเตˆเดคเตเดคเตบ เดธเต†เดทเตป MATLAB, IDL, Octave, R-Lab, SciLab เดŽเดจเตเดจเดฟเดต เดชเต‹เดฒเต† เดธเดฎเตเดชเต‚เตผเดฃเตเดฃ เดกเดพเดฑเตเดฑเดพ เดธเดฏเตปเดธเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเตเดฐเต‹เดŸเตเดŸเต‹เดŸเตˆเดชเตเดชเดฟเด‚เด—เต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเตเด‚ เด†เดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต. scipy.optimize เดชเดพเด•เตเด•เต‡เดœเดฟเตฝ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เดšเดฟเดฒ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดจเตเดจเต เดžเดพเตป เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดตเตเด‚ เด•เดพเดฒเดฟเด•เดตเตเดฎเดพเดฏ เดธเดนเดพเดฏเด‚ เดŽเดชเตเดชเต‹เดดเตเด‚ help() เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต‹ Shift+Tab เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต‹ เดฒเดญเดฟเด•เตเด•เตเด‚.

เด†เดฎเตเด–เด‚

เดชเตเดฐเดพเดฅเดฎเดฟเด• เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดตเดพเดฏเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต†เดฏเตเด‚ เดตเดพเดฏเดจเด•เตเด•เดพเดฐเต†เดฏเตเด‚ เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ, เดฐเต€เดคเดฟเด•เดณเตเดŸเต† เดตเดฟเดตเดฐเดฃเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเตเด‚ เดตเดฟเด•เตเด•เดฟเดชเต€เดกเดฟเดฏเดฏเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดšเดŸเตเดŸเด‚ เดชเต‹เดฒเต†, เดˆ เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตŠเดคเตเดตเดพเดฏ เดจเดฟเดฌเดจเตเดงเดจเด•เดณเตเด‚ เด…เดตเดฏเตเดŸเต† เดชเตเดฐเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดณเตเดณ เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเดฐเตเดฏเดพเดชเตเดคเดฎเดพเดฃเต. เด—เดฃเดฟเดคเดถเดพเดธเตเดคเตเดฐ เดฐเต€เดคเดฟเด•เดณเตเดŸเต† เดธเดพเดฐเดพเด‚เดถเด‚ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, เด•เต‚เดŸเตเดคเตฝ เด†เดงเดฟเด•เดพเดฐเดฟเด• เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เดชเดฟเดจเตเดคเตเดŸเดฐเตเด•, เด…เดคเต เด“เดฐเต‹ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เด…เดตเดธเดพเดจเดคเตเดคเดฟเดฒเต‹ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเดจเดฟเดฒเต‹ เด•เดพเดฃเดพเด‚.

เด…เดคเดฟเดจเดพเตฝ, scipy.optimize เดฎเตŠเดกเตเดฏเต‚เดณเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต:

  1. เดตเดฟเดตเดฟเดง เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เตพ (เดจเต†เตฝเดกเตผ-เดฎเต€เดกเต เดธเดฟเด‚เดชเตเดฒเด•เตเดธเต, BFGS, เดจเตเดฏเต‚เดŸเตเดŸเตบ เด•เตบเดœเด—เต‡เดฑเตเดฑเต เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเตเดธเต, เด•เต‹เดฌเดฟเดฒ ะธ SLSQP)
  2. เด†เด—เต‹เดณ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต: เดฌเต‡เดธเดฟเตปเดนเต‹เดชเตเดชเดฟเด‚เด—เต, diff_evolution)
  3. เด…เดตเดถเดฟเดทเตเดŸเด™เตเด™เตพ เดšเต†เดฑเตเดคเดพเด•เตเด•เตเดจเตเดจเต เดŽเด‚.เดŽเตป.เดธเดฟ (least_squares) เด•เต‚เดŸเดพเดคเต† เดฐเต‡เด–เต€เดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดšเดคเตเดฐเด™เตเด™เตพ (curve_fit) เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เตผเดตเต เดซเดฟเดฑเตเดฑเดฟเด‚เด—เต เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เตพ
  4. เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต† (minim_scalar) เดธเตเด•เต†เดฏเดฟเดฒเตผ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดšเต†เดฑเตเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดฑเต‚เดŸเตเดŸเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต (root_scalar)
  5. เดตเดฟเดตเดฟเดง เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เตพ (เดนเตˆเดฌเตเดฐเดฟเดกเต เดชเดตเตฝ, เดฒเต†เดตเตปเดฌเตผเด—เต-เดฎเดพเตผเด•เตเดตเดพเตผเดกเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเต‹เดฒเตเดณเตเดณ เดตเดฒเดฟเดฏ เดคเต‹เดคเดฟเดฒเตเดณเตเดณ เดฐเต€เดคเดฟเด•เตพ เดจเตเดฏเต‚เดŸเตเดŸเตบ-เด•เตเดฐเตˆเดฒเต‹เดตเต).

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดˆ เดฎเตเดดเตเดตเตป เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เด†เดฆเตเดฏ เด‡เดจเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด•เดฏเตเดณเตเดณเต‚.

เดจเดฟเดฐเดตเดงเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดธเตเด•เต†เดฏเดฟเดฒเตผ เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดจเดฟเดฐเตเดชเดพเดงเดฟเด•เดฎเดพเดฏ เดšเต†เดฑเตเดคเดพเด•เตเด•เตฝ

scipy.optimize เดชเดพเด•เตเด•เต‡เดœเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดฟเดจเดฟเด‚ เดซเด‚เด—เตโ€Œเดทเตป, เดจเดฟเดฐเดตเดงเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดธเตโ€Œเด•เต†เดฒเดพเตผ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดŸเต† เดธเต‹เดชเดพเดงเดฟเด•เดตเตเด‚ เดจเดฟเดฐเตเดชเดพเดงเดฟเด•เดตเตเดฎเดพเดฏ เดฎเดฟเดจเดฟเดฎเตˆเดธเต‡เดทเตป เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเตŠเดคเต เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดจเตฝเด•เตเดจเตเดจเต. เด‡เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เด’เดฐเต เดซเด‚เด—เตเดทเตป เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเต เดžเด™เตเด™เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดฐเต€เดคเดฟเด•เดณเดฟเตฝ เด•เตเดฑเดฏเตเด•เตเด•เตเด‚.

เดˆ เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เต, N เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† Rosenbrock เดซเด‚เด—เตเดทเตป เดคเดฟเด•เดžเตเดžเดคเดพเดฃเต, เด…เดคเดฟเดจเต เดซเต‹เด‚ เด‰เดฃเตเดŸเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

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)

เดตเตเดฏเด•เตเดคเดคเดฏเตเด•เตเด•เดพเดฏเดฟ, เดฐเดฃเตเดŸเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† Rosenbrock เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ 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()

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดฎเดฟเดจเดฟเดฎเด‚ 0 เด†เดฃเต เดŽเดจเตเดจเต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด…เดฑเดฟเดฏเตเด• SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป, เดตเดฟเดตเดฟเดง scipy.optimize เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต Rosenbrock เดซเด‚เด—เตเดทเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดฎเต‚เดฒเตเดฏเด‚ เดŽเด™เตเด™เดจเต† เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเด‚ เดŽเดจเตเดจเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเต‹เด•เตเด•เดพเด‚.

เดจเต†เตฝเดกเตผ-เดฎเต€เดกเต เดธเดฟเด‚เดชเตเดฒเด•เตเดธเต เดฐเต€เดคเดฟ

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.]

เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดคเตเด‚ เดตเดณเดฐเต† เดธเตเด—เดฎเดตเตเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เดฎเดพเตผเด—เดฎเดพเดฃเต เดธเดฟเด‚เดชเตเดฒเด•เตเดธเต เดฐเต€เดคเดฟ. เด‡เดคเดฟเดจเต เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเตเด•เตพ เด•เดฃเด•เตเด•เดพเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ; เด…เดคเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดฎเดพเดคเตเดฐเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดพเตฝ เดฎเดคเดฟ. เดฒเดณเดฟเดคเดฎเดพเดฏ เดฎเดฟเดจเดฟเดฎเตˆเดธเต‡เดทเตป เดชเตเดฐเดถเตเดจเด™เตเด™เตพเด•เตเด•เต เดจเต†เตฝเดกเตผ-เดฎเต€เดกเต เดฐเต€เดคเดฟ เด’เดฐเต เดจเดฒเตเดฒ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเดพเดฃเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด‡เดคเต เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต เดŽเดธเตเดฑเตเดฑเดฟเดฎเต‡เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดคเตเด• เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเดฎเต†เดŸเตเดคเตเดคเต‡เด•เตเด•เดพเด‚.

เดชเดพเดตเตฝ เดฐเต€เดคเดฟ

เดซเด‚เด—เตเดทเตป เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดฎเดพเดคเตเดฐเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดชเดตเดฒเดฟเดจเตเดฑเต† เดฐเต€เดคเดฟ. เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดฎเดฟเดจเดฟเด‚ เดซเด‚เด—เตโ€Œเดทเดจเดฟเตฝ เดจเดฟเด™เตเด™เตพ method = 'powell' เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

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 เดฐเต€เดคเดฟเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดจเดฎเตเด•เตเด•เต เดฑเต‹เดธเตปเดฌเตเดฐเต‹เด•เตเด•เต เดซเด‚เด—เตเดทเดจเตเดฑเต† เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเต เดตเดฟเดถเด•เดฒเดจ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เด†เดฆเตเดฏเดคเตเดคเต‡เดคเตเด‚ เด…เดตเดธเดพเดจเดคเตเดคเต‡เดคเตเด‚ เด’เดดเดฟเด•เต†เดฏเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเตเด•เตพเด•เตเด•เต เดˆ เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚ เดธเดพเดงเตเดตเดพเดฃเต, เด…เดต เด‡เด™เตเด™เดจเต† เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดˆ เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจ เดชเตˆเดคเตเดคเตบ เดซเด‚เด—เตโ€Œเดทเตป เดจเต‹เด•เตเด•เดพเด‚:

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]

เด•เต‹เตบเดœเตเด—เต‡เดฑเตเดฑเต เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ (เดจเตเดฏเต‚เดŸเตเดŸเตบ)

เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดจเตเดฏเต‚เดŸเตเดŸเดจเตเดฑเต† เดธเด‚เดฏเต‹เดœเดฟเดค เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเตเด•เตพ เดชเดฐเดฟเดทเตเด•เดฐเดฟเดšเตเดš เดจเตเดฏเต‚เดŸเตเดŸเดจเตเดฑเต† เดฐเต€เดคเดฟเดฏเดพเดฃเต.
เดจเตเดฏเต‚เดŸเตเดŸเดจเตเดฑเต† เดฐเต€เดคเดฟ เด’เดฐเต เดฒเต‹เด•เตเด•เตฝ เดเดฐเดฟเดฏเดฏเดฟเดฒเต† เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเต† เดฐเดฃเตเดŸเดพเด‚ เดกเดฟเด—เตเดฐเดฟเดฏเตเดŸเต† เดชเต‹เดณเดฟเดจเต‹เดฎเดฟเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดเด•เดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดŽเดตเดฟเดŸเต† SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเตเด•เดณเตเดŸเต† เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเต เด†เดฃเต (เดนเต†เดธเดฟเดฏเตป เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเต, เดนเต†เดธเตเดธเดฟเดฏเตป).
เดนเต†เดธเตเดธเดฟเดฏเตป เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เดกเต†เดซเดจเดฟเดฑเตเดฑเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด•เตเดตเดพเดกเตเดฐเดพเดฑเตเดฑเดฟเด•เต เดซเต‹เดฎเดฟเดจเตเดฑเต† เดชเต‚เดœเตเดฏเด‚ เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต เดชเต‚เดœเตเดฏเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเด•เตเด•เดฟ เดˆ เดซเด‚เด—เตเดทเดจเตเดฑเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดฎเดฟเดจเดฟเดฎเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚. เดซเดฒเด‚ เดชเดฆเดชเตเดฐเดฏเต‹เด—เดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดธเด‚เดฏเต‹เดœเดฟเดค เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดตเดฟเดชเดฐเต€เดค เดนเต†เดธเตเดธเดฟเดฏเตป เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเดคเต. Rosenbrock เดซเด‚เด—เตเดทเตป เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดˆ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดšเตเดตเดŸเต† เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเตเดฏเต‚เดŸเตเดŸเตบ-เดธเดฟเดœเดฟ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดนเต†เดธเตเดธเดฟเดฏเตป เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเด‚เด—เตเดทเตป เดจเดฟเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฃเด‚.
เดตเดฟเดถเด•เดฒเดจ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดฑเต‹เดธเตปเดฌเตเดฐเต‹เด•เตเด•เต เดซเด‚เด—เตเดทเดจเตเดฑเต† เดนเต†เดธเตเดธเดฟเดฏเตป เด‡เดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดŽเดตเดฟเดŸเต† SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป ะธ SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป, เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเต เดจเดฟเตผเดตเตเดตเดšเดฟเด•เตเด•เตเด• SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป.

เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเดฟเดจเตเดฑเต† เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เดชเต‚เดœเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เด˜เดŸเด•เด™เตเด™เตพ เด‡เดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เดชเดžเตเดšเดฎเดพเดจ เดธเตเดชเต‡เดธเดฟเตฝ N = 5, เดฑเต‹เดธเตปเดฌเตเดฐเต‹เด•เตเด•เต เดซเด‚เด—เตเดทเดจเตเดณเตเดณ เดนเต†เดธเตเดธเดฟเดฏเตป เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเดฟเดจเต เด’เดฐเต เดฌเดพเตปเดกเดฟเดจเตเดฑเต† เดฐเต‚เดชเดฎเตเดฃเตเดŸเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เด•เตบเดœเด—เต‡เดฑเตเดฑเต เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต (เดจเตเดฏเต‚เดŸเตเดŸเตบ) เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเต‹เดธเตปเดฌเตเดฐเต‹เด•เตเด•เต เดซเด‚เด—เตเดทเตป เดšเต†เดฑเตเดคเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เต‹เดกเดฟเดจเตŠเดชเตเดชเด‚ เดˆ เดนเต†เดธเตเดธเดฟเดฏเตป เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเต:

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 เด’เดฐเต เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดตเต†เด•เตเดฑเตเดฑเตผ เด†เดฃเต, เดคเตเดŸเตผเดจเตเดจเต เด‰เตฝเดชเตเดชเดจเตเดจเด‚ SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดซเต‹เด‚ เด‰เดฃเตเดŸเต:

SciPy, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป

เดนเต†เดธเตเดธเดฟเดฏเดจเตเดฑเต†เดฏเตเด‚ เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดตเต†เด•เตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เด‰เตฝเดชเตเดชเดจเตเดจเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจ เดซเด‚เด—เตเดทเตป, เดนเต†เดธเตเดชเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเดฎเดพเดฏเดฟ เดฎเดฟเดจเดฟเดฎเตˆเดธเต เดซเด‚เด—เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต:

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.]

เด•เตเดฐเตˆเดฒเต‹เดตเต เดคเดฐเด‚ เดฐเต€เดคเดฟเด•เตพ

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.]

เด†เดคเตเดฎเดตเดฟเดถเตเดตเดพเดธ เดฎเต‡เด–เดฒเดฏเดฟเดฒเต† เดเด•เดฆเต‡เดถ เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเดณเตเดณ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚

เดŽเดฒเตเดฒเดพ เดฐเต€เดคเดฟเด•เดณเตเด‚ (เดจเตเดฏเต‚เดŸเตเดŸเตบ-เดธเดฟเดœเดฟ, เดŸเตเดฐเดธเตเดฑเตเดฑเต-เดŽเตปเดธเดฟเดœเดฟ, เดŸเตเดฐเดธเตเดฑเตเดฑเต-เด•เตเดฐเตˆเดฒเต‹เดตเต) เดตเดฒเดฟเดฏ เดคเต‹เดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต (เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚). เด…เดจเตเดคเตผเดฒเต€เดจเดฎเดพเดฏ เดธเด‚เดฏเต‹เดœเดฟเดค เด—เตเดฐเต‡เดกเดฟเดฏเดจเตเดฑเต เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดตเดฟเดชเดฐเต€เดค เดนเต†เดธเตเดธเดฟเดฏเตป เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเดฟเดจเตเดฑเต† เดเด•เดฆเต‡เดถ เดจเดฟเตผเดฃเตเดฃเดฏเดคเตเดคเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เด‡เดคเดฟเดจเต เด•เดพเดฐเดฃเด‚. เดนเต†เดธเตเดธเดฟเดฏเดจเตเดฑเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดตเดฟเด•เดพเดธเดฎเดฟเดฒเตเดฒเดพเดคเต†, เดชเดฐเดฟเดนเดพเดฐเด‚ เด†เดตเตผเดคเตเดคเดฟเดšเตเดšเต เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดนเต†เดธเตเดธเดฟเดฏเดจเตเดฑเต†เดฏเตเด‚ เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดตเต†เด•เตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดจเต เด’เดฐเต เดซเด‚เด—เตเดทเตป เดจเดฟเตผเดตเดšเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ, เดตเดฟเดฐเดณเดฎเดพเดฏ (เดฌเดพเตปเดกเต เดกเดฏเด—เดฃเตฝ) เดฎเต†เดŸเตเดฐเดฟเด•เตเดธเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดˆ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เดจเดฒเตเดฒเดคเดพเดฃเต. เด‡เดคเต เด•เตเดฑเดžเตเดž เดฎเต†เดฎเตเดฎเดฑเดฟ เดšเต†เดฒเดตเตเด‚ เด—เดฃเตเดฏเดฎเดพเดฏ เดธเดฎเดฏ เดฒเดพเดญเดตเตเด‚ เดจเตฝเด•เตเดจเตเดจเต.

เด‡เดŸเดคเตเดคเดฐเด‚ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพเด•เตเด•เต, เดนเต†เดธเตเดธเดฟเดฏเตป เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด˜เดŸเด•เดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดšเต†เดฒเดตเต เดจเดฟเตผเดฃเดพเดฏเด•เดฎเดฒเตเดฒ. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚, เดŸเตเดฐเดธเตเดฑเตเดฑเต เดฎเต‡เด–เดฒเดฏเดฟเดฒเต† เด‰เดชเดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดเดคเดพเดฃเตเดŸเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เด•เตเดฑเดšเตเดšเต เด†เดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเตฝ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚ เดŽเดจเตเดจเดพเดฃเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด“เดฐเต‹ เด•เตเดตเดพเดกเตเดฐเดพเดฑเตเดฑเดฟเด•เต เด‰เดชเดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเด‚ เดšเดฟเดฒ เดจเต‹เตบเดฒเต€เดจเดฟเดฏเตผ เดธเดฎเดตเดพเด•เตเดฏเด™เตเด™เตพ เด†เดตเตผเดคเตเดคเดฟเดšเตเดšเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดนเต†เดธเตเดธเดฟเดฏเตป เดฎเดพเดŸเตเดฐเดฟเด•เตเดธเดฟเดจเตเดฑเต† 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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฎเดตเดพเด•เตเดฏเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต† เดตเต‡เดฐเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตฝ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดชเดฑเดฏเดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚. เดชเดพเด•เตเด•เต‡เดœเต.

เด…เดตเดฒเด‚เดฌเด‚: https://docs.scipy.org/doc/scipy/reference/

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•