【发布时间】:2022-10-12 23:10:53
【问题描述】:
我正在使用用户定义的模型函数来拟合具有 lmfit 的数据集。但是,我似乎无法修复该函数的某些参数,因此在拟合算法期间它们不会被更改。我已经从其他线程以及文档中使用了 cmets,但看不到问题:
import numpy as np
from lmfit import Model
data = np.loadtxt('impedance.txt')
w = data[:, 0]
y1 = data[:, 1]
y2 = data[:, 2]
z = y1/y2
f = w/(2.*np.pi)
#model function to be fitted on
def Ztot(f, RP=1E4, RS=10, C=1E-9, L=10E-3):
return np.abs((1/((1/RP + 1/(complex(0, 1)*2*np.pi*f*L))**(-1) + RS) + complex(0, 1)*2*np.pi*f*C)**(-1))
gmodel = Model(Ztot)
params = gmodel.make_params()
params['RS'].max = 100
params['RS'].min = 0
params['C'].vary = False
print(params)
result = gmodel.fit(z, f=f)
print(result.fit_report())
但是,当我检查拟合报告时,参数发生了变化:
[[Variables]]
RP: 75381.4485 (init = 10000)
RS: -2280.34148 (init = 10)
C: 3.6066e-10 (init = 1e-09)
L: 0.06200475 (init = 0.01)
这当然不是我想要的。我错过了什么?!
【问题讨论】:
标签: python curve-fitting lmfit