Przeczytaj
Wiemy już, że istnieją błędy przybliżeń, wśród których wyróżniamy błąd bezwzględnybłąd bezwzględny oraz błąd względnybłąd względny. W tym e‑materiale użyjemy języka Python do obliczenia i wizualizacji tych błędów.
Znając definicje błędów bezwzględnego oraz względnego, możemy napisać funkcje obliczające odpowiednie wartości. Przetestujemy je dla wartości zmierzonych: 225 i 250 oraz wartości dokładnej 242.
Wynikiem wykonania kodu dla wartości zmierzonych 225 i 250 oraz wartości dokładnej 242 jest:
Przeanalizujmy teraz sytuację, w której symulujemy „ręczne” obliczenie wartości za pomocą zaokrąglenia. Prześledźmy błąd bezwzględny oraz względny dla kolejnych zaokrągleń liczby pi.
W przykładzie mamy podaną wartość liczby pi z dokładnością do 42 miejsc po przecinku. W języku Python w module math
wartość liczby pi jest zapisana jako math.pi
z dostępną precyzją – w tym przypadku 3.141592653589793
. Będziemy obliczali błąd bezwzględny i względny oraz błąd względny wyrażony w procentach dla kolejnych przybliżeń: od dwóch miejsc po przecinku, czyli wartości 3.14
, do 15 miejsc po przecinku, a więc dokładnej wartości, kiedy błąd będzie wynosił 0. Sprawdzimy kilka obliczonych wartości.
Wartość dokładna to 3.141592653589793
Wartość zmierzona | Błąd względny | Błąd względny w procentach |
| 0.0005069573828972128 | 0.05069573828972128 |
| 2.0804409260601893e‑07 | 2.0804409260601892e‑05 |
| 3.1172263038059322e‑12 | 3.117226303805932e‑10 |
| 0.0 | 0.0 |
Napiszmy kod, który pozwoli zobrazować błąd w zależności od kolejnych zaokrągleń. Przygotujemy dwa wykresy w celu odpowiedniego doboru skali.
Bibliotekę matplotlib
omawialiśmy również w e‑materiale Modelowanie ruchów Browna w języku PythonModelowanie ruchów Browna w języku Python.
Wykres pierwszy – błąd względny oraz bezwzględny wartościowo:
Wykres drugi – błąd względny procentowo:
Możemy zauważyć, że błąd przybliżenia (zarówno względny, jak i bezwzględny) zmienia się – maleje wraz ze wzrostem dokładności obserwowanej liczby.
Napiszmy kod, który pozwoli zaokrąglić liczbę pi do takiego momentu, dla którego błąd względny przekroczy 0,01 procenta – wówczas zatrzymamy kolejne zaokrąglenia.
Wykres pierwszy – błąd względny oraz bezwzględny wartościowo:
Wykres drugi – błąd względny procentowo:
W języku Python istnieje moduł o nazwie Decimal
. Zapewnia on obsługę arytmetyki zmiennoprzecinkowej i podaje dokładniejsze wyniki. Prześledźmy to na przykładzie dodawania do siebie dwóch wartości rzeczywistych: 0.1 + 0.2
. Z lekcji matematyki wiemy, że wynik powinien wynosić 0.3,
a jednak program w języku Python wyświetla następującą wartość:
Wynik jest większy niż 0.3
- niewiele, ale jednak większy. Jest to związane ze sposobem, w jaki język Python przechowuje w pamięci liczby. Zobaczymy, jak wygląda ta sama sytuacja, kiedy użyjemy modułu Decimal
. Pamiętajmy, że liczby podajemy jako parametr typu str
.
Zauważmy, że wartości podane po wykorzystaniu modułu Decimal
są dokładniejsze.
Dla komputera obliczenie 3 * 0.1 - 0.3
daje wynik 5.551115123125783e‑17
. Jest on bardzo bliski zeru, jednak nie jest to dokładnie zero. Natomiast zastosowanie do tego obliczenia modułu i typu danych Decimal
daje oczekiwany wynik.
Słownik
wyraża bezwzględną różnicę pomiędzy wartością zmierzoną a dokładną; obliczamy go zgodnie ze wzorem:
gdzie to wartość dokładna, – wartość zmierzona, a – błąd bezwzględny
informuje, o ile procent różni się wartość zmierzona od dokładnej; obliczamy go zgodnie ze wzorem:
gdzie to wartość dokładna, – wartość zmierzona, – błąd bezwzględny, zaś to błąd względny