【问题标题】:Parameters undefined using lmfit使用 lmfit 未定义的参数
【发布时间】:2018-02-18 20:04:44
【问题描述】:

我正在尝试用给定的数据将曲线拟合到下面的等式中。等式是Rate=k*Concentration^n。我遇到了麻烦,因为安装时的n-6,这是不可能的,所以我试图在min=0 设置一个界限。但是,我收到未定义的术语参数错误。任何帮助都会非常感谢。

from IPython import get_ipython 
get_ipython().magic('reset -sf')
import numpy as np
from lmfit import Model
import matplotlib.pyplot as plt



# Homework Problem #2 
Time = np.array ([0, 48, 76, 124, 204, 238, 289])
Concentration =np.array ([19.04, 17.6, 16.9, 15.8, 14.41, 13.94, 13.37])

# Rate Determination 
Rate=Concentration/Time 


# Model Definition 

def rateEq(Concentration, k, n):
    return k*(Concentration)**n

# Model creation
model=Model(rateEq)

# Parameters
params = parameters()
params.add(k=0.001)
params.add(n=0.001)
par.set(min=0)


# Data Fit v
result=model.fit(Rate, params, Concentration=Concentration)
# Print and Plot Results 
print(result.fit_report())
result.plot_fit()

【问题讨论】:

  • 我对您的问题进行了一些改进,等待批准。通过修改您的问题在我进行编辑的地方发布您的错误代码。欢迎来到 SO,完成游览并享受 SO ;-)

标签: python numpy matplotlib lmfit


【解决方案1】:

parameters 未定义,因为您没有在任何地方定义它。您将它用作params = parameters(),可能暗示一个函数调用,但您没有定义或导入该函数....同样,par 未定义,因为您没有在任何地方定义它。

你几乎肯定想要

from lmfit import Model, Parameters # explicitly import Parameters

params = Parameters() # note the capitalization
params.add('k', value=0.001)
params.add('n', value=0.001)

什么不太清楚(因为我猜不出par 是什么) 是你要不要

params['k'].min = 0

params['n'].min = 0

另外,作为一个警告:由于你的time[0] 为0,你的Rate[0] 将是无限的,这会在运行fit 时造成麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多