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