При нахождении root функции с использованием scipy.optimize.root()
с аргументом jac = True
, OptimizeResult.fjac
возвращает значения якобиана, которые неверны с якобианом решения.
Например,
# objective function
def fun(x):
return [x[0] + 0.5 * (x[0] - x[1])**3 - 1.0, 0.5 * (x[1] - x[0])**3 + x[1]]
# function returns Jacobain at x
def jac(x):
return np.array([[1 + 1.5 * (x[0] - x[1])**2, -1.5 * (x[0] - x[1])**2],
[-1.5 * (x[1] - x[0])**2,
1 + 1.5 * (x[1] - x[0])**2]])
from scipy import optimize
sol = optimize.root(fun, [0, 0], jac=jac)
После того, как решение сходится, sol.fjac
отличается от jac(sol.x)
? Я не смог бы понять, что fjac
обозначает из OptimizeResult
?
Любые идеи и исправления очень ценятся:)