meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
a_mechanik:drehschwingungen:gruppenseiten:gruppe342:start [26 January 2021 15:17] – [Code zu den Plots] juliusriekenberg | a_mechanik:drehschwingungen:gruppenseiten:gruppe342:start [26 January 2021 15:19] (current) – juliusriekenberg | ||
---|---|---|---|
Line 434: | Line 434: | ||
i, i_err = err_evolution(trägmom, | i, i_err = err_evolution(trägmom, | ||
print(' | print(' | ||
+ | |||
+ | </ | ||
+ | | ||
+ | |||
+ | |||
+ | ===== Hilfscode ===== | ||
+ | <code python> | ||
+ | def round_correctly(val, | ||
+ | first_sign = 0 | ||
+ | while err // (10 ** first_sign) > 0: | ||
+ | first_sign += 1 | ||
+ | while err // (10 ** first_sign) == 0: | ||
+ | first_sign -= 1 | ||
+ | if err // (10 ** first_sign) < 3: | ||
+ | first_sign -= 1 | ||
+ | return round(val * 10 ** -first_sign), | ||
+ | |||
+ | |||
+ | def lin_fit_label(sol, | ||
+ | return '$Fit = ' + string_correctly(sol.slope, | ||
+ | sol.intercept, | ||
+ | |||
+ | |||
+ | def string_correctly(val, | ||
+ | val, err, pot = round_correctly(val, | ||
+ | return ' ( ' + str(int(val)) + ' \pm ' + str(int(err)) + ' )' + (' \\cdot 10^{' + str(pot) + '} ') * (pot != 0) | ||
+ | |||
+ | |||
+ | def err_evolution(func, | ||
+ | val = func(*params) | ||
+ | err_q = 0 | ||
+ | for i in range(len(params)): | ||
+ | _, _, pot = round_correctly(params[i], | ||
+ | h = 10 ** (pot - 5) | ||
+ | upper = (params[j] + h * (j == i) for j in range(len(params))) | ||
+ | lower = (params[j] - h * (j == i) for j in range(len(params))) | ||
+ | diff = (func(*upper) - func(*lower)) / (2 * h) | ||
+ | err_q += (diff * errors[i]) ** 2 | ||
+ | return val, err_q ** 0.5 | ||
</ | </ |