• Nie Znaleziono Wyników

Górniczo-Hutnicza w Krakowie

N/A
N/A
Protected

Academic year: 2021

Share "Górniczo-Hutnicza w Krakowie"

Copied!
23
0
0

Pełen tekst

(1)

Akademia

Górniczo-Hutnicza w Krakowie

Adrian Horzyk horzyk@agh.edu.pl

(2)

SYSTEMY KODOWANIA LICZB

W celu ujednolicenia obliczeń numerycznych na różnych platformach sprzętowych wprowadzono standard IEEE 754 dla zapisu liczb

zmiennoprzecinkowych (o zapisie zmiennopozycyjnym).

Standard ten definiuje dwa rodzaje liczb zmiennoprzecinkowych:

- o pojedynczej precyzji (32-bitowe) - o podwójnej precyzji (64-bitowe)

Kod binarny tych liczb podzielony jest na 3 części:

Bity cechy

Bit znaku Bit znaku cechy Bity mantysy

Bity cechy

(3)

SYSTEMY KODOWANIA LICZB

Bit znaku z przyjmuje wartość:

0 – dla liczb dodatnich 1 – dla liczb ujemnych

Bit znaku cechy s przyjmuje wartość:

0 – dla liczb o wykładniku dodatnim (dużych liczb 2c) 1 – dla liczb o wykładniku ujemnym (małych liczb 2-c) Bity cechy określają:

wykładnik potęgowy dla podstawy dwójkowej Bity mantysy:

Zawierają tylko bity ułamkowe (po przecinku dziesiętnym)

Liczba określona jest więc w następujący sposób: 𝒍 = −𝟏 𝒛 ∙ 𝒎 ∙ 𝟐 −𝟏 𝑺·𝒄

3

(4)

KODOWANIE STAŁO i ZMIENNOPOZYCYJ NE

Kodowanie stałopozycyjne służy do zapisu liczb całkowitych l:

Kodowanie zmiennopozycyjne służy do zapisu liczb wymiernych x:

ograniczone do reprezentacji tylko t najistotniejszych bitów tych liczb w systemie binarnym. Powstaje więc pewien błąd reprezentacji

na skutek obcięcia najmniej znaczących bitów i zaokrąglenia mantysy do t bitów:

Możemy więc reprezentować liczby z pewnego ograniczonego zakresu:

Mniejsze będą zastępowane zerem, co nazywamy błędem niedomiaru,

a większe będę powodować błąd nadmiaru, powodującym przerwanie obliczeń.

) 0 0

( , 2

0

=

=

l dla e

e s

l n

n

i

i i

( )t t t

i

i i

t e e

m +

=

+ 

=

2 1 2

1

( )

x x

rd

~ =

( )

x s mt c

rd = 2

( ) − 

 ( ) =  ( +  )

1

2 rd x x

x

x x

rd

t

 2t

max

min 2

2 2

1 c c

x 

c

min

= − 2

d−t

+ 1 c

max

= 2

d−t

− 1

(5)

PRZYKŁAD

Obliczania modułu z liczby zespolonej:

klasycznym algorytmem:

przekształconym algorytmem:

W klasycznym algorytmie wystąpi nadmiar, jeśli a lub b są co do modułu większe od

niedomiar, jeśli a lub b są co do modułu mniejsze od

zaś przekształcony algorytm pozwala na obliczenie modułu z liczby zespolonej z dla dowolnych a i b z zakresu reprezentowanych liczb.

1 ,

0 = −

 +

= a bi i z

2

2

b

a

z = +





 +

= +

b a b gdy

b a

b a a gdy

a b z

2 2 2 2

1 1

max 2

2

c

min 2

2 2

1 

c

5

(6)

ZAKRESY LICZB

Zakres liczb zmiennoprzecinkowych IEEE 754 w pojedynczej precyzji:

➢ Z(IEEE 754) = - 3,4 × 1038 ... 3,4 × 1038

➢ Oferują precyzję 7 cyfr dziesiętnych

Zakres liczb zmiennoprzecinkowych IEEE 754 w podwójnej precyzji:

➢ Z(IEEE 754) = - 1,8 × 10308 ... 1,8 × 10308

➢ Oferują precyzję 15-16 cyfr dziesiętnych

Nie liczba (NaN):

Nieskończoności:

✓ Dodatnia:

✓ Ujemna:

(7)

Liczenie na 10 palcach?

A dlaczego właśnie na 10?

A może by tak na dwóch jak komputery?

http://www.matematyczny-swiat.pl/2013/10/tabliczka-mnozenia-na-palcach.html

0 1

7

(8)

Liczenie zależy o d s y s t e m u lic z bo we go

W systemie 16-kowym tabliczka mnożenia wygląda inaczej:

Ile jest 8 * 9 w systemie 16-kowym? 48!

(9)

KONWERSJE POMIĘ DZY SYSTEMAMI LICZBOWYMI Tą samą liczbę możemy zapisać w różnych systemach liczbowych, np.:

Konwersje pomiędzy systemami liczbowymi dokonujemy przede wszystkim w związku z możliwością wykonywania operacji matematycznych i porównań w określonym systemie liczbowym przez komputer w systemie 2-kowym, a przez człowieka w systemie 10-nym.

Przekształcenie liczby z systemu 10-nego na system 2-kowy poprzez dzielenie:

1995 : 2 = 997 r 1 997 : 2 = 498 r 1

498 : 2 = 249 r 0 W przekształceniu odwrotnym wykonujemy mnożenie przez 249 : 2 = 124 r 1 podstawę systemu, z którego dokonujemy przekształcenia:

124 : 2 = 62 r 0 62 : 2 = 31 r 0 31 : 2 = 15 r 1 15 : 2 = 7 r 1 7 : 2 = 3 r 1 3 : 2 = 1 r 1 1 : 2 = 0 r 1

11111001011 2 = 2201220 3 = 133023[4] = 30440[5] = 13123[6] =

= 5550[7]= 3713[8] = 2656[9] = 1995[10] = 1554[11] = 11A3[12] =

= BA6[13] = A27[14] = 8D0[15] = 7CB[16]

(1995)[10] = (𝟏𝟏𝟏𝟏𝟏𝟎𝟎𝟏𝟎𝟏𝟏) 𝟐

(𝟏𝟏𝟏𝟏𝟏𝟎𝟎𝟏𝟎𝟏𝟏) 𝟐 =

(((((((((((1∗2)+1)∗2+1)∗2+1)∗2+1)∗2+0)∗2+0)∗2+1)∗2+0)∗2+1)∗2+1)∗2 = (1995)[10]

9

(10)

KONWERSJE LICZB WYMIERNYCH

Liczby wymierne w obcym systemie najpierw przekształcamy na iloraz liczb całkowitych, a następnie dokonujemy ich konwersji do znanego systemu, gdzie dokonujemy dzielenia:

W przypadku odwrotnego przekształcenia mnożymy przekształcaną liczbę przez podstawę systemu docelowego:

Takie liczby jak 0,45 czy 0,56 nie posiadają skończonego rozwinięcia dwójkowego, więc dalsze operacje wykonywana na takich liczbach mogą prowadzić do błędów numerycznych na skutek zaokrąglenia!

(0,01101)[2] = (1101)[2]

(100000)[2] = (13)[10]

(32)[10] = (𝟎, 𝟒𝟎𝟔𝟐𝟓)[10]

0,𝟒𝟎𝟔𝟐𝟓 ∗ 𝟐 = (0),81250 0,81250 * 2 = (1),62500 0,62500 * 2 = (1),25000 0,25000 * 2 = (0),50000 0,50000 * 2 = (1).00000

(11)

POPRAWNOŚ Ć OBLICZEŃ

Obliczenia prowadzone przy pomocy współczesnych komputerów mogą być bardzo dokładne i poprawne, lecz w wielu przypadkach wymaga to wiedzy o procesach obliczeniowych, arytmetyce komputerowej, zaokrąglaniu itp.,

żeby obliczenia zaprojektować i wykonywać w sposób poprawny numerycznie.

Obliczenia wykonywane na komputerach narażone są różne rodzaje błędów wynikające z:

➢ Ograniczonej dokładności danych źródłowych

➢ Ograniczonej ilości bitów na reprezentację danych

➢ Konwersjami pomiędzy systemami liczbowymi

➢ Zaokrągleń spowodowanych reprezentacją danych

➢ Obcięciami i uproszczeniami obliczeń wynikające z nieskończonych sum

➢ Trudnością wykonywania operacji na bardzo małych i dużych liczbach Brak wiedzy na ten temat może prowadzić do błędnego budowania

algorytmów i powstawania błędów numerycznych podczas obliczeń!

11

(12)

BŁĘ DY NUMERYCZNE

Błędy numeryczne możemy podzielić na cztery podstawowe kategorie:

1. Błędy danych wejściowych – występują wówczas, gdy dane liczbowe wprowadzane do pamięci i rejestrów maszyny cyfrowej odbiegają

od dokładnych ich wartości (np. fizycznych, biometrycznych) ze względu na ograniczoną dokładność urządzeń pomiarowych (np. ciężar, odległość).

2. Błędy reprezentacji – powstają, gdy występuje konieczność reprezentacji liczby w maszynie z wykorzystaniem skończonej długości słów binarnych (ciągów bitów), co wymusza zaokrąglanie. Do błędów reprezentacji

dochodzi również na skutek konwersji wielu liczb rzeczywistych z systemu źródłowego (zwykle dziesiętnego) na system dwójkowy, stosowany

w technice komputerowej, np. liczba 0,45 nie posiada swojego dokładnego odpowiednika w systemie dwójkowym, gdyż (0,45)[10] = (0.01(1100))[2]!

3. Błędy obcięcia – związane są z koniecznością zmniejszenia ilości działań, np. podczas obliczania ciągów/szeregów/sum nieskończonych

lub przybliżonego wyznaczania całek oznaczonych.

4. Błędy zaokrągleń – pojawiają się w trakcie zaokrąglania obliczonych wartości z powodu ograniczonej długości słów binarnych.

(13)

BŁĘ DY DANYCH WEJ Ś CIOWYCH

Urządzenia pomiarowe zawsze charakteryzują się ograniczoną dokładnością wykonywanych pomiarów wielkości fizycznych. Różne stosowane

w przemyśle normy określają dopuszczalną wielkość odchyleń urządzeń pomiarowych od rzeczywistych wartości, jakie powinny wskazywać:

Stąd wynikają błędy danych wejściowych.

13

(14)

BŁĘ DY REPREZENTACJ I

Błędy reprezentacji najczęściej powstają w trakcie konwersji liczb pomiędzy systemami liczbowymi. O ile my ludzie jesteśmy przyzwyczajeni liczyć

w systemie dziesiętnym, o tyle komputery stosują system dwójkowy.

Z tym związane są jednak pewne trudności, gdyż nie każde skończone rozwinięcie liczby w systemie dziesiętnym posiada takowe w systemie dwójkowym i vice versa!

Może nam się więc wydawać, iż wpisujemy do komputera dokładną wartość, np. liczbę wymierną 0,45, lecz właśnie wtedy dochodzi do błędu reprezentacji, gdyż komputer od razu konwertuje taką liczbę na dwójkową postać wewnętrzną, a tu okazuje się, iż nie istnieje dokładny odpowiednik tej liczby w systemie

dwójkowym, czyli skończone rozwinięcie dwójkowe, gdyż:

𝟎, 𝟒𝟓 𝟏𝟎 = 𝟒𝟓 𝟏𝟎

𝟏𝟎𝟎 𝟏𝟎 = 𝟏𝟎𝟏𝟏𝟎𝟏 𝟐

𝟏𝟏𝟎𝟎𝟏𝟎𝟎 𝟐 = 𝟎. 𝟎𝟏 𝟏𝟏𝟎𝟎 [𝟐]

𝟎, 𝟒𝟓 𝟏𝟎 * 2 = (0),90 𝟎, 𝟗𝟎 𝟏𝟎 * 2 = (1),80 𝟎, 𝟖𝟎 𝟏𝟎 * 2 = (1),60 𝟎, 𝟔𝟎 𝟏𝟎 * 2 = (1),20 𝟎, 𝟐𝟎 𝟏𝟎 * 2 = (0),40 𝟎, 𝟒𝟎 𝟏𝟎 * 2 = (0),80

 2

e

(15)

BŁĘ DY OBCIĘ CIA

Błędy obcięcia często związane są z przybliżaniem obliczeń nieskończonych:

gdy występuje konieczność pominięcia najmniej istotnych wyrazów wyrażenia.

Błędy obcięcia charakterystyczne są również w sytuacjach, gdy ze względu na zbyt długi czas obliczeń, decydujemy się na uproszczenie obliczeń

pomijając mniej istotne szczegóły bądź ograniczamy dokładność przybliżeń, np. przy wyznaczaniu wartości całek oznaczonych:

gdzie N jest ilością podziałów przedziału [a, b], a h szerokością tego przedziału.

! ...

2 ...

! 1

2

0

+ +

+ +

+

=

= 

=

N

x x x

n e x

N

n

n x

... ! 1 2

!

2

0

N

x x x

n

x

N

N

n

n

= + + + +

=

( )

x dx h

(

y y

)

T

( )

h

y I

N

n

n n

b

a

= +

=

 

= +

1

0

2 1

1

N a h = b

15

(16)

BŁĘ DY ZAOKRĄGLEŃ

Słowa binarne służące do zapisu liczb w technice cyfrowej dysponują ograniczoną ilością bitów możliwych do wykorzystania w celu

zapamiętania określonej liczby.

Można tego dokonać ze skończoną dokładnością.

Jeśli więc zabraknie bitów na reprezentację liczby, nieuniknione jest jej zaokrąglenie, np.:

W systemie dziesiętnym znane są sytuacje konieczności zaokrąglania:

Podobnie dzieje się to w systemie dwójkowym, gdzie wynik pewnej

operacji (np. dzielenia) nie posiada skończonego rozwinięcia dwójkowego lub rozwinięcie to przekracza maksymalną ilość dostępnych bitów w

stosowanym słowie binarnym służącym do przechowywania wyniku działania.

Wtedy dochodzi do błędów zaokrągleń.

333333 ,

0 ...

333333 ,

3 0

1 =  0 , 166666 ... 0 , 166667

6

1 = 

(17)

BŁĘ DY ZAOKRĄGLEŃ

Jeśli mamy możliwość przechowywania tylko 10 cyfr znaczących, wtedy wynik takiego dodawania nie będzie taki, jaki byśmy się spodziewali na skutek wykonania operacji dodawania:

lecz po zaokrągleniu wyniku do 10 cyfr znaczących otrzymamy:

Dochodzi więc ponownie do błędu w wyniku zaokrąglenia.

A co się stanie, jeśli będziemy mieli pętlę obliczeniową, w której będziemy dodawali małą liczbę do dużej aż do osiągnięcia pewnej wartości pozwalającej na zakończenie się pętli?

1234567890 + 0,123456789 = 1234567890,123456789 1234567890 + 0,123456789 = 1234567890

17

(18)

NIESTABILNOŚ Ć NUMERYCZNA

Z niestabilnością numeryczną mamy do czynienia wtedy, gdy małe błędy danych lub popełniane w trakcie obliczeń rosną szybko w trakcie dalszych obliczeń powodując istotne/duże błędy/zniekształcenia wyników obliczeń.

PRZYKŁAD: Obliczanie ciągu całek oznaczonych:

wyprowadzając zależność rekurencyjną:

umożliwiającą wyznaczenie następnego elementu ciągu całek na podstawie poprzedniego:

1 1

0 1 1

0 1 1

0

1 1

1

0

1 1 1

0

1 5 5 5

5 5 5

5 5

5

=

+ + =

+ =

= +

=

+n

n n n

n n

n

n n

n y

dx n x

dx x x

x dx x x

x dx

x x

dx x x

y x

y n

y

n n

1

5

1

= +

5

1

1

=

n

n

y

y n

(19)

PRZYKŁAD NIESTABILNOŚ CI NUMERYCZNEJ

Obliczamy więc element zerowy ciągu całek wg wzoru, dokonujemy zaokrąglenia wyniku do 3 cyfr znaczących

i następnie próbujemy wyznaczyć kolejne elementy ciągu całek na podstawie poprzednich z wyznaczonej wcześniej zależności:

Całka oznaczona reprezentuje pole pod funkcją, a więc musi być nieujemne.

Dlaczego już w czwartym kroku otrzymaliśmy wartość ujemną całki?

Każdy następny wyraz ciągu potencjalnie mnoży wcześniejszy błąd przez 5!

5

1

1

=

n

n

y

y n

19

(20)

PRZYKŁAD STABILNOŚ CI NUMERYCZNEJ

Czy możemy więc taki ciąg całek obliczyć poprawnie?

Potencjalnie możemy również spróbować wyznaczyć poprzedni wyraz ciągu na podstawie kolejnego

odpowiednio przekształcając wyprowadzoną zależność:

Lecz skąd wziąć wartość n-tego wyrazu ciągu?

Załóżmy świadomie popełniając błąd, iż dwa kolejne wyrazy są jednakowe:

W tym przypadku okazuje się, iż mimo potencjalnie dużego błędu

początkowego, otrzymany zerowy wyraz tego ciągu został wyznaczony poprawnie, gdyż błąd w każdym następny kroku był dzielony przez 5!

n

n

y

y n

5 1 5

1

1

= −

(21)

KUMULACJA BŁĘ DÓW NUMERYCZNYCH

W trakcie różnych operacji arytmetycznych może dochodzić do kumulacji błędów, np. jeśli dwie liczby obarczone są pewnymi znanymi błędami danych wejściowych, to w wyniku wykonania operacji na tych liczbach błędy również zostaną poddane tej operacji powodując kumulację

możliwych błędów.

PRZYKŁAD:

21

(22)

UWARUNKOWANIE ZADANIA

Zadanie jest źle uwarunkowane, jeśli względnie małe błędy danych początkowych powodują duże błędy wyników obliczeń.

Zadnie źle uwarunkowane obarczone jest dużymi błędami wyników niezależnie od zastosowanej metody lub algorytmu obliczania.

PRZYKŁAD: Proste równoległe w przestrzeni

Jeśli współrzędne punktów definiujących proste równoległe zostaną obarczone chociażby najmniejszym błędem, przestaną być równoległe i możliwe będzie wyznaczenie pewnego punktu ich przecięcia!

Uwarunkowanie zadania numerycznego to wrażliwość jego rozwiązania na poprawność danych początkowych.

(23)

Cytaty

Powiązane dokumenty

Oblicz entalpię H x reakcji tworzenia 1 mola gazowego siarkowodoru z wodoru i krystalicznej siarki rombowej wiedząc, że ciepła spalania: 1 mola gazowego siarkowodoru do

Wiedząc, że gazowymi produktami rozkładu szczawianów srebra, cynku i wapnia są odpowiednio: CO 2 , CO+CO 2 i CO oblicz skład procentowy wyjściowej mieszaniny

Oblicz ciśnienia cząstkowe wszystkich gazów w zbiorniku po reakcji, jeżeli wiadomo, że ciśnieniowa stała równowagi (ciśnienia wyrażone są w paskalach) dla

Przyjmij, że wodorotlenek srebra jest mocną zasadą, a odczyn roztworu AgCN jest obojętny. Oblicz procentową zawartość siarki

Pewien pierwiastek X na II stopniu utlenienia tworzy z jednym z fluorowców związek o masie cząsteczkowej 2,3965 razy większej niż masa tlenku tego pierwiastka znajdującego

Sól magnezowa tego kwasu zawiera 16.9% magnezu, natomiast produktem utleniania alkoholu B jest kwas identyczny jak kwas A.. Podaj nazwę

Udowodniono tym samym główną tezę niniejszej rozprawy, że bez konieczności wyznaczania elementów macierzy funkcji przenoszenia kanału radiowego, a wykorzystując jedynie proste

Możliwe jest opracowanie bardziej wydajnego – od obecnie stosowanych – algorytmu wyboru trybu pracy stacji abonenckiej w bezprzewodowej sieci lokalnej WLAN standardu IEEE