我有一个函数的形式
def tmp(x,n):
R, s, a, T = x[0], x[1], x[2], x[3]
它在一个长的计算块之后返回一个浮点数。
我需要最小化这个函数,为此我使用了scipy.optimize.minimize():
minimize(tmp,[0,0,3,60000], args=(n,),tol =1e-15)
上面的代码查找函数tmp()的最小值,初始值如下所示。
现在我需要最小化同样的函数tmp,但是把变量R,T作为参数保留在最小化之外,换句话说,我想把函数写成:
def tmp(x,n,R,T):
s, a = x[0], x[1]
怎么可能在不编辑我的第一个函数的情况下创建像上面这样的函数呢?
4条答案
按热度按时间iq3niunx1#
默认情况下这是不可能的,你需要给予
tmp(x,n,R,T)
一个不同的名字。不过,使用multimethod library也是可能的
a2mppw5e2#
不知道函数中发生了什么会使测试变得困难......在函数中,您在哪里定义R、s、a和T?
你能不能写一个函数:
那么你必须记住(!)你的“最小化”必须看起来像第一种情况:
情况2如下:
pinkon5k3#
这是一个老问题,但我遇到了这个问题,并找到了一个替代的解决方案。你可以定义一个“掩码”函数,你可以用它来重新组装你的标量函数的“提要”向量。
oknwwptz4#
我发现这个问题的答案是使用lmfit,它允许您轻松地固定一些参数,同时最小化其他参数。