#!/usr/bin/python3.6 import matplotlib.pyplot as plt from scipy.optimize import curve_fit import numpy as np import pylab def g(x, s, m, n): return n*pylab.exp(-(x-m)**2/(2*s*s)) list_m=[] list_n=[] list_s=[] for i in range(1, 6): file_in="data_"+str(i)+".txt" data = np.loadtxt(file_in) x = data[:, 0] y = data[:, 1] dy = np.sqrt(y) plt.figure() plt.errorbar(x, y, yerr = dy, capsize = 0, fmt = 'b', label='pomiar') # Uwaga! Ze powodu pustych binów, nie uwzględniamy niepewności pomiarowych! par, cov = curve_fit(g, x, y, p0=np.array([130, 1300, 30])) plt.plot(x, g(x, *par), "r", label="fit") file_out="wykres_"+str(i)+".pdf" plt.savefig(file_out, bbox_inches = 'tight') list_m.append(par[1]) list_s.append(par[0]) list_n.append(par[2]) if (len(list_m)==0) or (len(list_s)==0) or (len(list_n)==0): print("Pusta lista") else: m_s=(sum(list_m))/5. print(m_s) #plt.show()