如何在scipy.optimize.minimize中使用fun的输出参数作为jac的输入参数?
How to use the output args of fun as the input args of jac in scipy.optimize.minimize?
我正在使用 scipy.optimize
图书馆。
在伴随变量方法中,需要 objective 函数的一些结果值来计算雅可比矩阵。
是否可以在不使用 global
变量的情况下在 jacobian 函数中使用它们?
例如,
def fun(x):
'''
something, something...
'''
# solving system equation.
u = spsolve(K,f)
return u.dot(f)
def jac(x):
'''
something, something...
'''
# computing jacobian using the adjoint method
return -(u.T@K@u).flatten()
在jac
函数中,u
和K
是必须的...
我该怎么做?
使用带有两个可调用对象 fun
和 jac
的 class,并将中间结果存储在实例上。 IE。 fun
填写self.u
和self.K
,jac
使用
但是请注意,这很脆弱,请考虑一下您是否真的需要它(也就是说,通过重新计算所有内容来编写所有内容,检查配置文件,并且当且仅当这些计算是瓶颈时,然后 OK,使用 class 或全局)。
我正在使用 scipy.optimize
图书馆。
在伴随变量方法中,需要 objective 函数的一些结果值来计算雅可比矩阵。
是否可以在不使用 global
变量的情况下在 jacobian 函数中使用它们?
例如,
def fun(x):
'''
something, something...
'''
# solving system equation.
u = spsolve(K,f)
return u.dot(f)
def jac(x):
'''
something, something...
'''
# computing jacobian using the adjoint method
return -(u.T@K@u).flatten()
在jac
函数中,u
和K
是必须的...
我该怎么做?
使用带有两个可调用对象 fun
和 jac
的 class,并将中间结果存储在实例上。 IE。 fun
填写self.u
和self.K
,jac
使用
但是请注意,这很脆弱,请考虑一下您是否真的需要它(也就是说,通过重新计算所有内容来编写所有内容,检查配置文件,并且当且仅当这些计算是瓶颈时,然后 OK,使用 class 或全局)。