In [1]:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
Pík ve tvaru Gaussiánu s konstantním pozadím
In [3]:
def gauss_peak(x,mu,sigma,A,bcg):
return A*1/(np.sqrt(2*np.pi)*sigma)*np.exp(-(x-mu)**2/(2*sigma**2))+bcg
Načtení dat
In [5]:
data=np.loadtxt('peak.txt')
x=data[:,0]
y=data[:,1]
ey=np.sqrt(y)
Fit nelinární metodou nejmenších čtverců pomocí procedury curve_fit
In [7]:
mu_init=7.2
sigma_init=1
A_init=500
bcg_init=10
pars,cov=curve_fit(gauss_peak,x,y,sigma=ey,p0=([mu_init,sigma_init,A_init,bcg_init]))
Nakreslení výsledků
In [9]:
plt.errorbar(x,y,ey,lw=0,elinewidth=1,marker='o',fillstyle='none', capsize=5,label='data')
plt.plot(x,gauss_peak(x,*pars),c='red',label='fit')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()