def table(name, data): j=0 i=0 f = np.zeros(len(data)) for i in range(len(data)): if(type(data[i][0]) == type(dummy) or type(data[i][0]) == type(dummyarray[1]) or type(data) == type(udummyarray)): f[i] = True else: f[i] = False print(f) #Runden for i in range(len(data)): if(f[i]): for j in range(data[0]): sdevs(data[i][j]) = rts(sdevs(data[i][j])) noms(data[i][j]) = round((noms(data[i][j]), -int(m.floor(m.log10(abs(x)))))) output = open(name, 'w') output.write(r'\begin{table}[h]' + '\n' + r'\centering' + '\n' + r'\caption{CAPTION}' + '\n' +r'\sisetup{%uncertainty-seperator = {\,},'+'\n'+r'table-number-alignment = center,'+'\n'+'table-unit-alignment = center,'+'\n'+'%table-figures-integer = 1,'+'\n'+'%table-figures-decimal = 1,'+'\n'+'table-auto-round = true'+'\n'+'}'+'\n'+ r'\begin{tabular}{ ') for i in range(len(data)): if(f[i]): output.write(r'S[table-format= 3.1]'+'\n'+' @{\,$\pm{}$\,} '+'\n' + r' S[table-format= 3.1] ') else: output.write(r' S[table-format= 3.1] '+'\n') output.write(r'}' + '\n' + r'\toprule' + '\n') for i in range(len(data)): if(i < (len(data)-1)): if(f[i]): output.write(r'\multicolumn{2}{c}{TITLE}'+'\n'+'&') else: output.write(r'{$\text{Title}$}'+'\n'+'&') else: if(f[i]): output.write(r'\multicolumn{2}{c}{TITLE} \\'+'\n') else: output.write(r'{$\text{Title}$} \\'+'\n') output.write(r' \midrule' + '\n') #Tabelle for j in range(len(data[0])): i = 0 while i <= len(data)-1: if(f[i]): if(i == len(data)-1): output.write(str(data[i][j].n) + '&' + str(data[i][j].s) + r'\\' + '\n') else: output.write(str(data[i][j].n)+ '&' + str(data[i][j].s) + '&') i = i+1 else: if(i == len(data)-1): output.write(str(data[i][j]) + r'\\' + '\n') else: output.write(str(data[i][j]) + '&') i = i+1 #Tabelle Ende output.write(r'\bottomrule' + '\n' + r'\end{tabular}' + '\n' + r'\label{tab:LABEL}' + '\n' + r'\end{table}') output.close()
Z.append(np.sqrt(2 * np.pi) * hoehe[i] * sigma[i]) Q.append(Z[i] / (omega_4pi * A_jetzt * W[i] / 100 * 4676)) #Potenzfunktion für Fit def potenz(x, a, b, c, e): return a * (x - b)**e + c #Durchführung des Exponential-Fits und Ausgabe der Parameter #print('Daten für den Exponentialfit:') #print(noms(Q), noms(E_det)) params2, covariance2 = curve_fit(potenz, noms(E_det), noms(Q), sigma=sdevs(Q), p0=[1, 0.1, 0, 0.5]) errors2 = np.sqrt(np.diag(covariance2)) #Zusammenfassen der Fit-Parameter a = ufloat(params2[0], errors2[0]) b = ufloat(params2[1], errors2[1]) c = ufloat(params2[2], errors2[2]) e = ufloat(params2[3], errors2[3]) #-----------------------Teilaufgabe b) {Untersuchung des Cs-Spektrums} data_b = np.genfromtxt('data/Cs137.txt', unpack=True) x_plot = np.linspace(0, len(data_b), len(data_b)) #Finde Peaks in Spektrum und ordne sie der Energie zu peaks_2 = find_peaks(data_b, height=60, distance=20) indexes_2 = peaks_2[0]
#E=E[1:] #E_det=E_det[1:] #Potenzfunktion für Fit def potenz(x, a, b, c, e): return a * (x - b)**e + c #Durchführung des Exponential-Fits und Ausgabe der Parameter #print('Daten für den Exponentialfit:') #print(noms(Q), noms(E_det)) params2, covariance2 = curve_fit(potenz, noms(E_det), noms(Q), sigma=sdevs(Q), p0=[1, 0.1, 0, 0.5]) errors2 = np.sqrt(np.diag(covariance2)) #Zusammenfassen der Fit-Parameter a = ufloat(params2[0], errors2[0]) b = ufloat(params2[1], errors2[1]) c = ufloat(params2[2], errors2[2]) e = ufloat(params2[3], errors2[3]) #Ausgabe der Fit-Parameter print('\nKalibrationswerte Potenzfunktion:') print(f'Steigung a = {a}') print(f'Verschiebung b = {b}') print(f'Verschiebung c = {c}') print(f'Exponent e = {e}')
#Plotten des vom Detektor aufgenommenen Spektrums + logarithmische y-Achse evtl mit Enegrie x=np.linspace(1,8192,8192) plt.bar(lin(x,*params), data, label='Messdaten') plt.xlim(0, 1600) plt.xlabel(r'Energie $E$') plt.ylabel(r'Zählergebnis $N$') plt.legend(loc='best') plt.yscale('log') plt.savefig('build/Eu_log_Energie.pdf') plt.clf() #Plotten der Eichung/Kalibrierung am Eu-Spektrum x=np.linspace(250,3700,3450) plt.plot(x, lin(x,*params),'r-',label='Fit') plt.errorbar(noms(index_f), noms(E), yerr=sdevs(E), xerr=sdevs(index_f), fillstyle= None, fmt=' x', label='Daten') plt.ylim(0,1500) plt.xlim(0, 4000) plt.xlabel(r'Kanalnummer $\mu_\mathrm{i}$') plt.grid() plt.ylabel(r'$E_\gamma\:/\: \mathrm{keV}$') plt.legend() plt.savefig('build/kalibration.pdf') plt.clf() #--------------------Detektoreffizenz print('\n-------------Detektoreffizentz----------------') #Berechnung der Aktivität am Messtag A=ufloat(4130,60) #Aktivität Europium-Quelle am 01.10.2000 lamda = ufloat(1.6244e-9, 0.0019e-9) #Zerfallskonstante Europium in Tagen in s⁻¹ dt = 18*365.25 + 194 #Zeitintervall in Tagen
perr = np.sqrt(np.diag(covs)) param = unp.uarray(params, perr) # print(param) alpha = param[2] * unp.log(param[0] * T + param[1]) # print(alpha) # Cp bestimmen Cp = M / m * E / dT # Cv bestimmen Cv = Cp - 9 * (alpha[1:]) ** 2 * V0 * T[1:] * K # Plot plt.errorbar(noms(T[1:]), noms(Cp), xerr=sdevs(T[1:]), yerr=sdevs(Cp), fmt="bx", label=r"$C_p$") plt.errorbar(noms(T[1:]), noms(Cv), xerr=sdevs(T[1:]), yerr=sdevs(Cv), fmt="mx", label=r"$C_V$") plt.grid() plt.xlabel(r"$T\:/\:\si\kelvin$") plt.ylabel(r"$C_\text{V / p}$ $/$ $\si{\joule\per\mole\per\kelvin}$") plt.legend(loc="best", numpoints=1) # plt.show() plt.savefig("pc/cvcp.pdf") plt.savefig("pc/plot.pdf") plt.clf() TT = T[1:] Cvv = Cv Td = unp.uarray(np.zeros(8), 0) Cvd = unp.uarray(np.zeros(8), 0) for i in range(len(TT)):