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.

Korrelierte Messunsicherheit mit Python uncertainties

Georg Ramer/TU Wien
Binder

uncertainties kann mit korrelierten Messunsicherheiten umgehen. Dies wird erreicht, wenn die selbe Standardmessunsicherheit zweimal verwendet wird.

from uncertainties import ufloat

Ein Beispiel: Wir messen eine Länge mit einer Methode die eine Unsicherheit in ihrem offset hat. Wenn man weitere Unsicherheiten ignoriert, sollte damit zwar eine Entferungsmessung mit Unsicherheit behaftet sein, nicht aber eine Differenz von Entfernungen.

Wenn wir die ufloats instanzieren wie im letzten Beispiel, funktioniert das leider nicht:

# gemessene Entfernungen, unkorreliert
d1 = ufloat(12, .1)
d2 = ufloat(10, .1)

f"d1: {d1} mm, d2: {d2} mm; d1 - d2: {d1 -d2}"
'd1: 12.00+/-0.10 mm, d2: 10.00+/-0.10 mm; d1 - d2: 2.00+/-0.14'

Wenn stattdessen der die Messunsicherheit in einer getrennten Variable speichern, dann wird sie richtig gehandhabt:

# gemessene Entfernungen, korreliert

u_offset = ufloat(0,.1)

d1 = 12 + u_offset
d2 = 10 + u_offset

f"d1: {d1} mm, d2: {d2} mm; d1 - d2: {d1 -d2}"
'd1: 12.00+/-0.10 mm, d2: 10.00+/-0.10 mm; d1 - d2: 2.0+/-0'

Auch ein Mix ist möglich. Hier geben wir der Länge auch eine Messunsicherheit:

# gemessene Entfernungen, unkorreliert

u_offset = ufloat(0,.1)

d1 = 12 + u_offset + ufloat(0, .2)
d2 = 10 + u_offset + ufloat(0, .2)

f"d1: {d1} mm, d2: {d2} mm; d1 - d2: {d1 -d2}"
'd1: 12.00+/-0.22 mm, d2: 10.00+/-0.22 mm; d1 - d2: 2.00+/-0.28'