def wellenlaenge(d_array, mitte, L): d_links = unp.uarray(np.zeros(mitte), np.zeros(mitte)) d_rechts = unp.uarray(np.zeros(12-mitte), np.zeros(12-mitte)) for i in range(0, mitte, 1): d_links[i] = np.sum(d_array[mitte-(i+1):mitte]) for i in range(0, 12-mitte, 1): d_rechts[i] = np.sum(d_array[mitte:mitte+(i+1)]) g = (10**-3)/80 print('g = ', g*10**6, 'micro meter') d_links = d_links*10**-2 d_rechts = d_rechts*10**-2 d_all = np.concatenate((noms(d_links), noms(d_rechts))) n_links = np.linspace(1, 6, 6) lamda_links = g * unp.sin(unp.arctan(d_links/L))/n_links n_rechts = range(1, len(d_rechts)+1, 1) n_all = np.concatenate((n_links, n_rechts)) lamda_rechts = g * unp.sin(unp.arctan(d_rechts/L))/n_rechts lamda_all = np.concatenate((lamda_links, lamda_rechts)) werteZuTabelle(d_all*100, n_all.astype(int), (noms(lamda_all)*10**9).astype(int), (stds(lamda_all)*10**9).astype(int), rundungen=[3, 0, 0, 0]) print('lambda = ', (np.sum(lamda_all))/12) print('Abweichung = ', abweichungen(632.8*10**-9, (np.sum(lamda_all))/12)) print('Mittelwert = ', np.mean(noms(lamda_all)), '±', np.std(noms(lamda_all)))
errors = np.sqrt(np.diag(covariance)) print('m= ', params[0], '±', errors[0]) m = ufloat(params[0], errors[0]) x_fit = np.linspace(-0.0001, max(noms(x))+0.001) plt.plot(x_fit, fitfunktion(x_fit, *params), label='Fit') plt.xlim(0, 0.0045) plt.ylim(0, 1.75e-17) plt.xlabel(r'$I_0 \:/\: \si{\ampere}$') plt.ylabel(r'$I^2 \:/\: \si{\ampere\squared}$') delta_nu = ufloat(24.4, 0.4) delta_nu *= 10**3 e0 = m/(2*delta_nu) print("e0 = ", e0) e0theorie = ufloat(constants.physical_constants["elementary charge"][0], constants.physical_constants["elementary charge"][2]) print("Abweichung von Theorie= ", abweichungen(e0theorie, e0)) plt.legend(loc='best') # in matplotlibrc leider (noch) nicht möglich plt.tight_layout(pad=0.2, h_pad=1.08, w_pad=1.08) plt.savefig('build/plotElement.pdf') plt.close() if __name__ == '__main__': anodenstrom, spannung, V_N = np.genfromtxt('../Rauschen/daten/elementar.txt', unpack='True') werteZuTabelle(anodenstrom, spannung, V_N.astype('int'), rundungen=[1, 3, 0]) plotElement(unp.uarray(anodenstrom, 0.1), unp.uarray(spannung, 0.05), V_N, ufloat(4680, 1))
print(differenz) differenz *= 10**6 L = c/((np.sum(differenz)/4)*2) print('L = ', L) print('Abweichung = ', abweichungen(L_vergleich, L)) if __name__ == '__main__': # polarisation I = np.genfromtxt('daten/polarisation.txt', unpack='True') phi = np.linspace(0, 180, 19) phi = unp.uarray(phi, 1) phi_rad = (phi/360)*2*np.pi I = unp.uarray(I, 0.005) werteZuTabelle(noms(phi).astype(int), noms(I), rundungen=[0, 2]) plot(phi_rad, I, "Polarisation", "polarisation", r'$\phi/\si{\radian}$', r'$I/\si{\micro\ampere}$', fitfunktion_pol, [0.8, 2, 0], ["I_0", "phi_verschieb", "m"]) # moden x, I = np.genfromtxt('daten/tem00.txt', unpack='True') x = unp.uarray(x, 0.5) I = unp.uarray(I, 0.01) werteZuTabelle(noms(x).astype(int), noms(I), rundungen=[0, 3]) plot(x, I, r'TEM$_{00}$', 'grundmode', r'$x/\si{\milli\meter}$', r'$I/\si{\micro\ampere}$', fitfunktion_grundmode, [2.97, 13, 50], ["I_0", "x_0", "omega"])
def rauschzahl(spannung, T, widerstand, delta_nu, V_N): k = ufloat(constants.physical_constants["Boltzmann constant"][0], constants.physical_constants["Boltzmann constant"][2]) # e = ufloat(constants.physical_constants["elementary charge"][0], # constants.physical_constants["elementary charge"][2]) Vges = (1000**2) * (V_N**2) * 10 F = spannung / (4 * k * T * widerstand * delta_nu * Vges) return F if __name__ == '__main__': widerstand1, spannung1, V_N1 = np.genfromtxt('daten/widerstand1.txt', unpack='True') werteZuTabelle(widerstand1, spannung1 * 10**(-3), V_N1, rundungen=[0, 3, 0]) plotWiderstand(widerstand1, spannung1 * 10**(-3), V_N1, "1", ufloat(296.15, 2)) widerstand2, spannung2, V_N2 = np.genfromtxt('daten/widerstand2.txt', unpack='True') werteZuTabelle(widerstand2, spannung2 * 10**(-3), V_N2, rundungen=[0, 3, 0]) plotWiderstand(widerstand2 * 10**3, spannung2 * 10**(-3), V_N2, "2", ufloat(296.15, 2)) widerstand1Korr, spannung1Korr, V_N1Korr = np.genfromtxt( 'daten/widerstand1korr.txt', unpack='True')
plt.ylabel(r'$I \:/\: \si{\milli\ampere}$') plt.xlabel(r'$U \:/\: \si{\volt}$') # plt.ylim(0, 0.9) plt.legend(loc='best') # in matplotlibrc leider (noch) nicht möglich plt.tight_layout(pad=0, h_pad=1.08, w_pad=1.08) plt.savefig('build/plotKennlinie' + dateiname + '.pdf') plt.close() if __name__ == '__main__': anodenspannung1, anodenstrom1 = np.genfromtxt('daten/kennlinie1.txt', unpack='True') print("0.9A") werteZuTabelle(anodenstrom1, anodenspannung1.astype(int), rundungen=[1, 0]) plotKennlinie(anodenstrom1, anodenspannung1, "1", "0.9 A") anodenspannung2, anodenstrom2 = np.genfromtxt('daten/kennlinie2.txt', unpack='True') print("1A") werteZuTabelle(anodenstrom2, anodenspannung2.astype(int), rundungen=[1, 0]) plotKennlinie(anodenstrom2, anodenspannung2, "2", "1 A") anodenspannung3, anodenstrom3 = np.genfromtxt('daten/kennlinie3.txt', unpack='True') print("0.95A") werteZuTabelle(anodenstrom3, anodenspannung3.astype(int), rundungen=[1, 0]) plotKennlinie(anodenstrom3, anodenspannung3, "3", "0.95 A") # werteZuTabelle(kreisfrequenz, spannung, # rundungen=[3, 1])
'daten/oxidkurveband.txt', unpack='True') R_oxid = 2200 nu_MBand = unp.uarray(nu_MBand, 5) delta_nuBand = unp.uarray(delta_nuBand, sigma_delta_nuBand) spannungBand = unp.uarray(spannungBand, 0.05) stromband = spannungBand / (R_oxid**2) nu_Msel, spannungsel, V_Nsel = np.genfromtxt('daten/oxidkurvesel.txt', unpack='True') nu_Msel = unp.uarray(nu_Msel, 0.1 * nu_Msel) spannungsel = unp.uarray(spannungsel, 0.005) stromsel = spannungsel / (R_oxid**2) delta_nusel = commuteDeltaNu(nu_Msel, "oxyd") werteZuTabelle(noms(np.append(nu_MBand, nu_Msel)), stds(np.append(nu_MBand, nu_Msel)), noms(np.append(delta_nuBand, delta_nusel)), stds(np.append(delta_nuBand, delta_nusel)), noms(np.append(spannungBand, spannungsel)), stds(np.append(spannungBand, spannungsel)), np.append(V_NBand, V_Nsel).astype('int'), rundungen=[2, 4, 3, 4, 3, 3, 0]) plotSpektrum(np.append(nu_MBand, nu_Msel), np.append(stromband, stromsel), np.append(V_NBand, V_Nsel), np.append(delta_nuBand * 10**3, delta_nusel * 10**3), "Oxid") # rein: nu_MBand2, delta_nuBand2, sigma_delta_nuBand2, spannungBand2, V_NBand2 = np.genfromtxt( 'daten/reinkurveband.txt', unpack='True') R_rein = 4680 nu_MBand2 = unp.uarray(nu_MBand2, 5) delta_nuBand2 = unp.uarray(delta_nuBand2, sigma_delta_nuBand2) spannungBand2 = unp.uarray(spannungBand2, 0.05) stromband2 = spannungBand2 / (R_rein**2)
plt.close() # integration: x *= 10**(3) # auf Hz umrechnen # int = (max(x) - min(x))/len(x) * sum(y) # print("Integral der Durchlasskurve= ", int) int_trapez = trapezFormel(x, y) print("Integral mit trapez = ", int_trapez) int_scipy = integrate.simps(noms(y), x=noms(x)) print("Integral mit scipy = ", int_scipy) int = ufloat(int_scipy, 0) file = open("build/eichung"+dateiname+".txt", "w") file.write(str(int.n)) file.write(" ") file.write(str(int.s)) file.close() if __name__ == '__main__': nu, spannung = np.genfromtxt('daten/eichung.txt', unpack='True') werteZuTabelle(nu, spannung, rundungen=[3, 3]) plotDurchlass(spannung, nu, None, 0.2, "einfach") nu2, spannung2, V_N2 = np.genfromtxt('daten/eichung2.txt', unpack='True') print("Datentyp=", type(V_N2[0]), type(spannung2[0])) werteZuTabelle(nu2, spannung2, V_N2.astype(int), rundungen=[3, 3, 0]) plotDurchlass(spannung2, nu2, V_N2, 0.5, "Korrelator")
import matplotlib.pyplot as plt import numpy as np from functions import werteZuTabelle, abweichungen, mittelwert from scipy.optimize import curve_fit, fmin import uncertainties.unumpy as unp def plotphase(kreisfrequenz, spannung): # plt.errorbar(unp.nominal_values(x), unp.nominal_values(y), # xerr=unp.std_devs(x), yerr=unp.std_devs(y), fmt='kx', label='Messwerte') plt.plot(kreisfrequenz, spannung, 'kx', label='Messwerte') plt.xlabel(r'$\cos(\Delta\phi)$') plt.ylabel(r'$U \:/\: \si{\volt}$') plt.legend(loc='best') # in matplotlibrc leider (noch) nicht möglich plt.tight_layout(pad=0, h_pad=1.08, w_pad=1.08) plt.savefig('build/plotphase.pdf') plt.close() if __name__ == '__main__': kreisfrequenz, spannung = np.genfromtxt('../Modulation/daten/gleichspannungphase.txt', unpack='True') plotphase(kreisfrequenz, spannung) werteZuTabelle(kreisfrequenz, spannung, rundungen=[3, 1])
if __name__ == '__main__': verst_bandbreite = [] fig, axs = plt.subplots(2, 2, figsize=(15, 10)) print(axs) # 1. Kombi nu_1, U_A_1, U_1_1, phi_1 = np.genfromtxt('daten/gegen_1.txt', unpack='True') sort_inds_1 = nu_1.argsort() nu_1 = unp.uarray(nu_1, nu_1 * 0.1)[sort_inds_1] U_A_1 = unp.uarray(U_A_1, 10)[sort_inds_1] U_1_1 = unp.uarray(U_1_1, 10)[sort_inds_1] V_strich_1 = U_A_1 / U_1_1 werteZuTabelle(noms(nu_1), noms(U_1_1).astype(int), noms(U_A_1).astype(int), noms(V_strich_1), noms(phi_1).astype(int), rundungen=[1, 0, 0, 1, 0]) R_N_1, R_1_1 = ufloat(9.96e3, 0.05e3), ufloat(9.96e3, 0.05e3) V_strich_theorie_1 = R_N_1 / R_1_1 phi_1 = unp.uarray(phi_1, 5)[sort_inds_1] grenzfrequenz_1, plateau_mittel_1 = plot(axs[0][0], unp.log(nu_1), unp.log(V_strich_1), V_strich_theorie_1, '1. Widerstandskombination', 'gegen_1', r'$\ln(\nu\:/\:\si{\kilo\hertz})$', r"$\ln(V')$", 4, (-2, 0.25), uebergang=4) verst_bandbreite.append(grenzfrequenz_1 * plateau_mittel_1) V_1 = 1 / ((1 / plateau_mittel_1) - (R_1_1/R_N_1)) print('V_1= ', V_1) # 2. Kombi nu_2, U_A_2, U_1_2, phi_2 = np.genfromtxt('daten/gegen_2.txt', unpack='True') sort_inds_2 = nu_2.argsort() nu_2 = unp.uarray(nu_2, nu_2 * 0.1)[sort_inds_2] U_A_2 = unp.uarray(U_A_2, 10)[sort_inds_2] U_1_2 = unp.uarray(U_1_2, 10)[sort_inds_2]
plt.tight_layout(pad=0.2, h_pad=1.08, w_pad=1.08) plt.savefig('build/' + file + '.pdf') plt.close() if __name__ == '__main__': #integrator C_int = ufloat(970e-9, 10e-9) #nF R_int = ufloat(99.7e3, 0.5e3) #kohm print('R*C = ', C_int * R_int) nu_int, U_a_int, U_1_int = np.genfromtxt('daten/integrator.txt', unpack='True') ind_sort = np.argsort(nu_int) werteZuTabelle(2 * np.pi * noms(nu_int)[ind_sort], noms(U_1_int)[ind_sort].astype('int'), noms(U_a_int)[ind_sort], noms(U_a_int / U_1_int)[ind_sort], rundungen=[2, 1, 0, 2]) U_a_int = unp.uarray(U_a_int, 5) U_1_int = unp.uarray(U_1_int, 5) nu_int = unp.uarray(nu_int, 5) plot(2 * np.pi * nu_int, U_a_int / U_1_int, 'integrator', R_int, C_int, fitfunktion_int, 0.1, (1, 8), xlim=(2, 7), int=True)