x и y должны иметь одно и то же первое измерение, но иметь формы (3,) и (1,), но при этом должны соответствовать lmfit - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь подобрать формулу, используя 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 голосов
/ 29 октября 2019

функция вашей модели не включает x и поэтому возвращает скалярное значение. Приступ очень легко сдастся. FWIW t=1e-10, m=1e-19 являются ужасными начальными значениями, так как они, вероятно, приведут функцию к нулю настолько, что подгонка никогда не сместится с этих значений.

...