У меня есть функция func(x), аргументом которой является вектор длины n. Я хотел бы минимизировать его по отношению к i-му компоненту x, сохраняя при этом остальные компоненты фиксированными. Поэтому, чтобы выразить это как функцию одного компонента, я бы сделал что-то вроде
Код: Выделить всё
import numpy as np
from scipy.optimize import minimize_scalar
def func(x):
#do some calculations
return function_value
def func_i(x_i, x0, i):
x = np.copy(x0)
x[i] = x_i
return func(x)
res = minimize_scalar(func_i, args=(x0, i))
Есть ли более эффективный способ сделать это? Подобные вычисления будут выполняться неоднократно, циклически перебирая переменные, и я беспокоюсь, что x = np.copy(x0), x
= x_i замедлит вычисление. (Проблема возникает в контексте выборки Гиббса, поэтому минимизация по всем переменным одновременно — это не то, что мне нужно.)
Подробнее здесь: https://stackoverflow.com/questions/793 ... h-variable