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)))
Example #2
0
    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')
Example #5
0
    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")
Example #8
0
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])
Example #9
0

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]
Example #10
0
    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)