i3 *= cs.degree d_i3 *= cs.degree f3_G_low_p1 = 2.9 * cs.kilo d_f3_G_low_p1 = 0.3 * cs.kilo f3_G_high_p1 = 3.1 * cs.kilo d_f3_G_high_p1 = 0.3 * cs.kilo f3_G_high_p2 = (pi - 4 * i3) / (4 * s3) d_f3_G_high_p2 = f3_G_high_p2 * sqrt((4 * d_i3 / (pi - 4 * i3))**2 + (d_s3 / s3)**2) f3_G_T = 1 / (2 * pi * R3 * C3) d_f3_G_T = f3_G_T * sqrt((d_R3 / R3)**2 + (d_C3 / C3)**2) print('3. Frequency and phase of a RC-element:') print(ms.val('s', s3, d_s3)) print(ms.val('i', i3, d_i3)) print(ms.val('low: f_G', f3_G_low, d_f3_G_low, unit='Hz')) print(ms.val('high: f_G', f3_G_high, d_f3_G_high, unit='Hz')) print(ms.val('low: f_G', f3_G_low_p1, d_f3_G_low_p1, unit='Hz')) print(ms.val('high: f_G', f3_G_high_p1, d_f3_G_high_p1, unit='Hz')) print(ms.val('high: f_G', f3_G_high_p2, d_f3_G_high_p2, unit='Hz')) print(ms.val('f_G', f3_G_T, d_f3_G_T, unit='Hz')) print(ms.dev(f3_G_low, d_f3_G_low, f3_G_T, d_f3_G_T, name='low: f_G')) print(ms.dev(f3_G_high, d_f3_G_high, f3_G_T, d_f3_G_T, name='high: f_G')) print(ms.dev(f3_G_low_p1, d_f3_G_low_p1, f3_G_T, d_f3_G_T, name='low: f_G')) print(ms.dev(f3_G_high_p1, d_f3_G_high_p1, f3_G_T, d_f3_G_T, name='high: f_G')) print(ms.dev(f3_G_high_p2, d_f3_G_high_p2, f3_G_T, d_f3_G_T, name='high: f_G')) print() # (4) Frequency of an oscillating circuit
sn = 119e-3 dsn = 1e-3 sa = 852e-3 dsa = 3e-3 # Preparation lp = [lpo[i] - lpu[i] for i in range(len(lpo))] dlp = ms.std_dev_m(lp) # "+" ms.sqrt(2) * dlp # If one uses the addition of the systematic and statistic uncertainty, it must be quadratic lp = ms.mean_value(lp) l = lp - rk dl = ms.sqrt(dlp**2 + drk**2) dt = ms.std_dev_e(t0) T0 = ms.mean_value(t0) / n0 n1 = 2 * l * dt / (0.3 * T0 * dl) print() print(ms.val("n1", int(n1 + 0.5))) print() print(ms.val("gl", gl, dgl)) # Simple calculation T = t / n dT = dt / n gs = 4 * ms.pi**2 * l / T**2 dgs = 4 * ms.pi**2 / T**2 * ms.sqrt(dl**2 + (2 * l * dT / T)**2) print() print(ms.val("gs", gs, dgs)) print(ms.sig("dev gs & gl", gs, dgs, gl, dgl)) # Complex calculation mk = rhoe * 4 / 3 * ms.pi * rk**3
d_s1 = sqrt(d_n1[1]**2 + d_n1[0]**2) s1_p = s1 / n1[0] d_s1_p = s1_p * sqrt((d_s1 / s1)**2 + (d_n1[0] / n1[0])**2) T1 = 1/0.01 * (n1[1] + n1[0]) / (n1[1] - n1[0]) s2 = n2[1] - n2[0] d_s2 = sqrt(d_n2[1]**2 + d_n2[0]**2) s2_p = s2 / n2[0] d_s2_p = s2_p * sqrt((d_s2 / s2)**2 + (d_n2[0] / n2[0])**2) T2 = 1/0.01 * (n2[1] + n2[0]) / (n2[1] - n2[0]) print() print("Plateau-slope:") print(ms.val('s1', s1, d_s1)) print(ms.val('s1_p', s1_p * 100, d_s1_p * 100, unit='%', prefix=False)) print() print(ms.sig('s1,0', s1, d_s1, 0.0)) print(ms.val('T1', T1 / sc.hour, unit='hours', prefix=False)) print(ms.val('s1_p + Δs1_p', (s1_p + d_s1_p) * 100, unit='%', prefix=False)) print(ms.val('s1_p + 2 Δs1_p', (s1_p + 2 * d_s1_p) * 100, unit='%', prefix=False)) print() print(ms.val('s2', s2, d_s2)) print(ms.val('s2_p', s2_p * 100, d_s2_p * 100, unit='%', prefix=False)) print() print(ms.sig('s2,0', s2, d_s2, 0.0)) print(ms.val('T2', T2 / sc.hour, unit='hours', prefix=False)) print(ms.val('s2_p + Δs2_p', (s2_p + d_s2_p) * 100, unit='%', prefix=False)) print(ms.val('s2_p + 2 Δs2_p', (s2_p + 2 * d_s2_p) * 100, unit='%', prefix=False)) print()
def fitfunc(f, V, W1, W2, n1, n2): return V / (np.sqrt(1 + 1 / (f / W1)**(2 * n1)) * np.sqrt(1 + (f / W2)**(2 * n2))) V = 1000 W1 = 1000 W2 = 50000 n1 = 5 n2 = 5 p0 = (V, W1, W2, n1, n2) popt, pcov = curve_fit(fitfunc, f[15:-43], g[15:-43], p0) print() print(val(popt[0], sqrt(pcov[0][0]), 'V')) print(val(popt[1], sqrt(pcov[1][1]), 'W1')) print(val(popt[2], sqrt(pcov[2][2]), 'W2')) print(val(popt[3], sqrt(pcov[3][3]), 'n1')) print(val(popt[4], sqrt(pcov[4][4]), 'n2')) pltext.initplot(num=2, title='Abbildung : Frequenzgang (Fit)', xlabel='Frequenz in Hz', ylabel='g(f)', scale='loglog') pltext.plotdata(f[17:-45], g[17:-45], label='Messwerte') f_array = nplinspace(4e2, 1.2e5) plt.plot(f_array, fitfunc(f_array, *popt), label='Fit') pltext.set_layout(legend=True, xlim=(4e2, 1.2e5), ylim=(1e1, 2e3))
wl = 2. * ds / wl_m wl_dsys = 2. / wl_m * sqrt(ds_dsys**2 + (wl_m_dsys / wl_m)**2) wl_mv = mv(wl) wl_mv_dsto = dsto_mv(wl) wl_mv_dsys = dsys_mv(wl_dsys) wl_mv_dtot = dtot(wl_mv_dsys, wl_mv_dsto) print() print('Wellenlänge Laser:') print( tbl([ lst(ds, ds_dsys, 'ds'), lst(wl_m, wl_m_dsys, 'm'), lst(wl, wl_dsys, 'wl') ], )) print(val('Mitellwert', wl_mv, wl_mv_dtot)) print(sig('Abweichung', wl_mv, wl_mv_dtot, wl_lit, wl_lit_dsys)) # Brechungsindex Luft pltext.initplot(num=1, title='Brechungsindex Luft', xlabel='Intensitätsringe', ylabel='Druck in Pa') [sl1, dsl1, tmp, tmp] = linreg(bi_m1, bi_p1, bi_p1_dsys, plot=True, graphname='1. Durchgang') [sl2, dsl2, tmp, tmp] = linreg(bi_m2, bi_p2, bi_p2_dsys,
sr_E_alpha / sqrt(cs.e), d_sr_E_alpha / sqrt(cs.e), plot=True) s1 *= sqrt(cs.e) d_s1 *= sqrt(cs.e) b1 *= sqrt(cs.e) d_b1 *= sqrt(cs.e) E1_R = 4 / 3 * s1**2 d_E1_R = E1_R * (2 * d_s1 / s1) sigma1_12 = -sqrt(4 / 3) * b1 / sqrt(E1_R) d_sigma1_12 = sigma1_12 * sqrt((d_b1 / b1)**2 + (d_E1_R / (2 * E1_R))**2) print() print("K_α Radiation:") print(ms.val("s", s1, d_s1)) print(ms.val("b", b1, d_b1)) print() print(ms.val("E_R", E1_R / cs.e, d_E1_R / cs.e, unit='eV')) print(ms.sig("E_R,l", E1_R, d_E1_R, cs.Rydberg * cs.h * cs.c)) print(ms.val("σ_12", sigma1_12, d_sigma1_12)) print() # Determination of the Rydberg-energy and the screening constant for the K_β-Radiation Z2 = npf([Z1[i] for i in range(len(Z1)) if i != 3]) E_beta = npf([7.06, 8.91, 24.59, 17.69, 9.59, 8.26, 19.58]) * cs.kilo * cs.e d_E_beta = npf([0.17, 0.17, 0.15, 0.18, 0.17, 0.18, 0.24]) * cs.kilo * cs.e sr_E_beta = sqrt(E_beta) d_sr_E_beta = d_E_beta / (2 * sr_E_beta) ms.pltext.initplot(num=2,
cd_k = h1 / (h1 - h3) cd_k_dsys = hi_dsys / (h1 - h3) * sqrt((1 + h1 / (h1 - h3))**2 + (1 / (h1 - h3))**2) cd_k_mv = mv(cd_k) cd_k_dsto_mv = dsto_mv(cd_k) cd_k_dsys_mv = dsys_mv(cd_k_dsys) cd_k_dtot = sqrt(cd_k_dsto_mv**2 + cd_k_dsys_mv**2) print() print('Clément & Desormes:') print() print(tbl(['h1', 'h3', 'k'], [h1, h3, cd_k], [hi_dsys, hi_dsys, cd_k_dsys])) print() print(val('k', cd_k_mv, cd_k_dtot)) print(sig('dev', cd_k_mv, cd_k_dtot, k_air_lit)) # Rüchardt r_air = rh_2r_air / 2. r_air_dsys = rh_2r_dsys / 2. T_air = rh_50T_air / 50. T_air_dsys = rh_50T_dsys / 50. rh_k_air = 4. * rh_m_air * rh_V_air / (r_air**4 * T_air**2 * rh_p) rh_k_air_dsys = 4. / (r_air**4 * T_air**2 * rh_p) * sqrt( (rh_m_dsys * rh_V_air)**2 + (rh_m_air * rh_V_dsys)**2 + (rh_m_air * rh_V_air)**2 * ((4. * r_air_dsys / r_air)**2 + (2. * T_air_dsys / T_air)**2 + (rh_p_dsys / rh_p)**2)) r_arg = rh_2r_arg / 2.
r_sqr_dsto = dsto_mv(r_sqr) dt_mv = mv(dt) dt_dsto = dsto_mv(dt) hist_D = r_sqr_mv / (4. * dt_mv) hist_D_dtot = 1. / (4. * dt_mv) * sqrt(r_sqr_dsto**2 + (r_sqr_mv * dt_dsto / dt_mv)**2) hist_kB = 6. * pi * nu * r_k * hist_D / T_mv hist_kB_dtot = 6. * pi / T_mv * sqrt((nu_dsys * r_k * hist_D)**2 + (nu * r_k_dsys * hist_D)**2 + (nu * r_k * hist_D_dtot)**2 + (nu * r_k * hist_D * T_dtot / T_mv)**2) print() print('Mittelung:') print(val('mittleres Verschiebungsquadrat', r_sqr_mv, r_sqr_dsto)) print(val('mittlerer Zeitabschnitt', dt_mv, dt_dsto)) print(val('Diffusionskonstante D', hist_D, hist_D_dtot)) print(val('Bolatzmannkonstante k', hist_kB, hist_kB_dtot)) # Histogramm d_all = 1e6 * np.append(dx, dy) points = npfarray([0.01 * n for n in range(-300, 301)]) mu = mv(d_all) sigma = dsto(d_all) gauss = norm.pdf(points, mu, sigma) pltext.initplot(num=2, title='Histogramm der Verschiebungen', xlabel='Verschiebung in μm', ylabel='relative Häufigkeit')
pltext.initplot(num=1, title='Abbildung : Zählrohrcharakteristik', xlabel='Spannung in V', ylabel='Ereignisse') pltext.plotdata(U, N, N_dsto, label='Messwerte') [slope, dslope] = linreg(U[1:], N[1:], N_dsto[1:], plot=True, prange=(410, 580))[0:2] pltext.set_layout(xlim=(410, 580), ylim=(1800, 2500)) U0 = 510 print('\nAufgabe 2\n') print(val(slope, dslope, name='Steigung')) # Aufgabe 3 U = [510, 610] N1min = npfarray([9838, 9871]) N1min_dsto = sqrt(N1min) N3min = npfarray([29505, 30144]) N3min_dsto = sqrt(N3min) anstieg_1min = N1min[1] - N1min[0] anstieg_1min_dsto = sqrt(N1min_dsto[1]**2 + N1min_dsto[0]**2) rel_anstieg_1min = anstieg_1min / N1min[0] rel_anstieg_1min_dsto = 1 / N1min[0] * sqrt(anstieg_1min_dsto**2 + (anstieg_1min * N1min_dsto[0] / N1min[0])**2)
# 1. Nebenserie print() print("Fit für 1. Nebenserie:") wl1 = [wl[36], wl[17], wl[14], wl[12], wl[10], wl[8], wl[7], wl[6], wl[5], wl[4]] dwl1 = [_dwl for i in range(len(wl1))] qz = [float(i) for i in range(3,13)] def fit_func1(m,E_Ry,E_3p,D_d): return h / e * c / (E_Ry * (m - D_d)**-2 - E_3p) para = [Eryd, E3p, pCorr] popt, pcov = curve_fit(fit_func1, qz, wl1, sigma=dwl1, p0=para) Ery1 = popt[0] dEry1 = sqrt(pcov[0][0]) E3p1 = popt[1] dE3p1 = sqrt(pcov[1][1]) print(val("Ery", Ery1, dEry1)) print(val("E3p", E3p1, dE3p1)) print(val("dCorr", popt[2], sqrt(pcov[2][2]))) _chi2 = chi2(wl1, dwl1, fit_func1(qz,*popt)) dof = len(qz) - 3 _chi2_red = chi2_red(wl1, dwl1, fit_func1(qz,*popt), dof=dof) print(val("chi2", _chi2)) print(val("chi2_red", _chi2_red)) print(val("Wkeit", 1 - sci_chi2.cdf(_chi2, dof))) wl1plot = plot(title="1. Nebenserie", xlabel="Quantenzahl", ylabel="Wellenlänge", figure=2) wl1plot.plotdata(qz, wl1, dwl1, label="Messwerte") x = np.linspace(2.8, 12.2, 100) wl1plot.plotfunc(x, fit_func1(x,*popt), label="Fitfunktion") wl1plot.drawplot() wl1plot.saveplot("1. Nebenserie.pdf")
t_hv = ln(2.) / D t_hv_dsys = ln(2.) * dD / D**2 dampingplot = plot(title='Linear regression of the damping constant', xlabel='t / s', ylabel='f / Hz', fig=1, scale='linlog') dampingplot.plt.grid(False) dampingplot.plotdata(t, f, df) dampingplot.plotfunc(t, f0 * exp(-D * t), label='line of best fit') dampingplot.plotfunc(t, (f0 + df0) * exp(-(D + dD) * t), label='line of uncertanty') print() print(val('damping constant', D, dD)) print(val('half value time', t_hv, t_hv_dsys)) # moment of anertia Iz with precession f_m1x15 = moa_umin_1x15 / 120. * (1. + exp(-D * moa_Tp_1x15)) df_m1x15 = 1. / 120. * sqrt((moa_dumin * (1. + exp(-D * moa_Tp_1x15)))**2 + (moa_umin_1x15 * exp(-D * moa_Tp_1x15))**2 * ((D * moa_dTp)**2 + (dD * moa_Tp_1x15)**2)) f_m1x20 = moa_umin_1x20 / 120. * (1. + exp(-D * moa_Tp_1x20)) df_m1x20 = 1. / 120. * sqrt((moa_dumin * (1. + exp(-D * moa_Tp_1x20)))**2 + (moa_umin_1x20 * exp(-D * moa_Tp_1x20))**2 * ((D * moa_dTp)**2 + (dD * moa_Tp_1x20)**2)) f_m2x15 = moa_umin_2x15 / 120. * (1. + exp(-D * moa_Tp_2x15)) df_m2x15 = 1. / 120. * sqrt((moa_dumin * (1. + exp(-D * moa_Tp_2x15)))**2 + (moa_umin_2x15 * exp(-D * moa_Tp_2x15))**2 * ((D * moa_dTp)**2 + (dD * moa_Tp_2x15)**2))
title=titles[0], xlabel=r'$R$ / k$\Omega$', ylabel=r'$(U_N^2 - U_V^2)$ / mV$^2$', fignum=True) s2, d_s2, b2, d_b2 = ms.linreg(R1, U2_diff / cs.milli**2, d_U2_diff / cs.milli**2, d_R1, plot=True) s2 *= cs.milli**2 d_s2 *= cs.milli**2 b2 *= cs.milli**2 d_b2 *= cs.milli**2 print() print(ms.val('s', s2, d_s2)) print(ms.val('b', b2, d_b2)) print() # Measurement of the measurement system's frequency slope D = 0.001 d_D = 0.002 * D def g_fit(f, V, Omg1, Omg2, n1, n2): return V / sqrt((1 + (Omg1 / f)**(2 * n1)) * (1 + (f / Omg2)**(2 * n2))) def g2_fit(f, V, Omg1, Omg2, n1, n2): return g_fit(f, V, Omg1, Omg2, n1, n2)**2
U6_i = 0.072 / 2 d_U6_i = 0.001 / 2 # Determination of the magnetic field at the center of the helmholtz coil ms.pltext.initplot(num=2, title='Induzierte Spannung in Abhängigkeit der Rotationsfrequenz bei konstantem Strom und Gleichspannung', xlabel='f / Hz', ylabel='U / V', fignum=True) [s1, d_s1, tmp, tmp] = ms.linreg(f1, U1_i, d_U1_i, d_f1, plot=True) ms.pltext.initplot(num=3, title='Induzierte Spannung in Abhängigkeit des Spulenstroms bei konstanter Rotationsfrequenz und Gleichspannung', xlabel='I / A', ylabel='U / V', fignum=True) ms.linreg(I2, U2_i, d_U2_i, d_I2, plot=True) B1 = s1 / (2 * pi * n_i * A_i) d_B1 = d_s1 / (2 * pi * n_i * A_i) B1_ = (8 / sqrt(125)) * sc.mu_0 * I1 * n_h / r_h d_B1_ = (8 / sqrt(125)) * sc.mu_0 * d_I1 * n_h / r_h print(ms.val("s1", s1, d_s1)) print(ms.val("B1", B1, d_B1, unit='T')) print(ms.val("B1'", B1_, d_B1_, unit='T')) print(ms.sig("B1,B1'", B1, d_B1, B1_, d_B1_)) print() # Determination of the inductance of the helmholtz coil ms.pltext.initplot(num=4, title='Amplitude der Induktionsspannung in Abhängigkeit des Winkels bei Wechselspannung', xlabel='α / °', ylabel='U / V', fignum=True) ms.pltext.plotdata(α3, U3_i, d_U3_i, d_α3, connect=True) Ui_U_ratio = U4_i / U4 d_Ui_U_ratio = Ui_U_ratio * sqrt((d_U4_i / U4_i)**2 + (d_U4 / U4)**2) ms.pltext.initplot(num=5, title='Verhältnis der Induktionsspannungsamplitude zur Spulenspannungsamplitude\nin Abhängigkeit der Spannungsfrequenz bei Wechselspannung', xlabel='f / Hz', ylabel='Ui / U', fignum=True) ms.pltext.plotdata(f4, Ui_U_ratio, d_Ui_U_ratio, d_f4, connect=True) U_I_ratio = U4 / I4
((1 - Ug / yitc) * a1_uncorr_err)**2) d = 201.4e-12 U = 35e3 l = 2 * d * sin(a1) l_err = 2 * d * cos(a1) * a1_err h = l * e * U / c h_err = l_err * e * U / c a2 = arcsin(l / d) a2_err = 1 / (d * sqrt(1 - (l / d)**2)) * l_err print('\nAufgabe 1a:\n') print(val(a1_uncorr * rad_to_deg, a1_uncorr_err * rad_to_deg, 'a1 (uncorr)')) print(val(Ug, Ug_err, 'Ug')) print(val(a1 * rad_to_deg, a1_err * rad_to_deg, 'a1')) print(val(l, l_err, 'l')) print(val(h, h_err, 'h')) print(dev(h, h_err, h_lit, name='Abw', perc=True)) print(val(a2 * rad_to_deg, a2_err * rad_to_deg, 'a2')) # Aufgabe 1b alpha_1o, rate_1o = loadtxt('data/255_1b_1o.txt', unpack=True) rate_1o_err = sqrt(rate_1o) alpha_2o, rate_2o = loadtxt('data/255_1b_2o.txt', unpack=True) rate_2o_err = sqrt(rate_2o) def gauss(x, A, mu, sig, Ug):
Wh = km_U_heiz * km_I_heiz / km_f Wh_dsys = 1./km_f * sqrt((km_U_heiz * km_I_heiz_dsys)**2 + (km_U_heiz_dsys * km_I_heiz)**2 + (km_U_heiz * km_I_heiz * km_f_dsys / km_f)**2) tWges = c_w * roh_w * km_dT * km_Vps_mv / km_f tWges_dsys = c_w / km_f * sqrt((roh_w_dsys * km_dT * km_Vps_mv)**2 + (roh_w * km_dT_dsys * km_Vps_mv)**2 + (roh_w * km_dT * km_Vps_dsys)**2 + (roh_w * km_dT * km_Vps_mv * km_f_dsys / km_f)**2) eWges = Wm + Wh eWges_dsys = sqrt(Wm_dsys**2 + Wh_dsys**2) dW = eWges - tWges dW_dsys = sqrt(eWges_dsys**2 + tWges_dsys**2) km_n = Wh / Wm km_n_dsys = 1./Wm * sqrt(Wh_dsys**2 + (Wh * Wm_dsys / Wm)**2) print() print(tbl([['Wm',val('',Wm,Wm_dsys)],['Wh',val('',Wh,Wh_dsys)],['Wm+Wh',val('',eWges,eWges_dsys)],['Q1',val('',tWges,tWges_dsys)],['dW',val('',dW,dW_dsys)]])) print(val('Wirkungsgrad', km_n, km_n_dsys)) # Gefrierzeit Wasser Pk = gf_V * roh_w * lamba_w / gf_t Pk_dsys = lamba_w / gf_t * sqrt((gf_V * roh_w * gf_t_dsys / gf_t)**2 + (gf_V * roh_w_dsys)**2 + (gf_V_dsys * roh_w)**2) Wk = Pk / gf_f Wk_dsys = 1 / gf_f * sqrt(Pk_dsys**2 + (Pk * gf_f_dsys / gf_f)**2) print() print(val('Pk', Pk, Pk_dsys)) print(val('Wk', Wk, Wk_dsys)) # Wärmekraftmaschine Qel = wk_Uh * wk_Ih / wk_f_mv Qel_dtot = 1 / wk_f_mv * sqrt((wk_Uh * wk_Ih_dsys)**2 + (wk_Uh_dsys * wk_Ih)**2 + (wk_Uh * wk_Ih * wk_f_dsto / wk_f_mv)**2)
R_V_df_A4 = R_ges_A4 - R_A4 R_V_df_A4_dsys = sqrt(R_ges_A4_dsys**2 + R_A4_dsys**2) R_V_df_A4_mv = mv(R_V_df_A4) R_V_df_A4_mv_dtot = dtot_mv(R_V_df_A4, R_ges_A4_dsys) R_V_U_A4 = R_A4 * (Ue / Ua - 1) R_V_U_A4_dsys = sqrt(((Ue / Ua - 1) * R_A4_dsys)**2 + (R_A4 * Ue / Ua**2 * Ua_dsys)**2) R_V_U_A4_mv = mv(R_V_U_A4) R_V_U_A4_mv_dtot = dtot_mv(R_V_U_A4, R_V_U_A4_dsys) print() print('Aufgabe 4:\n') print(val(L_A4_mv, L_A4_mv_dtot, 'Induktivität L')) print() print( tbl([ lst(R_A4, R_A4_dsys, 'R'), lst(R_ges_A4, R_ges_A4_dsys, 'R_ges (df)'), lst(R_V_df_A4, R_V_df_A4_dsys, 'R_V (df)'), lst(R_V_U_A4, R_V_U_A4_dsys, 'R_V (U)') ])) print( tbl([ lst([R_V_df_A4_mv], [R_V_df_A4_mv_dtot], 'mv(R_V) (df)'), lst([R_V_U_A4_mv], [R_V_U_A4_mv_dtot], 'mv(R_V) (U)'), ['Abw'] + [ sig('', R_V_df_A4_mv, R_V_df_A4_mv_dtot, R_V_U_A4_mv, R_V_U_A4_mv_dtot) ]
# measure version 1.8.6 from measure import plt, np, npfarray, sqrt, pltext, curve_fit, val, c, h, sig Z = npfarray([26, 42, 29, 22, 47, 40, 30, 28]) # Literaturwerte sqrt_Er_lit = sqrt(13.6e-3) sig12_lit = 1 p0 = npfarray([sqrt_Er_lit, sig12_lit]) print() print(val('Literaturwert sqrt(Er)', sqrt_Er_lit)) # K_alpha K_alpha = npfarray([6.42, 17.47, 8.08, 4.49, 21.90, 15.79, 8.68, 7.51]) Delta_K_alpha = npfarray([0.16, 0.17, 0.15, 0.16, 0.20, 0.17, 0.16, 0.15]) sqrt_K_alpha = sqrt(K_alpha) Delta_sqrt_K_alpha = 1 / 2 * 1 / sqrt(K_alpha) * Delta_K_alpha pltext.initplot(num=1, title=r'$\sqrt{E_\alpha}$ als Funktion von $Z$', xlabel=r'$Z$', ylabel=r'$\sqrt{E_\alpha}$ in $\sqrt{keV}$') pltext.plotdata(x=Z, y=sqrt_K_alpha, dy=Delta_sqrt_K_alpha) n1 = 1 n2 = 2 def fit_func_alpha(x, sqrt_Er, sig12): return sqrt_Er * (x - sig12) * sqrt(1 / n1**2 - 1 / n2**2)
rho_Pb = 11.34 * cs.gram / cs.centi**3 rho_Al = 2.699 * cs.gram / cs.centi**3 # Measurements of the counter tube r_c = 14 * cs.milli / 2 l_c = 4 * cs.centi U0_c = 520 d_U0_c = 10 # Measurement of the background t0 = 5 * cs.minute n0 = 122 d_n0 = sqrt(n0) / t0 n0 = n0 / t0 print(ms.val("n0", n0, d_n0, unit='1/s', prefix=False)) # Measurement of β-Radiation absorption, Sr 90, GS 527 A_Sr = 74 * cs.kilo a_Sr = 60 * cs.milli d_a_Sr = 2 * cs.milli t1_Sr = 30 t2_Sr = 2 * cs.minute t3_Sr = 5 * cs.minute n_Sr = npf([1136, 665, 412, 273, 180, 110, 306, 208, 131, 76, 60, 42]) d_n_Sr = sqrt(n_Sr) n_Sr = np.append(n_Sr[:6] / t1_Sr, n_Sr[6:] / t2_Sr) d_n_Sr = np.append(d_n_Sr[:6] / t1_Sr, d_n_Sr[6:] / t2_Sr) d_Sr = np.arange(0.0, 0.3 * cs.milli * len(n_Sr), 0.3 * cs.milli) n0_Sr = 51 d_n0_Sr = sqrt(n0_Sr) / t3_Sr
bmax1 = 8.3 dbmax1 = 0.3 bmax2 = 4.9 dbmax2 = 0.1 # Measure series reduction dT = ms.std_dev_m(T) / 20 T = ms.mean_value(T) / 20 dT1 = ms.std_dev_m(T1) / 15 T1 = ms.mean_value(T1) / 15 dT2 = ms.std_dev_m(T2) / 10 T2 = ms.mean_value(T2) / 10 print() print(ms.val("T0", T, dT)) print(ms.val("T1", T1, dT1)) print(ms.val("T2", T2, dT2)) # Damping constant calculated with time of half amplitude t1 = n1 * T1 dt1 = ms.sqrt((n1 * dT1)**2 + (T1 * dn1)**2) t2 = n2 * T2 dt2 = ms.sqrt((n2 * dT2)**2 + (T2 * dn2)**2) delta_ha1 = ms.ln(2) / t1 dDelta_ha1 = ms.ln(2) / t1**2 * dt1 delta_ha2 = ms.ln(2) / t2 dDelta_ha2 = ms.ln(2) / t2**2 * dt2 print() print(ms.val("t1", t1, dt1))
Uind_2a, Uind_2a_dsys, f_2a_dsys, plot=True, prange=(2, 16))[0:2] pltext.set_layout(legend=True, xlim=(2, 16), ylim=(0, 5)) B_exp_2a = slope_2a / (2 * pi * A_i * N_i) B_exp_2a_dsys = dslope_2a / (2 * pi * A_i * N_i) mu_0 = 4 * pi * 1e-7 B_theo_2a = (8 / sqrt(125)) * mu_0 * I_2a * N_h / s_h B_theo_2a_dsys = (8 / sqrt(125)) * mu_0 * I_2a_dsys * N_h / s_h print('\nAufgabe 2a:\n') print(val(B_exp_2a, B_exp_2a_dsys, 'B_exp ')) print(val(B_theo_2a, B_theo_2a_dsys, 'B_theo')) print(dev(B_exp_2a, B_exp_2a_dsys, B_theo_2a, B_theo_2a_dsys, 'Abw')) # Aufgabe 2b f_2b = 9.46 f_2b_dsys = 0.10 I_2b = npfarray([0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]) I_2b_dsys = sqrt( npfarray([0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01])**2 + 0.005**2 + (0.012 * I_2b)**2) Vss_2b = npfarray([0.724, 1.41, 2.04, 2.68, 3.32, 4.00, 4.65, 5.32, 6.12]) Vss_2b_dsys = npfarray([0.01, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]) Uind_2b = Vss_2b / 2 Uind_2b_dsys = Vss_2b_dsys / 2
# Eichung links = npfarray([554.48, 584.99, 616.35, 644.31, 677.36]) rechts = npfarray([446.01, 413.80, 383.30, 355.33, 322.28]) diff = links - rechts diff_err = sqrt(2) * 3 * diff / diff sbreite = 2e-3 / 100 * npfarray([43, 70, 90, 104, 132]) sbreite_err = 1e-3 / 100 * sbreite / sbreite pltext.initplot(num=0, title='Eichung', xlabel='Pixel', ylabel='Meter') [mpp, dmpp, itc, ditc] = linreg(x=diff, y=sbreite, dx=diff_err, dy=sbreite_err, plot=True) print() print(val('Meter pro Pixel', mpp, dmpp)) # Einzelspaltbreite lage_es_hmax = 499.79 lage_es_min = (npfarray([529.91, 561.26, 590.92, 623.13, 653.63]) - lage_es_hmax) * mpp lage_es_max = (lage_es_hmax - npfarray([456.82, 424.68, 394.69, 363.78, 333.80])) * mpp lage_es_d = npfarray([3, 3, 3, 3, 3]) * mpp n_es = npfarray([1, 2, 3, 4, 5]) pltext.initplot(num=1, title='Position Extrema am Einzelspalt', xlabel='Ordnung', ylabel='Abstand') [es_sl, es_dsl, es_itc, es_ditc] = linreg(n_es, lage_es_min, dy=lage_es_d)
# measure version 1.9.1s from measure import npfarray, pltext, plt, sqrt, expreg, val, linreg, tbl, lst, exp, mv, dtot_mv # Aufgabe 2 ug_5min = 120 ug_5min_err = sqrt(ug_5min) ug_1s = ug_5min / (5 * 60) ug_1s_err = ug_5min_err / (5 * 60) print('\nAufgabe 2:\n') print(val(ug_1s, ug_1s_err, name='Untergrund / s')) # Aufgabe 3 t = npfarray( [30, 30, 30, 30, 30, 30, 30, 60, 120, 120, 120, 120, 120, 120, 300]) d = npfarray( [0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.9]) N = npfarray( [1196, 677, 449, 289, 189, 143, 78, 86, 123, 91, 61, 68, 65, 42, 131]) N_err = sqrt(N) N_t_ratio = N / t - ug_1s N_t_ratio_err = sqrt((N_err / t)**2 + ug_1s_err**2) pltext.initplot(num=1, title=r'Abbildung : Absoprtion $\beta$-Strahlung', xlabel='Dicke in mm', ylabel='Ereignisse pro Sekunde', scale='linlog') pltext.plotdata(d, N_t_ratio, N_t_ratio_err, label='Messwerte') pltext.set_layout(xlim=(-0.2, 5.2), ylim=(1e-2, 6e1))
prob_mf = chi2stat.fit_prob(chi2_mf, len(N_ag), ddof=4) t_array = nplinspace(0, 400) pltext.initplot(num=1, title='Abbildung : Zerfall von Silber', xlabel='Zeit in s', ylabel='# Zerfälle (mit Untergrund)', scale='linlog') pltext.plotdata(t, N_ag, N_ag_err, label='Messwerte') plt.plot(t_array, fitfunc(t_array, *p_opt), label='Fit') plt.plot(t_array, fitfunc_pf(t_array, *p_opt_pf), label='Fit + Fehler Ug') plt.plot(t_array, fitfunc_mf(t_array, *p_opt_mf), label='Fit - Fehler Ug') pltext.set_layout(xlim=(0, 4e2), ylim=(2e1, 4e2)) print('\nSilber:\n') print(val(unterg_ag_mv, unterg_ag_mv_dsto, name='Untergrund')) print() print( tbl([['', 'A1', 'l1', 'A2', 'l2'], [ 'Fitwerte', val(p_opt[0], p_err[0]), val(p_opt[1], p_err[1]), val(p_opt[2], p_err[2]), val(p_opt[3], p_err[3]) ], [ 'Fitwerte pf', val(p_opt_pf[0], p_err_pf[0]), val(p_opt_pf[1], p_err_pf[1]), val(p_opt_pf[2], p_err_pf[2]),
ms.pltext.initplot(num=1, title=titles[0], xlabel=r'$\beta$ / $^\circ$', ylabel=r'$n$ / (1/s)', fignum=True) s1, d_s1, b1, d_b1 = ms.linreg(beta1[:20], n1[:20], d_n1[:20], fit_range=range(10, 13), plot=True) beta1_G = (n1_0 - b1) / s1 d_beta1_G = beta1_G * sqrt((d_n1_0**2 + d_b1**2) / (n1_0 - b1)**2 + (d_s1 / s1)**2) beta1_G *= cs.degree d_beta1_G *= cs.degree ld1_G = 2 * d_LiF * sin(beta1_G) d_ld1_G = 2 * d_LiF * cos(beta1_G) * d_beta1_G h1 = (cs.e * U1 / cs.c) * ld1_G d_h1 = (cs.e * U1 / cs.c) * d_ld1_G beta1_G2 = arcsin(ld1_G / d_LiF) d_beta1_G2 = d_ld1_G / sqrt(d_LiF**2 - ld1_G**2) print() print(ms.val("n0", n1_0, d_n1_0, unit='1/s', prefix=False)) print(ms.val("s1", s1, d_s1)) print(ms.val("b1", b1, d_b1)) print(ms.val("β_G", beta1_G / cs.degree, d_beta1_G / cs.degree, unit='°', prefix=False)) print(ms.val("λ_G", ld1_G, d_ld1_G, unit='m')) print(ms.val("h", h1, d_h1, unit='Js', prefix=False)) print(ms.sig("h,l", h1, d_h1, cs.h)) print(ms.val("β_G2", beta1_G2 / cs.degree, d_beta1_G2 / cs.degree, unit='°', prefix=False)) print() # (p1) Analysis of the K_α, K_β peaks in first and second order def gauss(x, mu, sigma, A): return A / sqrt(2 * pi * sigma**2) * exp(-(x - mu)**2 / (2 * sigma**2)) t_p1 = 20.0 beta1_p1, n1_p1 = np.loadtxt('data/255/data2.txt', unpack=True)
ms.plt.plot(t_Ag_fit, N_Ag_fit) dof_Ag_fit = len(N_Ag[:cut]) - 4 χ2_Ag = ms.chi2(N_Ag[:cut], d_N_Ag[:cut], f_Ag(t_Ag[:cut], A1_Ag, λ1_Ag, A2_Ag, λ2_Ag)) χ2_Ag_red = χ2_Ag / dof_Ag_fit p_Ag_fit = 1 - chi2.cdf(χ2_Ag, dof_Ag_fit) τ1_Ag = ln(2) / λ1_Ag d_τ1_Ag = ln(2) * d_λ1_Ag / λ1_Ag**2 τ2_Ag = ln(2) / λ2_Ag d_τ2_Ag = ln(2) * d_λ2_Ag / λ2_Ag**2 print("Ag108, Ag110 decay:") print(ms.val("A1", A1_Ag, d_A1_Ag, unit='Bq')) print(ms.val("λ1", λ1_Ag, d_λ1_Ag, unit='1/s', prefix=False)) print(ms.val("A2", A2_Ag, d_A2_Ag, unit='Bq')) print(ms.val("λ2", λ2_Ag, d_λ2_Ag, unit='1/s', prefix=False)) print(ms.val("χ²", χ2_Ag)) print(ms.val("χr²", χ2_Ag_red)) print(ms.val("pfit", 100 * p_Ag_fit, unit='%')) print() print("Half life of Ag110:") print(ms.val("τ", τ1_Ag, d_τ1_Ag, unit='s')) print(ms.sig("τ", τ1_Ag, d_τ1_Ag, 24.6)) print("Half life of Ag108:") print(ms.val("τ", τ2_Ag / cs.minute, d_τ2_Ag / cs.minute, unit='min')) print(ms.sig("τ", τ2_Ag, d_τ2_Ag, 2.37 * cs.minute)) print()