使用lmfit未定义参数

时间:2018-02-18 20:04:44

标签: python numpy matplotlib lmfit

我试图用给定的数据拟合下面的等式曲线。等式为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() 设置一个界限。但是,我得到一个未定义的术语参数错误。任何帮助都会非常感谢。

public <<E extends Comparable<? super E>>> List<E> sort(List<E> list) 

1 个答案:

答案 0 :(得分:0)

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]将是无限的,这会在运行拟合时造成麻烦。