首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用curve_fit .优化的curve_fit

使用curve_fit .优化的curve_fit
EN

Stack Overflow用户
提问于 2014-05-20 22:52:18
回答 1查看 1.8K关注 0票数 1

-回答

如果这个问题回答得太简单,我很抱歉。我对Python编码非常陌生,目前正在从事一个困难的项目。任何帮助都是感激的,我很乐意为那些愿意帮助的人澄清困惑。

我成功地将数据与此函数相匹配,但绑定模型不准确(由此产生的热力学值不正确):

代码语言:javascript
复制
#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函数继续工作了:

代码语言:javascript
复制
#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是从数据中提取的整数。谢谢你看一看!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 23:28:37

你只是没有正确地使用它;

阅读它是如何工作的这里

假设我想用多项式来拟合一些数据;

我可以有这样的东西:

代码语言:javascript
复制
def quad(xdata, a,b,c):
    return a * xdata**2 + b * xdata + c

然后我就能得到一些数据;

代码语言:javascript
复制
xdata = np.array([range(10)])
ydata = np.array([1 for _ in xdata])

然后我可以打电话给curve_fit;

代码语言:javascript
复制
initial_guess = [0,0,0]
popt, pcov = scipy.optimize.curve_fit(quad, xdata, ydata, p0=initial_guess)

print popt # [0,0,1]

您所遇到的问题是,您没有将初始猜测放入p0参数的数组中(无论如何,这是可选的)。

对于您的功能,请尝试如下(我还没有测试它,在这台机器上没有python ):

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23771290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档