我正在尝试用python进行Newton-CG优化。我的函数是f(x,y)=(1-x)^2+2(y-x^2)^2。初始点:x=3,y=2。这是我的密码:
from scipy.optimize import minimize
def f(params): #definite function
x, y = params #amount of params
return (1 - x) ** 2 + 2 * (y - x ** 2) ** 2
def jacobian(params): #definite function
x, y = params #amount of params
der = np.zeros_like(x)
der[0] = -8 * x * (-x ** 2 + y) + 2 * x - 2 #derivative by x
der[1] = -4 * x ** 2 + 4 * y #derivative by y
return der
initial_guess = [3, 2] #initial points
result = minimize(f, initial_guess, jac = jacobian, method = 'Newton-CG')
我有个错误"IndexError: too many indices for array"
。你知道吗
当我做内尔德-米德优化,BFG和他们的工作。所以,问题是雅可比矩阵。我觉得在def jacobian
的某个地方是个错误。你知道吗
错误确实在jacobian函数中,您将
der
定义为0,大小为x
,这是一个标量。而是使用params
:相关问题 更多 >
编程相关推荐