Dokładność obliczeń

advertisement
Dokładność obliczeń
10/9/2005
Liczby zmiennoprzecinkowe
Floating point numbers
!
Dokładność obliczeń
Kwestia reprezentacji
Przykład 1
Liczby na jednym bajcie…
Analogowo czy cyfrowo?
!
!
Już w roku 1945 John von Neuman
zauważył, że z powodu błędów zaokrągleń
nie będzie możliwe dokładne
reprezentowanie liczb rzeczywistych w
komputerach.
Co więcej sugerował on nawet, ze komputery
nie powinny pracować na takich liczbach!
Życie wymogło jednak na twórcach sprzętu i
oprogramowania dostępność liczb
rzeczywistych
2/12
Przypomnienie…
!
!
!
!
Pouczający przykład
Nie wszystkie liczby mogą być dokładnie
reprezentowane przez skończoną liczbę
znaków
!
!
!
!
Reprezentacja, w której mamy do czynienia
z określoną liczbą cyfr znaczących
Różnica miedzy dwoma sąsiednimi
wartościami (liczbami) nie jest stała w całym
zakresie
©2005 R. Robert ‘RoG@j’ Gajewski
!
1.72 x 10-6 i 1.73 x 10-6 wynosi więc
0.00000001=1.0 x 10-8
‘Duże’ liczby
!
9.14 x 106 i 9.15 x 106 wynosi zaś
1000 czyli 1.0 x 104
Jakie to niesie konsekwencje?
!
Operacje na takich liczbach…
4/12
Prosta operacja
©2005 R. Robert ‘RoG@j’ Gajewski
Dwa rodzaje błędów
9140000.00000000
+
0.00000172
9140000.00000172
!
!
Wyobraź sobie, że w ten sposób będą
naliczane procenty w banku…
©2005 R. Robert ‘RoG@j’ Gajewski
(C)2005 R.Robert 'RoG@j' Gajewski
Proste przykłady pokazują dwie kategorie
błędów ‘komputerowych’
!
W naszej arytmetyce wynik będzie… 9140000
5/12
Mantysa ma trzy cyfry, a cecha zakres ±6
‘Małe’ liczby
!
Liczba wymierna 1/3≅0.333333…
Liczba niewymierna π=3.141529…
3/12
©2005 R. Robert ‘RoG@j’ Gajewski
6/12
Błąd reprezentacji wynika z faktu, że nie każda
liczba może być dokładnie reprezentowana w
pamięci komputera
Błąd zaokrągleń operacji wynikający stąd, że
jeśli nawet operacja zostanie wykonana
dokładnie, to nie zawsze można zapisać
dokładnie jej wynik
©2005 R. Robert ‘RoG@j’ Gajewski
1
Dokładność obliczeń
10/9/2005
Akademicki przykład
!
Wyobraźmy sobie, że do zapamiętywania
liczby stosujemy tylko jeden bajt
!
!
!
!
Irytujący przykład…
!
!
Najstarszy bit to znak (1 to minus!)
Pole wykładnika (3 bity)
Pole części ułamkowej (4 bity)
!
01101011
!
!
!
!
!
0 czyli znak +
110 wykładnik zapisany z nadmiarem czyli 2
1011 ułamek
Przesuwamy przecinek o 2 : 10.11 czyli 2 3/4
7/12
©2005 R. Robert ‘RoG@j’ Gajewski
!
!
!
©2005 R. Robert ‘RoG@j’ Gajewski
!
!
!
10/12
!
!
!
11/12
1/8 + 1/8 da nam ¼ co dobrze ‘zapamiętuje’ się
2 ½ + ¼ = 2 ¾ czyli tyle, ile ma być!
©2005 R. Robert ‘RoG@j’ Gajewski
Analogowy kontra cyfrowy…
Kolejność wykonywanych działań może
okazać się istotna!
!
2 ½ + 1/8 = 2 5/8 co jest źle reprezentowane
binarnie w skromnej bajtowej arytmetyce – nasz
wynik zostanie zapamiętany jako 2 ½
Kolejne dodawanie da ten sam wynik
Dodawanie od prawej do lewej
!
Istotne spostrzeżenie
!
2 ½ + 1/8 + 1/8
Dodawanie od lewej do prawej…
!
Pomyśl, co będzie, jeśli będą w ten sposób
przeprowadzane manipulacje na wielkościach
finansowych…
9/12
©2005 R. Robert ‘RoG@j’ Gajewski
Przykład numeryczny
W systemie dziesiętnym mamy świadomość
błędów wynikających z nieskończonych
rozwinięć ułamków takich jak 1/3
W systemie binarnym taka ‘przyzwoita’
wartość jak 1/10 nie ma dokładnego
rozwinięcia dwójkowego
!
Zapiszmy tę wartość binarnie: 10.101
W polu części ułamkowej zabraknie miejsca na
prawą skrajną jedynkę reprezentująca ‘ostatnie’
1/8 – zignorujemy ten problem…
Otrzymamy więc 01101010 czyli 2 ½
Popełniony błąd to błąd zaokrąglenia (błąd
obcięcia) – truncation error
8/12
Jeszcze raz porównanie…
!
Spróbujmy w tej notacji przedstawić 2 5/8
!
Problem występuje gdy dodajemy liczby ‘małe’ do
liczb ‘dużych’.
Dochodzić wtedy może do obcięcia ‘małych’
wartości
Receptą jest sumowanie najpierw liczb ‘małych’
!
!
!
Komercyjne programy bronią przed tego typu
problemami, ale…
©2005 R. Robert ‘RoG@j’ Gajewski
(C)2005 R.Robert 'RoG@j' Gajewski
Niech informacja będzie przechowywana w…
wiadrach
Wadą analogowych wiader jest to, że odczyt
jest wrażliwy na warunki
!
12/12
Wiadra cyfrowe to tylko zero i jeden
W analogowym wiadrze można przechować
więcej informacji
Cyfrowo łatwo jest określić, czy woda jest czy jej
nie ma!
©2005 R. Robert ‘RoG@j’ Gajewski
2
Download