Minuit не сходится с функцией журнала? - PullRequest
0 голосов
/ 06 марта 2019

Попытка вписать некоторые данные в лог-кривую, однако мой вывод неверен, и я не понимаю, что является причиной ошибки. Это странная причина, если пропустить b из соответствия, оно сходится, и все поля зеленого цвета.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

def logis(x,a,b): #function to fit
    return (1+x*np.log(b/x))*a

xlat=np.array([81.96100485,  64.96427609,  38.15520137,  45.75992993,
        27.38344029,  23.41742996,  18.73586921,  18.07486749,
         9.20589292,   4.83878931,  72.17070899,  71.08083681,
        39.57647386,  31.63373626]) #xdata

lo=logis(xlat,92,30) #ydata
p=np.concatenate((np.array([92,30]),xlat,lo),axis=0) #all parameters


def chi(pa): #chisquare
    chis=sum((92-pa[0:1])**2)+sum((30-p[1:2])**2)+sum((xlat-pa[2:16])**2)+sum((lo-pa[16:30])**2)
    return chis

#minuit part
m = Minuit.from_array_func(chi,p,errordef=1)

fmin,para=m.migrad()

print(m.values)
print(fmin)

xn=[]
xtra=np.sort(xlat)
for i in range(2,16):
    xn.append(m.values[i])

xr=np.array(xn)
#plot part
xp=np.linspace(min(xr),max(xr),14)
plt.figure(figsize=(14,8.5))
plt.plot(xp,logis(xp,m.values[0],m.values[1]))
plt.show

Вот некоторые цифры: Information The plot I get

1 Ответ

0 голосов
/ 07 марта 2019

Неважно, я нашел проблему, написал сумму ((30-р [1: 2]) ** 2) вместо суммы ((30-р [1: 2]) ** 2).Спасибо за ваше время!

...