如何将另一个变量输入 scipy 优化函数
How to input another variable into scipy optimize function
乱七八糟的请无视,我还是菜鸟。
基本上,我有一个功能:
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})
我得到的值是错误的。有人可以帮忙吗?
您最后一次尝试是正确的,您只是混淆了 Q
和 T
。应该是:
res = minimize(bw,Q0,T,method='nelder-mead', options={'xatol': 1e-8})
乱七八糟的请无视,我还是菜鸟。 基本上,我有一个功能:
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})
我得到的值是错误的。有人可以帮忙吗?
您最后一次尝试是正确的,您只是混淆了 Q
和 T
。应该是:
res = minimize(bw,Q0,T,method='nelder-mead', options={'xatol': 1e-8})