import numpy as np
import matplotlib.pyplot as plt
x_pb = np.array([2, 5, 7, 10, 12, 15, 17, 20])
y_pb = np.array([5350, 3728, 3079, 2191, 1745, 1313, 1045, 717])
x_cu = np.array([2, 5, 7, 10, 12, 15, 17, 20])
y_cu = np.array([5725, 4953, 4410, 3689, 3257, 2620, 2433, 2132])
x_al = np.array([1, 2, 3, 5, 7, 10, 12, 15, 17, 20])
y_al = np.array([6437, 6080, 5832, 5841, 5515, 5278, 5096, 4771, 4524, 4394])
# Logarytm naturalny liczby zliczeń
log_y_pb = np.log(y_pb)
log_y_cu = np.log(y_cu)
log_y_al = np.log(y_al)
# Funkcja liniowa do dopasowania
def linear_model(x, a, b):
return a * x + b
params_pb = [-0.1096, 8.793]
params_cu = [-0.0576, 8.783]
params_al = [-0.01924, 8.7597]
# Przygotowanie danych do wykresu eksponencjalnego
x_fit = np.linspace(1, 20, 400)
y_fit_pb = np.exp(linear_model(x_fit, *params_pb))
y_fit_cu = np.exp(linear_model(x_fit, *params_cu))
y_fit_al = np.exp(linear_model(x_fit, *params_al))
# Tworzenie wykresu
errors_pb = np.sqrt(y_pb)
errors_cu = np.sqrt(y_cu)
errors_al = np.sqrt(y_al)
# Tworzenie wykresu logarytmiczno-liniowego
plt.figure(figsize=(12, 6))
plt.errorbar(x_pb, log_y_pb, yerr=errors_pb / y_pb, fmt='o', markersize=5, label='Ołów', color='blue')
plt.errorbar(x_cu, log_y_cu, yerr=errors_cu / y_cu, fmt='o', markersize=5, label='Miedź', color='red')
plt.errorbar(x_al, log_y_al, yerr=errors_al / y_al, fmt='o', markersize=5, label='Aluminium', color='green')
plt.plot(x_fit, linear_model(x_fit, *params_pb), '-', color='blue', label=f'Dopasowanie dla ołowiu')
plt.plot(x_fit, linear_model(x_fit, *params_cu), '-', color='red', label=f'Dopasowanie dla miedzi')
plt.plot(x_fit, linear_model(x_fit, *params_al), '-', color='green', label=f'Dopasowanie dla aluminium')
plt.xlabel('Grubość absorbentu [mm]')
plt.ylabel('$\ln(N(d))$')
plt.title('Logarytmiczno-liniowy wykres zależności liczby kwantów $\gamma$ zarejestrowanych przy przejściu przez absorbent od grubości absorbentu')
plt.legend()
plt.grid(True)
plt.savefig('log_linear_plot.png')
plt.clf()
# Tworzenie wykresu liniowo-liniowego
plt.figure(figsize=(12, 6))
plt.errorbar(x_pb, y_pb, yerr=errors_pb, fmt='o', markersize=5, label='Ołów', color='blue')
plt.errorbar(x_cu, y_cu, yerr=errors_cu, fmt='o', markersize=5, label='Miedź', color='red')
plt.errorbar(x_al, y_al, yerr=errors_al, fmt='o', markersize=5, label='Aluminium', color='green')
plt.plot(x_fit, y_fit_pb, '-', color='blue', label=f'Dopasowanie dla ołowiu')
plt.plot(x_fit, y_fit_cu, '-', color='red', label=f'Dopasowanie dla miedzi')
plt.plot(x_fit, y_fit_al, '-', color='green', label=f'Dopasowanie dla aluminium')
plt.xlabel('Grubość absorbentu [mm]')
plt.ylabel('$N(d)$')
plt.title('Liniowo-liniowy wykres zależności liczby kwantów $\gamma$ zarejestrowanych przy przejściu przez absorbent od grubości absorbentu')
plt.legend()
plt.grid(True)
plt.savefig('linear_linear_plot.png')
plt.clf()
Paste Hosted With By Wklejamy.pl