Arytmetyka komputerów
wer. 1.2
Wojciech Myszka
23 pazdziernika 2008
Arytmetyka komputerów
I
Zapis liczb
dwójkowy.
I
Ka»da z liczb zapisywana jest za pomoc¡ cyfr 0 i 1.
I
Ukªad jest pozycyjny
waga cyfry zale»y od miejsca,
w którym zostaªa ustawiona.
I
Najmniej znacz¡ce miejsca s¡ po stronie prawej. . .
I
1010 to 1 × 2
3
+
0 × 2
2
+
1 × 2
1
+
0 × 2
0
czyli 8 + 0 + 2 + 0 = 10
I
NB liczby parzyste maj¡ zero na ko«cu, nieparzyste
1.
I
Arytmetyka dwójkowa
bardzo prosta.
I
0 + 0 = 0
I
1 + 0 = 0 + 1 = 1
I
1 + 1 = 10
I
1 × 1 = 1
I
1 × 0 = 0 × 1 = 0
I
0 × 0 = 0
Operacje logiczne
(Podstawowe) operacje logiczne to suma logiczna (OR), iloczyn
logiczny (AND), negacja (NOT), ró»nica symetryczna (XOR)
OR 0 1
0 0 1
1 1 1
AND 0 1
0 0 0
1 0 1
XOR 0 1
0 0 1
1 1 0
Arytmetyka komputera
Arytmetyka klasyczna
Jeste±my przyzwyczajeni do nast¦puj¡cych rzeczy :
1.
Je»eli x 6= 0 to ∀a a + x 6= a
2.
a + b + · · · + z = z + y + · · · + b + a
3.
∀
a, b ∈ < a < b ∃c : a < c < b
W arytmetyce komputerowej powy»sze zasady nie obowi¡zuj¡!
Arytmetyka komputera
Arytmetyka klasyczna
Jeste±my przyzwyczajeni do nast¦puj¡cych rzeczy :
1.
Je»eli x 6= 0 to ∀a a + x 6= a
2.
a + b + · · · + z = z + y + · · · + b + a
3.
∀
a, b ∈ < a < b ∃c : a < c < b
W arytmetyce komputerowej powy»sze zasady nie obowi¡zuj¡!
Arytmetyka komputera
Arytmetyka klasyczna
Jeste±my przyzwyczajeni do nast¦puj¡cych rzeczy :
1.
Je»eli x 6= 0 to ∀a a + x 6= a
2.
a + b + · · · + z = z + y + · · · + b + a
3.
∀
a, b ∈ < a < b ∃c : a < c < b
W arytmetyce komputerowej powy»sze zasady nie obowi¡zuj¡!
Arytmetyka komputera
Arytmetyka klasyczna
Jeste±my przyzwyczajeni do nast¦puj¡cych rzeczy :
1.
Je»eli x 6= 0 to ∀a a + x 6= a
2.
a + b + · · · + z = z + y + · · · + b + a
3.
∀
a, b ∈ < a < b ∃c : a < c < b
W arytmetyce komputerowej powy»sze zasady nie obowi¡zuj¡!
Liczby zmiennoprzecinkowe
1.
Arytmetyka
1.1
Liczby naturalne
1.2
Liczby caªkowite
1.3
Liczby wymierne
1.4
Liczby rzeczywiste
2.
Komptery
2.1
Liczby caªkowite ( integer )
2.2
Liczby staªoprzecinkowe
2.3
Liczby zmiennoprzecinkowe
Liczby caªkowite I
I
Sytuacja dosy¢ klarowna.
I
Na n bitach mo»emy zapisa¢ liczby caªkowite dodatnie z
zakresu od zera do 2
n
−
1
I
Jest pewien problem z liczbami ujemnymi: trzeba
zarezerwowa¢ miejsce na znak
I
Trzeba to tak zrobi¢, »eby podstawowe operacje
(dodawanie, odejmowanie i mno»enie,. . . ) byªy
wykonywane tak samo gdy argumenty s¡ dodatnie jak i
wtedy gdy s¡ ujemne.
I
Ukªad uzupeªnieniowy to zaªatwiª.
Liczby caªkowite II
I
Czasami korzysta si¦ z kodu BCD (Binary Coded Decimal
(cyfry) dziesi¦tne kodowane binarnie: liczba zapisywana
jest w ukªadzie dziesi¦tnym (za pomoc¡ cyfr dziesi¦tnych),
ale poszczególne cyfry kodowane s¡ binarnie
321
(
10)
zapisywane jest jako 0011 0010 0001
2
Liczby ujemne
1.
Trzeba zarezerwowa¢ jeden bit na zapami¦tanie znaku!
2.
Wariant najprostszy 3
0
000011
3.
Wariant najprostszy −3
1
000011
Jest to zapis znak moduª
4.
Ale jak dodawa¢ takie liczby?
Liczby ujemne
Tablica odejmowania:
−
0 1
0
0 1
1
1
0
(Zakªadamy, »e operujemy na liczbach czterobitowych!)
0011 − 1 = 0010
0010 − 1 = 0001
0001 − 1 = 0000
0000 − 1 = 1111
Zatem −1 to 1111 (czterobitowo!)
Liczby ujemne
Dokonajmy prostego sprawdzenia:
5 + (−1)
0 1 0 1
1 1 1 1
1
0 1 0 0
Liczby ujemne
Dokonajmy prostego sprawdzenia:
5 + (−1)
0 1 0 1
1 1 1 1
1
0 1 0 0
Dygresja
Liczby dziesi¦tne, dwucyfrowe:
3 3
9 9
1
3 2
Dygresja
Liczby dziesi¦tne, dwucyfrowe:
3 3
9 9
1
3 2
Negacja liczby
Mnemotechniczny algorytm negacji jest bardzo prosty:
negujemy wszytskie bity i powstaª¡ liczb¦ zwi¦kszamy o 1:
1 to 0001
negacje: 1110
zwi¦kszenie o 1: 1111
2 to 0010
negacja: 1101
zwi¦kszenie o 1: 1110
sprawdzenie 5 + (−2)
0 1 0 1
1 1 1 0
1
0 0 1 1
Liczby staªoprzecinkowe
1.
Liczby w których na zapami¦tanie cz¦±ci caªkowitej
przeznacza si¦ kilka(na±cie/dziesi¡t) bitów
2.
Na zapami¦tanie cz¦±ci uªamkowej równie» u»ywa si¦
kilku(nastu?) bitów:
1 0 1 0 , 1 0 1 0
co odczytujemy jako:
1∗2
3
+
0∗2
2
+
1∗2
1
+
0∗2
0
+
1∗2
−
1
+
0∗2
−
2
+
1∗2
−
3
+
0∗2
−
4
lub 8 + 2 +
1
2
+
1
8
czyli 10,625
3.
U»ywany bardzo rzadko ( nanse??)
4.
Z matematycznego punktu widzenia s¡ to liczby wymierne
5.
Jak w tej postaci zapisa¢ liczb¦ 1,1
Liczby zmiennoprzecinkowe I
1.
S¡ to liczby zapisywane (kodowane) w sposób podobny do
zananego nam: c = 299792458 ∼ 3 ∗ 10
8
m/s
2.
Czyli w postaci mantysa (2,99792458) plus wykªadnik 8,
zatem 2,99792458*10
8
albo inaczej 2,99792458 e8
3.
W przypadku komputerów podstawa kodowania (tak
mantysy jak i wykªadnika) to 2!
4.
Dodatkowo liczby zapisywane s¡ zawsze w postaci
znormalizowanej czyli takiej, »e cyfra przed przecinkiem
(kropk¡) dziesi¦tnym jest zawsze z zakresu mi¦dzy 1 a 9. (
a
w ukªadzie dwójkowym zawsze jest równa 1!
)
5.
Na zapami¦tanie mantysy i wykªadnika przeznaczana jest
zawsze sko«czona liczba bitów.
Liczby zmiennoprzecinkowe II
6.
Z matematycznego punktu widzenia s¡ to liczby wymierne.
7.
Sposób zapisu liczb zmiennoprzecinkowych reguluje
standard IEE-754.
Par¦ problemów
1.
Zawsze(?) ograniczona liczba bitów przeznaczona na
zapami¦tanie liczby (ale znane s¡ specjalne programy,
które staraj¡ si¦ te ograniczenie przezwyci¦»a¢).
2.
Wynik dziaªa« arytmetycznych cz¦sto prowadzi do
powstania nadmiaru (czyli przekroczenia maksymalnej
dopuszczalnej warto±ci liczb).
3.
Wi¦kszo±¢ liczb które (z przyzwyczajenia) traktujemy jako
dokªadne, nie ma dokªadnej reprezentacji dwójkowej (0,5
jest OK ale 0,1 ju» nie).
Operacje na liczbach zmiennoprzecinkowych I
1.
Mno»enie.
Jest proste: mno»ymy mantysy i dodajemy wykªadniki.
1, 33 e+3 ∗ 1, 55 e+7 = 2, 0615 e+10
Nast¦pnie trzeba wynik obci¡¢ do odpowiedniej liczby
miejsc znacz¡cych (w naszym przypadku niech to b¦d¡ trzy
cyfry)
2, 06 e+10
W przyku liczb binarnych b¦dzie podobnie.
Uwaga: czasami mo»e zdarzy¢ si¦ problem: w wyniku
mno»enia liczba mo»e ulec denormalizacji
wówczas
trzeba j¡ znormalizowa¢, zaokr¡gli¢ i skorygowa¢
wykªadnik: 5, 55 e+0 ∗ 6, 33e+0 = 35, 13 e+0 = 3, 51 e+1
Operacje na liczbach zmiennoprzecinkowych II
2.
Dzielenie.
Post¦pujemy analogicznie jak w przypadku mno»enie
(dzielimy mantysy, odejmujemy wykªadniki). W przypadku
denormalizacji post¦pujem jak wy»ej
1, 33 e+0/9, 88 e+0 = 0, 134615385 e+0 = 1, 35 e−1
3.
Dodawanie.
Sprawa nieco bardziej skomplikowana. Aby dodawa¢ liczby
zmiennoprzecinkowe trzeba je najpierw
zdenormalizowa¢ i doprowadzi¢ do równo±ci
wykªadników:
1, 22 e+0 + 3, 35 e − 4 = 1, 22 e+0 + 0, 000335 e+0 =
1, 220335 e+0 = 1, 22 e+0
a nast¦pnie zaokr¡gli¢ i znormalizowa¢. . .
Operacje na liczbach zmiennoprzecinkowych III
4.
Odejmowanie.
Identycznie jak dodawanie.
Konwersje
Dziesi¦tny do dwójkowego
Liczby caªkowite:
Liczb¦ dzielimy przez dwa zapisuj¡c reszty z dzielenia:
10
5 0
2 1
1 0
0 1
Reszty z dzielenia zapisujemy od ko«ca otrzymuj¡c 1010
Konwersje
Dziesi¦tny do dwójkowego
Liczby caªkowite:
Liczb¦ dzielimy przez dwa zapisuj¡c reszty z dzielenia:
10
5 0
2 1
1 0
0 1
Reszty z dzielenia zapisujemy od ko«ca otrzymuj¡c 1010
Konwersje
Dziesi¦tny do dwójkowego
Liczby caªkowite:
Liczb¦ dzielimy przez dwa zapisuj¡c reszty z dzielenia:
10
5 0
2 1
1 0
0 1
Reszty z dzielenia zapisujemy od ko«ca otrzymuj¡c 1010
Konwersje
Dziesi¦tny do dwójkowego
Liczby caªkowite:
Liczb¦ dzielimy przez dwa zapisuj¡c reszty z dzielenia:
10
5 0
2 1
1 0
0 1
Reszty z dzielenia zapisujemy od ko«ca otrzymuj¡c 1010
Konwersje
Dziesi¦tny do dwójkowego
Liczby caªkowite:
Liczb¦ dzielimy przez dwa zapisuj¡c reszty z dzielenia:
10
5 0
2 1
1 0
0 1
Reszty z dzielenia zapisujemy od ko«ca otrzymuj¡c 1010
Konwersje
Dziesi¦tny do dwójkowego
Liczby caªkowite:
Liczb¦ dzielimy przez dwa zapisuj¡c reszty z dzielenia:
10
5 0
2 1
1 0
0 1
Reszty z dzielenia zapisujemy od ko«ca otrzymuj¡c 1010
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dziesi¦tny do dwójkowego
Cz¦±¢ uªamkowa:
Liczb¦ mno»ymy przez dwa i zapisujemy cz¦±¢ caªkowit¡:
,33
0
,66
1
,32
0
,64
1
,28
0
,56
1
,12
0
,24
0
,48
0
,96
1
,92
1
,84
1
,68
0,010101000111
2
=0,329833984375
10
Konwersje
Dwójkowy do dziesi¦tnego
Do zrobienia w domu!
Wnioski
1.
Konwersja liczb dziesi¦tnych do dwójkowych cz¦sto
wprowadza bª¦dy.
2.
Ograniczona liczba bitów powoduje, »e ka»de dziaªanie
wykonywane jest z bª¦dem.
3.
W przypadku wielokrotnego powtarzania jakiego±
obliczenia sprawa zaczyna mie¢ znaczenie. . .
Cz¦±¢ II
Podstawowe de nicje
Wielko±¢
dowolna staªa matematyczna, wynik jakiej±
operacji matematycznej (dziaªania), pierwiastek
rozwi¡zywanego równania. π jest okre±lony jako stosunek
obwodu okr¦giu do jego ±rednicy;
√
2 jest pierwiastkiem
równania kwadratowego X
2
−
2 = 0.
Warto±¢ dokªadna wielko±ci
warto±¢ wynikaj¡ca wprost z
de nicji wielko±ci, nie obarczona »adnymi bª¦dami.
Warto±¢ przybli»ona wielko±ci
warto±¢ liczbowa uzyskana w
wyniku oblicze«. Zazwyczaj w wyniku oblicze« nie uzyskujemy
dokªadnej warto±ci.
Wielko±ci zyczne
Ci±nienie, temperatura, dªugo±¢, st¦»enie
to przykªady
wielko±ci zycznych, które bardzo cz¦sto mierzymy .
Ka»dy pomiar obarczony jest bª¦dem wynikaj¡cym
z dokªadno±ci u»ytego narz¦dzia pomiarowego.
Warto±¢ dokªadna to temperatura w jakim± miejscu sali; warto±¢
przybli»ona
to warto±¢ zmierzona jakim± termometrem.
Obliczenia
I
U»ywamy komputera do dokonania jakich± oblicze«.
I
Komputer podaje wynik (a = 5,34273343) maj¡cy 8 cyfr po
przecinku.
I
Czy mo»emy powiedzie¢, »e wyznaczona liczba ma
wszystkie cyfry poprawne?, Czy ró»ni si¦ od warto±ci
dokªadnej o mniej ni» 0,5 · 10
−
8
?
I
A co z sytuacj¡, »e zastosowana metoda oblicze« jest maªo
dokªadna?
Obliczenia
I
U»ywamy komputera do dokonania jakich± oblicze«.
I
Komputer podaje wynik (a = 5,34273343) maj¡cy 8 cyfr po
przecinku.
I
Czy mo»emy powiedzie¢, »e wyznaczona liczba ma
wszystkie cyfry poprawne?, Czy ró»ni si¦ od warto±ci
dokªadnej o mniej ni» 0,5 · 10
−
8
?
I
A co z sytuacj¡, »e zastosowana metoda oblicze« jest maªo
dokªadna?
Obliczenia
I
U»ywamy komputera do dokonania jakich± oblicze«.
I
Komputer podaje wynik (a = 5,34273343) maj¡cy 8 cyfr po
przecinku.
I
Czy mo»emy powiedzie¢, »e wyznaczona liczba ma
wszystkie cyfry poprawne?, Czy ró»ni si¦ od warto±ci
dokªadnej o mniej ni» 0,5 · 10
−
8
?
I
A co z sytuacj¡, »e zastosowana metoda oblicze« jest maªo
dokªadna?
Obliczenia
I
U»ywamy komputera do dokonania jakich± oblicze«.
I
Komputer podaje wynik (a = 5,34273343) maj¡cy 8 cyfr po
przecinku.
I
Czy mo»emy powiedzie¢, »e wyznaczona liczba ma
wszystkie cyfry poprawne?, Czy ró»ni si¦ od warto±ci
dokªadnej o mniej ni» 0,5 · 10
−
8
?
I
A co z sytuacj¡, »e zastosowana metoda oblicze« jest maªo
dokªadna?
Bª¡d bezwzgl¦dny warto±ci przybli»onej I
Niech A b¦dzie warto±ci¡ dokªadn¡, a a warto±ci¡ przybli»on¡
pewnej wielko±ci. Bª¦dem bezwzgl¦dnym warto±ci
przybli»onej nazywamy ka»d¡ liczb¦ ∆a speªniaj¡c¡ warunek:
|
A − a| ≤ ∆a,
to znaczy tak¡ liczb¦, »e
a − ∆a ≤ A ≤ a + ∆a.
Warto±¢ przybli»ona a i jej bª¡d bezwzgl¦dny ∆a wyznaczaj¡
przedziaª:
<
a − ∆a; a + ∆a >,
do którego nale»y dokªadna warto±¢ A
Bª¡d bezwzgl¦dny nie jest okre±lony jednoznacznie!
Liczba przybli»ona
Je»eli a jest warto±ci¡ przybli»on¡ dla warto±ci dokªadnej A,
obci¡»on¡ bª¦dem ∆a, to par¦ liczb ∆a, a zapisan¡ w postaci
∆
a
a
b¦dziemy nazywali liczb¡ przybli»on¡ dla A.
π
Wiemy, »e π = 3,14159265 . . .. Warto±ci¡ przybli»on¡ π cz¦sto
u»ywan¡ w rachunkach, jest liczba 3,14.
Jej bª¦dem bezwzgl¦dnym jest na przykªad liczba ∆a = 0,0016.
Dokªadna warto±¢ π jest zawarta mi¦dzy liczbami:
3,14 − 0,0016 ≤ π ≤ 3, 14 + 0,0016
to znaczy π znajduje si¦ w przedziale
<
3,1384; 3,1416 >
Zatem mo»emy zapisa¢ π =
0,0016
3,14
Równo±¢ w przybli»eniu
Je»eli liczby przybli»one
α
a i
β
b s¡ takie, »e przedziaª
<
a − α; a + α > jest zawarty w przedziale < b − β; b + β > to
mówimy, »e liczba
α
a jest w przybli»eniu równa liczbie
β
b.
Zapisujemy to
α
a⇒
β
b.
Z tego »e
α
a jest w przybli»eniu równe
β
b NIE WYNIKA, »e
β
b jest
w przybli»eniu równe
α
a!
Zaokr¡glanie liczb przybli»onych
Dla dowolnej liczby przybli»onej
α
a i dowolnej liczby
rzeczywistej b zachodzi zwi¡zek:
α
a⇒
α+|
a−b|
b
czyli
α
a jest w przybli»eniu równe
α+|
a−b|
b
Zaokr¡glanie stosujemy wtedy, gdy wynik jakich± dziaªa« ma
zbyt wiele cyfr. Zast¦puj¡c liczb¦
α
a=
0,0000027
3,14159 liczb¡ 3,14
mo»emy oszacowa¢ bª¡d. Wynosi on
0,0000027 + |3,14159 − 3,14. Czyli: 0,0015927. Zatem:
0,0000027
3,14159⇒
0,0015927
3,14
Zaokr¡glanie liczb przybli»onych
Je»eli β ≥ α, to:
α
a⇒
β
b
Zatem
0,0015927
3,14 ⇒
0,0016
3,14
Reguªy zaokr¡glania
I
Gdy wynik dziaªania arytmetycznego ma (za) du»o cyfr
mo»emy odrzuci¢ ostatnie, zb¦dne cyfry (pami¦taj¡c o
zwi¦kszeniu bª¦du zaokr¡glenia).
I
Gdy pierwsz¡ odrzucon¡ cyfr¡ jest 0, 1, 2, 3, 4 cyfr
pozostawionych w warto±ci przybli»onej nie zmieniamy.
I
Je»eli pierwsz¡ odrzucon¡ cyfr¡ jest 5, 6, 7, 8, 9 do
pozostawionej cz¦±ci warto±ci przybli»onej dodajemy 1 na
ostatnim zostawianym miejscu dziesi¦tnym.
Taka zmiana liczby przybli»onej nazywa si¦ poprawnym
zaokr¡gleniem.
Dziaªania na liczbach przybli»onych
suma
α
a +
β
b=
α+β
a + b
ró»nica
α
a −
β
b=
α+β
a − b
Dziaªania na liczbach przybli»onych
suma
α
a +
β
b=
α+β
a + b
ró»nica
α
a −
β
b=
α+β
a − b
Dziaªania na liczbach przybli»onych
iloczyn
α
a ·
β
b⇒
|
a|β+|b|α+αβ
ab
dzielenie
α
a:
β
b⇒
γ
a
b
gdzie
γ =
α + |
a
b
|β
|
b| − β
.
Dziaªania na liczbach przybli»onych
iloczyn
α
a ·
β
b⇒
|
a|β+|b|α+αβ
ab
dzielenie
α
a:
β
b⇒
γ
a
b
gdzie
γ =
α + |
a
b
|β
|
b| − β
.
Dziaªania na liczbach przybli»onych
suma
1.
Pierwszy najmniej korzystny przypadek:
a − α + b − β = (a + b) − (α + β)
2.
Drugi najmniej korzystny przypadek:
a + α + b + β = (a + b) + (α + β)
Dziaªania na liczbach przybli»onych
suma
1.
Pierwszy najmniej korzystny przypadek:
a − α + b − β = (a + b) − (α + β)
2.
Drugi najmniej korzystny przypadek:
a + α + b + β = (a + b) + (α + β)
(Zadanie domowe: jak b¦dzie w przypadku ró»nicy? A w
przypadku iloczynu?)
Przykªad
Obliczy¢ warto±¢ wielomianu
w(x) = a
0
x
4
+
a
1
x
3
+
a
2
x
2
+
a
3
x + a
4
dla x = 2,1.
Przyjmijmy, »e wspóªczynniki wielomianu s¡ liczbami
dokªadnymi i równaj¡ si¦:
a
0
=
2,3, a
1
=
3, a
2
= −
4,5, a
3
=
7,2, a
4
= −
0, 1
Najpierw obliczenia wykonamy z dokªadno±ci¡ do dwóch miejsc
po przecinku, a pó¹niej z dokªadno±ci¡ do czterech.
Przykªad cd
dwie cyfry
x
2
=
0,0
2,1 ×
0,0
2,1=
0,00
4,41
x
3
=
0,00
4, 41 ×
0,0
2, 1=
0,000
9,261⇒
0,001
9,26
x
4
=
0,001
9,26 ×
0,0
2,1⇒
0,0021
19,446 ⇒
0,0061
19,45
2,3 × x
4
=
0,0
2,3 ×
0,0061
19,45 ⇒
0,01403
44,735 ⇒
0,01903
44,74 ⇒
0,02
44,74
3x
3
=
0
3 ×
0,001
9,26 ⇒
0,003
27,78
−
4,5x
2
=
0,0
−
4,5 ×
0,00
4,41⇒
0,000
−
19,845⇒
0,005
−
19,85
7,2x =
0,0
7,2 ×
0,0
2,1⇒
0,00
15,12
suma:
w(2,1) =
0,02
44,74 +
0,003
27,78
0,005
−
19,85 +
0,00
15,12
0,0
−
0,1=
0,028
67,69
Przykªad cd
cztery cyfry
x
2
=
0,0
2,1 ×
0,0
2,1=
0,00
4,41
x
3
=
0,00
4, 41 ×
0,0
2, 1=
0,000
9,261
x
4
=
0,000
9,261 ×
0,0
2,1=
0,0000
19,4481
2,3 × x
4
=
0,0
2,3 ×
0,0000
19,4481=
0,0000
44,73063⇒
0,00003
44,7306
3x
3
=
0
3 ×
0,000
9,261=
0,000
27,783
−
4,5x
2
=
0,0
−
4,5 ×
0,00
4,41=
0,000
−
19,845
7,2x =
0,0
7,2 ×
0,0
2,1=
0,00
15,12
suma
w(2,1) =
0,00003
44,7306 +
0,000
27,783 −
0,000
19,845 +
0,00
15,12 −
0,0
0,1=
0,00003
67,6886
Przykªad cd
Zaªó»my teraz, »e wspóªczynniki obarczone s¡ bª¦dami i równaj¡ si¦:
a
0
=
0,01
2,3, a
1
=
0
3, a
2
=
0,02
−
4,5, a
3
=
0,02
7,2, a
4
=
0,01
−
0, 1
dwie cyfry
w(2,1) ⇒
0,42
67,69
cztery cyfry
w(2,1) ⇒
0,3678
67,6886⇒
0,3692
67,69⇒
0,37
67,69
Prowadzenie oblicze« z dokªadno±ci¡ do czterech cyfr po przecinku praktycznie nie
zwi¦kszyªo dokªadno±ci!
Wynika to st¡d, »e dane obarczone s¡ du»ym bª¦dem (ju» druga
cyfra po przecinku nie jest dokªadna).
Literatura dodatkowa
Wojciech Myszka.
Przykªadowe programiki pokazuj¡ce problemy numeryczne.
Dost¦pne pod adresem
http://www.immt.pwr.wroc.pl/~myszka/TI/kod.html
pa¹dziernik 2008.
Roman Zuber.
Metody numeryczne i programowanie.
WSziP, 1975.
fragmenty:
http://www.immt.pwr.wroc.pl/~myszka/TI/zuber.pdf
oraz