scipy
optimize.minimize에 대한 Jacobian 함수 작성법
수색…
통사론
- npy로 numpy 가져 오기
- scipy.optimize에서 가져 오기 _minimize
- scipy import special에서
- plpl로 matplotlib.pyplot 가져 오기
비고
scipy.optimize에서 가져올 때 '최소화'하기 전에 밑줄을 유의하십시오. '_minimize'또한이 섹션을 수행하기 전에이 링크 의 함수를 테스트 한 결과, 'special'을 별도로 가져온 경우 문제가 적다는 점을 발견했습니다. 링크 된 페이지의 Rosenbrock 기능이 올바르지 않습니다. 먼저 컬러 바를 구성해야합니다. 대체 코드를 게시했지만 더 좋을 것이라고 생각합니다.
더 많은 예를 들자.
헤 시안 매트릭스 에 대한 설명은 여기를 참고하십시오.
최적화 예 (황금)
'골든'방법은 극한 값의 범위를 좁혀 단조 함수를 최소화합니다.
import numpy as np
from scipy.optimize import _minimize
from scipy import special
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 500)
y = special.j0(x)
optimize.minimize_scalar(special.j0, method='golden')
plt.plot(x, y)
plt.show()
결과 이미지
최적화 예 (브렌트)
브렌트의 방법은 다른 루트 검색 알고리즘의보다 복잡한 알고리즘 조합입니다. 그러나 결과 그래프는 황금 메서드에서 생성 된 그래프와 크게 다르지 않습니다.
import numpy as np
import scipy.optimize as opt
from scipy import special
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 500)
y = special.j0(x)
# j0 is the Bessel function of 1st kind, 0th order
minimize_result = opt.minimize_scalar(special.j0, method='brent')
the_answer = minimize_result['x']
minimized_value = minimize_result['fun']
# Note: minimize_result is a dictionary with several fields describing the optimizer,
# whether it was successful, etc. The value of x that gives us our minimum is accessed
# with the key 'x'. The value of j0 at that x value is accessed with the key 'fun'.
plt.plot(x, y)
plt.axvline(the_answer, linestyle='--', color='k')
plt.show()
print("The function's minimum occurs at x = {0} and y = {1}".format(the_answer, minimized_value))
결과 그래프
출력 :
The function's minimum occurs at x = 3.8317059554863437 and y = -0.4027593957025531
Rosenbrock 기능
이것이 더 좋을 수 있다고 생각하지만 당신은 요지를 얻습니다.
import numpy as np
from scipy.optimize import _minimize
from scipy import special
import matplotlib.pyplot as plt
from matplotlib import cm
from numpy.random import randn
x, y = np.mgrid[-2:2:100j, -2:2:100j]
plt.pcolor(x, y, optimize.rosen([x, y]))
plt.plot(1, 1, 'xw')
# Make plot with vertical (default) colorbar
data = np.clip(randn(100, 100), -1, 1)
cax = plt.imshow(data, cmap=cm.coolwarm)
# Add colorbar, make sure to specify tick locations to match desired ticklabels
cbar = plt.colorbar(cax, ticks=[-2, 0, 2]) # vertically oriented colorbar
plt.axis([-2, 2, -2, 2])
plt.title('Rosenbrock function') #add title if desired
plt.xlabel('x')
plt.ylabel('y')
plt.show() #generate
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow


