【问题标题】:How to input another variable into scipy optimize function如何将另一个变量输入到 scipy 优化函数中
【发布时间】:2021-02-23 15:48:32
【问题描述】:

请忽略混乱,这仍然是菜鸟。 基本上,我有一个功能:

def bw(Q,T):
  F = -Tc * Q**2 + T*((1+Q)*np.log(1+Q) + (1-Q)*np.log(1-Q))
  return F

我需要在不同的 T 处找到这个的最小值

Tc = 1
n = 200
T1 = 0.5
T2 = 1.2
Tt = np.linspace(T1,T2,n)
Qe = np.ndarray((1,n))
Q0 = 0.9

for i in range(n):
  T = Tt[i]
  res = minimize(bw,Q0,method='nelder-mead', options={'xatol': 1e-8})

这样,它说它缺少一个位置参数 T,但是:

res = minimize(bw(T),Q0,method='nelder-mead', options={'xatol': 1e-8})
res = minimize(bw(Q,T),Q0,method='nelder-mead', options={'xatol': 1e-8})
res = minimize(bw(,T),Q0,method='nelder-mead', options={'xatol': 1e-8})

我试过这些,但它们不起作用。然后,我尝试了:

res = minimize(bw,T,Q0,method='nelder-mead', options={'xatol': 1e-8})

我得到的值是错误的。有人可以帮忙吗?

【问题讨论】:

    标签: python numpy scipy scipy-optimize scipy-optimize-minimize


    【解决方案1】:

    您最后一次尝试是正确的,您只是混淆了QT。应该是:

     res = minimize(bw,Q0,T,method='nelder-mead', options={'xatol': 1e-8})
    

    【讨论】:

    • 另一个新手提示。如果您在使用新功能时遇到问题,请尽量消除任何复杂性。例如,您可以测试更简单的东西,例如F=Q*T,而不是测试完整的方程。这样,只有代码很棘手,数学也没有。
    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2015-11-21
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多