x和y必须具有相同的第一尺寸,但形状为(3,)和(1,),同时适合lmfit

时间:2019-10-28 14:37:18

标签: lmfit

我正在尝试使用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,但似乎不起作用

1 个答案:

答案 0 :(得分:0)

您的模型函数不包含x,因此将返回标量值。适合将非常容易放弃。 FWIW t=1e-10, m=1e-19是很糟糕的初始值,因为它们可能会将函数推至零,以至于拟合永远不会偏离这些值。