uncertainties kann mit korrelierten Messunsicherheiten umgehen. Dies wird erreicht, wenn die selbe Standardmessunsicherheit zweimal verwendet wird.
from uncertainties import ufloatEin 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'