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()
No description has been provided for this image