Я хочу оптимизировать функцию f (x, y, z) по x с помощью sp.optimize.minimize. Якобиан зависит только от x и y, и это функция J (x, y). (это просто игрушечный пример)
Если я попытаюсь:
import numpy as np
import scipy as sp
def f(x,y,z):
return(x**2+x*y**3+z)
def J(x,y):
return(2*x+y**3)
x0,y,z=0,1,4
sp.optimize.minimize(f,x0,args=(y,z),jac=J)
Я получаю сообщение об ошибке «J () принимает 2 позиционных аргумента, но 3 были заданы», потому что оптимизация проходит y иот z до J.
Можно ли как-нибудь определить аргументы, которые я хочу передать f, и те, которые я хочу передать J?
(один из вариантов - определить f и J, например,что они имеют одинаковые аргументы и просто игнорируют те, которые не нужны функции, но я надеюсь, что есть более элегантный способ)