Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

  • Gesucht: Unsicherheit von f(x1,…xm)f(x_1, \dots x_m), wenn xix_i Unsicherheiten haben

  • Gaußsche Fehlerfortpflanzung:

σf=∑i=1m(∂f∂xi) ⁣2σxi2\sigma_{f} = \sqrt{\sum_{i=1}^m \left( \frac{\partial f}{\partial x_i}\right)^{\!2} \sigma_{x_i}^2}
  • Manuelle Fehlerfortpflanzung:

  1. Berechne die Ableitungen von ff nach allen fehlerbehafteten Größen xix_i

  2. Ableitungen in die obere Formel einsetzen

  3. Werte und Unsicherheiten der xix_i einsetzen

  • Probleme:

  • Kompliziert, dauert lange, man macht oft Fehler

  • Falsches Ergebnis, wenn xix_i korreliert sind, dann erweiterte Fehlerfortpflanzung:

σf=∑i=1m(∂f∂xi) ⁣2σxi2+∑j≠k∂f∂xj∂f∂xkcov⁡(xj,xk)\sigma_{f} = \sqrt{\sum_{i=1}^m \left( \frac{\partial f}{\partial x_i}\right)^{\!2} \sigma_{x_i}^2 + \sum_{j\neq k} \frac{\partial f}{\partial x_j} \frac{\partial f}{\partial x_k} \operatorname{cov}(x_j, x_k)}
  • cov⁡(xj,xk)\operatorname{cov}(x_j, x_k) sind die Einträge der Kovarianzmatrix und beschreiben die Korrelation zwischen den Unsicherheiten von xjx_j und xkx_k

  • konkret für zwei Messgrößen x, y, die NN mal gemessen wurden:

cov⁡(x,y)=∑i=1N(xi−xˉ)(yi−yˉ)N\operatorname{cov}(x, y) = \frac{\sum_{i = 1}^{N} (x_i - \bar{x})(y_i - \bar{y})}{N}

uncertainties

  • Erlaubt es, Fehlerrechnung automatisch durchzuführen

  • Datentyp: ufloat, repräsentiert Wert mit Unsicherheit

8.0+/-1.4142135623730951

Korrelationen werden von uncertainties beachtet:

0.0+/-1.4
0.0+/-0
False

uncertainties.unumpy ergänzt numpy:

array([-0.9117339147869651+/-0.11166193174450133, 0.4483562418187328+/-1.9814233218473645, 0.3285947554325321+/-1.8970207322669204, -0.3706617333977958+/-40.567208903209576, -0.7260031145123346+/-102.06245489729305], dtype=object)

Man muss daran denken, jetzt die Funktionen aus unumpy zu benutzen (exp, cos, etc.).

array([ 0.54030231, -0.41614684, -0.9899925 , -0.65364362, 0.28366219])

Zugriff auf Wert und Standardabweichung mit n und s:

5.0
1.0

Bei unumpy mit nominal_values und std_devs

[1. 2. 3.]
[0.3 0.3 0.1]

Kann man natürlich auch im import abkürzen:

[1. 2. 3.]
[0.3 0.3 0.1]

Korrelierte Werte

<Figure size 800x400 with 1 Axes>

Wir vermuten eine lineare Korrelation der Messwerte und stützen die Hypothese mit dem Korrelationskoeffizient:

r=cov(x,y)σxσy,−1≤r≤1r = \frac{cov(x, y)}{\sigma_x \sigma_y}, \quad -1 \leq r \leq 1
0.7807249232806309

Korrelation zwischen Variablen mit correlated_values erzeugen:

Vorsicht bei Fits:

Korrelierte Fit-Parameter führen zu nichts-sagenden Ergebnissen. Kontrolle: Korrelationsmatrix.

[[1.         0.06627971]
 [0.06627971 1.        ]]
[[1.00000000e+00 3.12679167e-09]
 [3.12679167e-09 1.00000000e+00]]
<Figure size 1000x800 with 1 Axes>
<Figure size 1000x800 with 4 Axes>

Vorsicht

Man kann keine ufloats plotten:

<Figure size 1000x800 with 1 Axes>

SymPy

  • Kann Ableitungen automatisch generieren

SymPy importieren:

Mathematische Variablen erzeugen mit var():

Loading...

Differenzieren mit diff():

x + y**3 - cos(z)**2
1
3*y**2
2*sin(z)*cos(z)
-8*sin(z)*cos(z)

Eine Funktion, die automatisch die Fehlerformel generiert:

E_x + q**2*r
\sqrt{\sigma_{E_{x}}^{2} + 4 \sigma_{q}^{2} q^{2} r^{2} + \sigma_{r}^{2} q^{4}}

f=E+q2r→σf=σEx2+4σq2q2r2+σr2q4f= E + q^2 r \quad\rightarrow\quad \sigma_f = \sqrt{\sigma_{E_{x}}^{2} + 4 \sigma_{q}^{2} q^{2} r^{2} + \sigma_{r}^{2} q^{4}}