После этого вопроса я хочу сделать мой вопрос как можно более точным c, сосредоточив внимание на той части, которую я не могу решить. Рассмотрим очень простую функцию:
def foo(x, y, a, b, c):
return a * x**4 + b * y**2 + c
. Теперь я хочу использовать scipy.optimize.minimize
или любую другую существующую функцию, чтобы найти x
и y
(то есть параметры) для минимизации * 1009. * с учетом констант a
, b
и c
(т. е. аргументов). Если бы я имел только один параметр и умножил аргументы, то с этой страницы я мог бы сделать:
def foo(x, *args):
a, b, c = args
return a * x**4 + b * x**2 + c
# X0 = to some scalar
# ARGS = a tuple of scalars (A, B, C)
x_min = scipy.optimize.minimize(foo, x0=X0, args=ARGS)
и если бы у меня были только независимые переменные, без постоянных аргументов, то из эту страницу Я мог бы сделать:
def foo(*params):
x, y = params
return 4 * x**4 + 2 * y**2 + 1
# P0 = to a list of scalars [X0, Y0]
x_min = scipy.optimize.minimize(foo, x0=P0)
Однако я не могу использовать любой из вышеперечисленных синтаксисов. Я считаю, что я должен определить свою функцию как что-то вроде:
def foo(*args, **kwargs):
x, y = args
a, b, c = tuple(kwargs.values())
return a * x**4 + b * y**2 + c
, но тогда я не знаю, как передать args
и kwargs
в функции scipy.optimize
. Буду признателен, если вы поможете мне понять, как лучше всего определить функцию foo
с несколькими независимыми параметрами и постоянными аргументами для функций scipy.optimize
. Спасибо за вашу поддержку заранее.