我正在尝试使用lmfit拟合公式,但是如上所述,我遇到了错误。 这是我的数据文件data
import numpy as np
import math
from scipy import optimize
import matplotlib.pyplot as plt
from numpy import exp, loadtxt, pi, sqrt, sinh
from lmfit import Model
k = 1.38e-23
hcut = 1.0e-34
e = 1.6e-19
B = 6.15
a = (2*(pi**2)*k)/(hcut*e*B)
c = 2.12
b = hcut/(2*pi*k)
data = loadtxt('data.csv')
x = data[:, 0]
y = data[:, 1]
z = math.sinh(0.5)
z1 = math.sinh(a*9.1e-31)
def LK(x, t, m):
return (4*c*exp(-(a*m*b)/t))
gmodel = Model(LK)
result = gmodel.fit(y, x=x, t=1e-10, m=1e-19)
print(result.fit_report())
plt.plot(x, y, 'bo')
plt.plot(x, result.init_fit, 'k--', label='initial fit')
plt.plot(x, result.best_fit, 'r-', label='best fit')
plt.legend(loc='best')
plt.show()
我正在尝试从此处可用的代码中进行尝试:https://lmfit.github.io/lmfit-py/model.html,但似乎不起作用
答案 0 :(得分:0)
您的模型函数不包含x
,因此将返回标量值。适合将非常容易放弃。 FWIW t=1e-10, m=1e-19
是很糟糕的初始值,因为它们可能会将函数推至零,以至于拟合永远不会偏离这些值。