---- ---- ANSWERED
如果这个问题过于简单,我会道歉。我是Python编码的新手,目前正在开展一个困难的项目。任何帮助表示赞赏;我很乐意澄清那些愿意帮助的人的困惑。
我能够使用此功能成功拟合我的数据,但绑定模型不准确(导致热力学值不正确):
#defining function of the binding model
def binding_model(molar_ratio,Ka,n,dH):
return (dH*molar_ratio**n)/(molar_ratio**n+Ka**n)
#fitting molar enthalpy vs. molar ratio data with binding model
initial_paramaters=array([1,0,0])
parameters,cov=curve_fit(binding_model,molar_ratio,peak_areas,initial_paramaters)
n=parameters[0]
Ka=parameters[1]
dH=parameters[2]
Ffit=binding_model(molar_ratio,n,Ka,dH)
我更正了结合模型(到单点配体结合模型),但我无法让curve_fit函数继续工作:
#defining function of the binding model
def binding_model(Mt,Xt,Vcell,Ka,n,dH):
return (n*Mt*dH*Vcell/2)*(1+(Xt/(Mt*n))+(1/(n*Ka*Mt)))-((1+(Xt/(n*Mt))+(1/(n*Ka*Mt)))**2-(4*Xt/(Mt*n))**.5)
#fitting molar enthalpy vs. molar ratio data with binding model
initial_paramaters=array([1,0,0])
parameters=curve_fit(binding_model,Mt,Xt,Vcell,peak_areas,initial_paramaters)
n=parameters[0]
Ka=parameters[1]
dH=parameters[2]
Ffit=binding_model(Mt,Xt,Ka,n,dH,Vcell)
它现在返回一个" curve_fit()最多需要5个参数(给定6个)"错误。
molar_ratio,Mt和Xt是三个阵列,每个阵列由41个值组成。 Vcell是从数据中提取的整数。谢谢你看看!
答案 0 :(得分:1)
你只是没有正确使用它;
了解它的工作原理here
说我想将多项式拟合到某些数据;
我可以这样:
def quad(xdata, a,b,c):
return a * xdata**2 + b * xdata + c
然后我可以有一些数据;
xdata = np.array([range(10)])
ydata = np.array([1 for _ in xdata])
然后我可以调用curve_fit;
initial_guess = [0,0,0]
popt, pcov = scipy.optimize.curve_fit(quad, xdata, ydata, p0=initial_guess)
print popt # [0,0,1]
您遇到的问题是您没有将初始猜测放入p0
参数的数组中(无论如何都是可选的)。
对于你的功能,尝试这个(我没有测试过,我没有在这台机器上使用python):
def binding_model(xdata,Vcell,Ka,n,dH):
Mt = xdata[0]
Xt = xdata[1]
return (n*Mt*dH*Vcell/2)*(1+(Xt/(Mt*n))+(1/(n*Ka*Mt)))-((1+(Xt/(n*Mt))+(1/(n*Ka*Mt)))**2-(4*Xt/(Mt*n))**.5)
#fitting molar enthalpy vs. molar ratio data with binding model
initial_Vcell = 0
initial_Ka = 0
initial_n = 0
initial_dH = 0
initial_paramaters=array([initial_Vcell, initial_Ka, initial_n, initial_dH])
xdata = zip(Mt, Xt)
parameters, cov = curve_fit(binding_model, xdata, ydata, p0=initial_paramaters)
Vcell=parameters[0]
Ka=parameters[1]
n=parameters[2]
dH=parameters[3]
Ffit=binding_model(xdata, Vcell, Ka, n, dH)