Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1
Zapis zmiennopozycyjny, arytmetyka, błędy numeryczne
Plan wykładu:
1. zapis zmiennopozycyjny2. arytmetyka zmiennopozycyjna3. reprezentacja liczb w standardzie IEEE7544. błędy w obliczeniach numerycznych5. definicje
2
Własności zapisu zmiennopozycyjnego
Liczbę rzeczywistą w komputerze reprezentuje liczba zmiennoprzecinkowa:
gdzie: M – znacznik („mantysa”) jest liczbą ułamkową ze znakiem – stanowi bazę reprezentacji i jest liczbą całkowitą (np.: 2, 10, 16)E – wykładnik („cecha”) jest znakowaną liczbą całkowitąPowyższy zapis jest niejednoznaczny:
m jest liczbą pozycji znacznika w bazie.Można odróżnić
różnych reprezentacji tej samej liczby.Ograniczeniem znacznika jest
ale problem nadal pozostaje.
Jednoznaczność osiągamy dla warunku
wtedy dla dowolnego i≠ 0 mamy
w praktyce stosuje się
Znaczniki spełniające powyższy warunek nazywamy znormalizowanymi (liczby znormalizowane).Nie ma liczb znormalizowanych
w tym 0. Tworzą one osobną grupę zwana liczbami zdenormalizowanymi.
Znormalizowane wartości dla
F = M¯E
F = M¯E = Mi¯E+i = (M¯¡i)¯E+i
i = ¡m; : : : ;¡1; 0; 1; : : : ;m
jM j < ¯
jM j¯¡i =2 [¯p¡1; ¯p)
p = 0; 1
jF j < ¯p¡1¡Emin
¡3
4¡1
2
3
4
1
2
1
4¡1
4
01¡1
¯ = 2; p = 0
k = mlog¯2
¯p¡1 · jM j < ¯p
¯p¡i¡1 · jM j¯¡i < ¯p
3
Podstawowe operacje arytmetyczne.Wykonujemy operacje na dwóch znormalizowanych liczbach
Czy przeprowadzenie 4 podstawowych operacji da znormalizowany wynik?
Mnożenie
sprawdzamy czy nie wystąpił nadmiar (EW>Emax) lub niedomiar (EW<Emin) zmiennopozycyjny. Jeśli wartość znacznika wychodzi poza dozwolony zakres tj.:
to wykonujemy postnormalizację
F1 = M1¯E1 ; F2 = M2¯
E2
F1F2 = M1¯E1M2¯
E2
= (M1M2)¯E1+E2 = MW¯W
¯2p¡2 · jMW j = jM1M2j < ¯p¡1
F1F2 = (M1M2¯¡p+")¯E1+E2+p¡"
" = 0; 1
Dzielenie
ponieważ
konieczna jest postnormalizacja ilorazudo postaci
Dodatkowo należy zapewnić obsługę liczb zdenormalizowanych, dzielenia przez 0 oraz próby dzielenia 0/0.
F1=F2 = (M1¯E1)=(M2¯
E2)
= (M1=M2)¯E1¡E2
jMW j = M1=M2 2 (¯¡1; ¯)
F1=F2 = (¯p¡"M1=M2)¯E1¡E2¡p+"
¯¡1 · jMW j < 1 =) " = 0
1 · jMW j < ¯ =) " = 1
4
Dodawanie i odejmowanieWymagane jest wstępne wyrównanie wykładników. Powoduje to denormalizację operandu z mniejszym wykładnikiem i utratę dokładności (na najmniej znaczących pozycjach znacznika).Załóżmy
a) jeśli
oraz
to wówczas normalizacja doprowadzi do nadmiaru.b) jeśli
oraz
to wystąpi niedomiar.
E1 ¸ E2
F1 § F2 = (M1¯E1)§ (M2¯
E2)
= (M1 §M2¯¡(E1¡E2))¯E1
E1 = Emax
¯p · jMW j < 2¯p
E1 ¡ (p¡ i) · Emin
jMW j < ¯i · ¯p¡1
Jeśli spełniony jest warunek
wówczas może dojść do wyzerowania wszystkich znaczących pozycji znacznika sumy lub różnicy.
Wybór reprezentacji
Liczbę zmiennopozycyjną zapisujemy na n pozycjach, z czego:a) 1 pozycję przeznaczamy na znak liczbyb) t pozycji na zapis znacznikac) d pozycji na zapis wykładnika
p¡ i ¸ jmlog¯2j
m¡1m¡2 m¡t: : : : : : : : : : : :s se e0 e1 ed¡1
wykładnik znacznikznak
x = s
ÃtX
i=1
m¡i¯¡i!
¯E
n = 1 + d + t
5
Wartość błędu bezwzględnego wynika z nierównomiernego rozłożenia liczb w reprezentacji zmiennopozycyjnej
Błąd względny
rośnie ze zmniejszaniem znacznika aż do wartości
MRRE – maximum relative representation error.
¯p¡3 ¯p¡2 ¯p¡1 ¯p0
M
j"(x)j = jfl(x)¡ xjx
·12ulp¯E
M¯E=
ulp
2M
MRRE = maxM
j"(x)j = 1
2ulp¯p¡1
Dokładność reprezentacjiJeśli liczba zmiennopozycyjna jest reprezentowana przez skończoną liczbę bitów to dokładność reprezentacji określa liczba bitów znacznika a zakres reprezentowanych liczb zależy od liczby bitów wykładnika.
Jeśli zachodzi warunek
(ulp – najmniej znacząca pozycja znacznika)wówczas zaokrąglając liczbę x do bliższej reprezentacji dostajemy błąd bezwzględny
gdzie fl(x) oznacza reprezentację liczby x w zapisie zmiennopozycyjnym.
M¯E · x · (M + ulp)¯E; x 2 R
jfl(x)¡ xj · 1
2ulp¯E
6
Dobór zakresu wykładnika
Jednym z wymagań jest aby dla każdej znormalizowanej liczby x możliwe było obliczenie jej odwrotności. Wykładnik kodowany jest na d pozycjach z czego pozycji musimy zarezerwować na 0 oraz wielkości nieznormalizowane (nieskończoności itp.).Rozpiętość wykładnika wynosi
i aby istniały znormalizowane reprezentacje odwrotności małych liczb.
Dla =2, -1=1 i p=0najmniejszy znacznik ma wartość
0,100000...000a największy
0,111111...111najbardziej znaczący bit nie musi być kodowany (bit ukryty). Pominięcie go prowadzi do pełnego wykorzystania przestrzeni kodowej znacznika (100%). W innych przypadkach liczby znormalizowane zajmują jedynie (1-1/)100% przestrzeni.Bit ukryty jest odtwarzany w trakcie operacji arytmetycznych.
s = Emax ¡Emin = 2d ¡ ¸
Schematy zaokrąglania liczb
Podczas wykonywania operacji arytmetycznych może dojść do zwiększenia się liczby bitów wynikowych, np. przy mnożeniu dwóch znaczników
Aby zapisać wynik należy uciąć ostanie m bitów. Eliminacja nadmiarowych bitów nazywana jest zaokrąglaniem.
Reguły zaokrąglania
mw = 2m
x · y ) fl(x) · fl(y)
x 2 fl) fl(x) = x
F1 = M¯E · x · (M + ulp)¯E = F2| {z }x=F1_x=F2
7
Odcięcie (najprostsze)
Jeślim - liczba pozycji znacznikad - liczba uciętych bitów
i standaryzowanym błędem losowym obcinania znacznika jest
Dla równomiernego rozkładu wartości x w przedziale [M, M+ulp] miarą średniego standaryzowanego błędu obcinania jest
Błąd ten jest zawsze ujemny – estymator T(x) jest ujemnie obciążony.Skutek obcinania: niedoszacowanie.
M · x < M + ulp, T (x) = M
x = M + i2¡dulp; 0 · i · 2d ¡ 1
T (x)¡ x
ulp= ¡i2¡d
Zaokrąglanie do najbliższej wartości
Reguły zaokrąglania
Ten typ zaokrąglania powoduje, że średnia wartość błędu standaryzowanego jest bliska 0, ale estymator R(x) jest obciążony dodatnio.
Zaokrąglanie symetryczneReguły zaokrąglania
Średnia wartość błędu standaryzowanego wynosi 0, a estymator S(x) jest niebciążony.Wadą zwykłego zaokrąglania oraz zaokrąglania symetrycznego jest konieczność wykonania 2m-pozycyjnego dodawania.
R(x) =
½M; x¡M < ulp
2
M + ulp; x¡M ¸ ulp2
S(x) =
8<:
M ¡ ulp; ¡ulp · x¡M < ¡ 12ulp
M; ¡ 12ulp · x¡M · + 1
2ulp
M + ulp; + 12ulp · x¡M < +ulp±T =
1
2d
2d¡1X
i=0
(¡i)2¡d < 0
8
Reprezentacja liczb w standardzie IEEE754
Formaty liczb zmiennopozyjcyjnych:1) zwykły pojedynczej precyzji - single (real)2) rozszerzony pojedynczej precyzji - single extended3) zwykły podwójnej precyzji - double4) rozszerzony podwójnej precyzji - double extended
Wykładnik jest reprezentowany w kodzie z obciążeniem, a znacznik w kodzie znak-moduł. Wartość liczby w IEEE754
gdzie: EB - wykładnik, B – przesunięcie (dzięki niemu nie musimy pamietać znaku),(E=EB-B -”prawdziwy” wykładnik)(1,f) – wartość modułu znacznikaJeśli d oznacza liczbę bitów wykładnika to wielkością przemieszczenia jest
B = 2d ¡ 1
F = (¡1)s2EB¡B(1; f)
Bez przesunięcia, najmniejszą wartością wykładnika jest EB=Emin+B=00...0012
a największą EB=Emax+B=11...1102
Zakres wykładnika jest ograniczony z obawy przed uzyskaniem nadmiaru podczas obliczania odwrotności liczb.
Liczby zdenormalizowane z zakresu [-2Emin,+2Emin] łącznie z zerami można zapisać
F = (¡1)s2Emin(0; f)
9
symbol single double
Rozmiarformatu
n 32 64
Rozmiarznacznika
m 23(+1) 52(+1)
Rozmiarwykładnika
d 8 11
obciążenie B 127 1023
Zakreswykładnika
E [-126,127] [-1022,1023]
dokładność ulp
Zakresformatu
RNG¼ 2128
¼ 3; 8 ¢ 1038
2¡23 ¼ 10¡7 2¡52 ¼ 10¡15
¼ 21024
¼ 9 ¢ 10307
10
Nie-liczby
Pojawiają się podczas wykonywania operacjinp.:
Bez ich obsługi program przerywałby działanie. Obsługa nie-liczb pozwala je wykryć i np. zrestartować schemat iteracyjny z innym parametrem.
Znakowane zero
Po co?Dla liczb rzeczywistych mamy
zatem relacja
nie jest spełniona. Dla znakowanego 0 mamy
0=0;p¡jxj
1=¡1 = 0; 1=(1=¡1) = +1
1=(1=x) = x
x = ¡1; 1=x = ¡0
1=(1=x) = 1=¡ 0 = ¡1 = x
Wyjątki w IEEE754
Standard zapewnia obsługę specyficznych wyników operacji:
1. nadmiar (Fmax, nieskończonośc)2. niedomiar (Fmin, l. denormalizowane)3. dzielenie przez 04. niepoprawna operacja (NAN)5. niedokładność (zaokrąglenie wyniku)
11
Przykład – zapis 8 bitowyLiczba
ma reprezentację
Ale dla liczby x=0.2 pojawia się problem
po zaokrągleniu wyniku do najbliższej liczby
co daje błąd bezwzględny równy 0.0125 i błąd względny na poziomie 6.25%.
Błędy numeryczne
Najprostszy podział:
1. błędy wejściowe2. błędy zaokrągleń3. błędy obcięcia
Błędy wejściowe Występują gdy dane liczbowe wprowadzane do pamięci komputera odbiegają od wartości dokładnych. Kiedy występują?- gdy wprowadzane dane pomiarowe są obarczone błędami pomiarowymi (np. pomiar wielkości fizycznych takich jak oporu czy napięcia)- gdy ze względu na skończoną długość słowa binarnego dochodzi do wstępnego zaokrąglenia liczb (ułamki dziesiętne lub zaokrąglanie liczb niewymiernych jak np.: e, )
x(10) = 3:25
x(z2) = (0)1101| {z }M
(0)10| {z }W
x(2) = 0:0011(0011)::::
x0
(z2) = (0)1100(1)10
x0(2) = 0:001100
x0
(10) = 0:1875
12
Przykład Chcemy wyznaczyć wartość ex, więckorzystamy z rozwinięcia
ale numerycznie lepiej zrobić to tak
gdzie: E(x) jest częścią całkowitą liczby x, q jest częścią ułamkowąPierwszy wyraz jest potęgą a drugiliczymy wg rozwinięcia.Do wyznaczenia pozostaje tylko błąd obcięcia. Szereg ucinamy na n-tymwyrazie.
Błędy obcięcia - powstają podczas zmniejszania liczby działań np.:a)przy obliczaniu wartości szeregów
(ucięcie szeregu)b)wyznaczaniu granic (obliczanie
wartości całki)c)zastępowaniu pochodnej funkcji
ilorazem różnicowym
ex =
1X
n=0
xn
n!; ¡1 < x < +1
ex = eE(x)eq
0 · x < 1
Reszta szeregu:
szacujemy maksymalny błąd obcięcia tj.
widzimy że szereg jest więc szybko zbieżny.Dokładniejsze oszacowanie
0 · Rn(q) <3
(n + 1)!qn+1
Rn(x) =eµq
(n + 1)!qn+1; 0 < µ < 1
µ ¼ 1; q ¼ 1
Rn(q) =
qn+1
(n + 1)!+
qn+2
(n + 2)!+
qn+3
(n + 3)!+ : : :
=qn+1
(n + 1)!
µ1 +
q
n + 2+
q2
(n + 2)(n + 3)+ : : :
¶
<qn+1
(n + 1)!
Ã1 +
q
n + 2+
µq
n + 2
¶2+ : : :
!
13
Rn(q) <qn+1
(n + 1)!
1
1¡ qn+2
Stosując wzór na sumę szer. geom.
dla
oraz
dostajemy warunek
gdzie
jest ostatnim wyrazem użytym przysumowaniu elementów.Wyrażenie na ex (małe x)przyjmuje postać:
0 · q < 1
n + 2
n + 1<
n + 1
n
0 < Rn(q) < unq
n; 0 < q < 1
un =qn
n!
ex = u0 + u1 + u2 + : : : + Rn(x)
gdzie
Wówczas schemat iteracyjny obliczania wartości sumy jest następujący
z warunkami
Załóżmy, że " jest maksymalną wartością błędu obcięcia szeregu.
u0 = 1; uk =xuk¡1
k; k = 1; 2; 3; : : : ; n
uk =x
kuk¡1
sk = sk¡1 + uk
k = 0; 1; 2; : : : ; n
u0 = 1; s¡1 = 0; s0 = 1
14
np. obliczmy wartość z dokładnością 2.5x10-6
wynik
pe
u0 = 1
u1 = 0:5000000
u2 = 0:1250000
u3 = 0:0208333
u4 = 0:0026042
u5 = 0:0002604
u6 = 0:0000217
u7 = 0:0000016
pe = 1:648721
jRn(x)j · Rn(jxj)
<jxjn+1
(n + 1)!¢ 1
1¡ jxjn+2
<2jxjn+1(n + 1)!
=2jxjn + 1
¢ jxjn
n!
< junj · "
jun(x)j < "
Proces sumowania przerywamy gdyspełniony będzie poniższy warunek
Ostatecznie warunek ten przyjmuje bardziej „przystępną” postać
15
Błędy zaokrągleń
Pojawiają się podczas wykonywania operacji arytmetycznych. Wynikają z ograniczonej reprezentacji liczb zmiennopozycyjnych.
Wielkość błędów zależy od:
a) dokładności reprezentacjib) sposobu zaokrąglania wynikuc) rodzaju przeprowadzanej operacji
Lemat Wilkinsona – błędy zaokrągleń powstające podczas wykonywaniadziałań zmiennopozycyjnych są równoważne zastępczemu zaburzeniu liczb, na których wykonujemy działania.
Po przeprowadzeniu operacji dostajemy
Błędy względne zaokrągleń:
mnożenia
dzielenia
dodawania i odejmowania
Zwłaszcza przy odejmowaniu możemy dostać duży błąd, gdy fl(x) = x(1 + "x); f l(y) = y(1 + "y)
fl(x)fl(y)¡ xy
xy= (1 + "x)(1 + "y)¡ 1 =
= "x + "y + "x"y ¼ "x + "y
fl(x)=fl(y)¡ x=y
x=y=
1 + "x1 + "y
¡ 1 =
="x ¡ "y1¡ "y
¼ "x ¡ "y
fl(x)§ fl(y)¡ (x§ y)
x§ y=
x"x § y"yx§ y
=
=x
x§ y"x ¡
y
x§ y"y
x ¼ y; "x ¼ ¡"y
16
Wykonywanie kolejnych operacji na wynikach poprzednich operacji prowadzi do kumulacji błędów zaokrągleń.
Można je zmniejszyć ustalając odpowiednio sposób i kolejność wykonywanych działań lub zwiększając precyzję obliczeń (nie zawsze można).
17
Szacowanie błędów zaokrągleń
a) Sumowanie liczb (jedna z częściej wykonywanych operacji)
oznaczenie
Zgodnie z lematem Wilkinsona:
Indeks s - sumaindeks x - wartość
Obliczona wartość sumy:
s =
nX
i=1
xi
sk = fl¡sk¡1 + xk
¢= s
0k¡1 + x
0k
18
Obliczona suma jest sumą zaburzonych składników. Wielkość zaburzeń zależy od kolejności wykonywania sumowania. Nie znamy wielkości poszczególnych mnożników, ale możemy oszacować maksymalne dopuszczalne zmiany składników:
Najmniej zaburzony jest składnik ostatni bo tylko (1+) lub (1-) razy.
Można stąd wysunąć wniosek odnośnie sumowania: liczby należy sumować od najmniejszej do największej wg wartości bezwzględnej- trzeba zmienić algorytm na dokładniejszy.
x1;min = x1(1¡ ")n
xi;min = xi(1¡ ")n+1¡i
x1;max = x1(1 + ")n
xi;max = xi(1 + ")n+1¡i
19
b) Obliczanie wartości wielomianu
W „tradycyjny” ale nieoptymalny sposób:
Wykonujemy:
-M operacji mnożenia
- D operacji dodawania
Optymalny sposób obliczania wartość wielomianu zapewnia Schemat Hornera
Wykonujemy tylko M=n-1 mnożeń i D=n dodawań.
Uwaga:Wyniki uzyskane wg powyższych algorytmów mogą się różnić.Natomiast oszacowana największa możliwa wartość błędu w obu przypadkach jest taka sama.
w(x) = xn + a1xn¡1 + a2x
n¡2 + ¢ ¢ ¢+ an¡1x + an
w(x) = xx ¢ ¢ ¢ x| {z }n
+a1 x ¢ ¢ ¢x| {z }n¡1
+ ¢ ¢ ¢+ an¡1x + an
M =(n¡ 1)(n + 2)
2
w(x) = x
µx³x ¢ ¢ ¢
¡x + a1
¢+ a2
´+ ¢ ¢ ¢+ an¡1
¶+ an
D = n
20
Zadanie numeryczne to jasny i niedwuznaczny opis powiązania funkcjonalnego między danymi wejściowymi i danymi wyjściowymi. Dane te składają się ze skończonej liczby wielkości rzeczywistych.
Algorytm numeryczny dla zadania numerycznego to opis poprawnie określonych operacji (arytmetycznych lub logicznych), które należy wykonać aby przekształcić wektor danych wejściowych na wektor danych wyjściowych.
PrzykładOkreślić największy pierwiastek rzeczywisty równania
dla wektora danych wejściowych
jest to zadanie numeryczne. Daną wyjściową jest szukany pierwiastek.Algorytm dla tego zadania – metoda Newtona, schemat iteracyjny, wzory Cardana.
Uwarunkowanie zadaniadla danych
poszukujemy wyniku
czyli
Jeśli niewielkie względne zmiany danych zadania powodują duże względne zmiany rozwiązania, to zadanie takie jest źle uwarunkowane. Wskaźnikiem uwarunkowania zadania nazywamy wielkość charakteryzującą wpływ zaburzeń danych na zaburzenie rozwiazania.
Zadanie jest:
-dobrze uwarunkowane
-źle uwarunkowane
-źle postawione
a3x3 + a2x
2 + a1x + a0 = 0
(a0; a1; a2; a3)
ddd = (d1; d2; : : : ; dn) 2 Rn
www = (w1; w2; : : : ; wm) 2 Rm
www = '(ddd); ' : Rn ! Rm
cond(';ddd) ¼ 1
cond(';ddd) À 1
cond(';ddd) ! +1
k'(ddd)¡ '(~d~d~d)k = cond(';ddd)kddd¡ ~d~d~dk
21
PrzykładJakie jest uwarunkowanie obliczania iloczynu skalarnego?
zaburzamy dane wejściowe
i liczmy względną zmianę wyniku
S =
nX
i=1
aibi 6= 0
ai(®) = ai(1 + ®i)
bi(¯) = bi(1 + ¯i)
®i¯i ¼ 0
¯̄¯̄Pni=1 ai(1 + ®i)bi(1 + ¯i)¡
Pni=1 aibiPn
i=1 aibi
¯̄¯̄ ¼
¼¯̄¯̄Pni=1 aibi(®i + ¯i)Pn
i=1 aibi
¯̄¯̄ ·
· maxij®i + ¯ij
ÃnX
i=1
jaibij=¯̄¯̄¯nX
i=1
aibi
¯̄¯̄¯
!
Za wskaźnik uwarunkowania przyjmujemy
dla
czyli zadanie jest dobrze uwarunkowane.
Algorytmy numerycznie poprawne
Są to algorytmy numerycznie najwyższej jakości, dla których obliczone rozwiązanie jest „nieznacznie” zaburzonym rozwiązaniem dla „nieznacznie” zaburzonych danych.
„nieznaczne ” zaburzenie – zaburzenie na poziomie reprezentacji (rd(d), rd(w))
jaibij = aibi ! cond(aaa;bbb) = 1
cond(aaa;bbb) =
Pn
i=1 jaibijjPn
i=1 aibij
kddd¡ rd(ddd)k · ½dkdddkkwww ¡ rd(www)k · ½wkwwwk
23
Algorytmy numerycznie stabilne
- dokładne rozwiązanie:
- dane zaburzone na poziomie reprezentacji:- dokładny wynik dla danych :
- zaburzony wynik dla zaburzonych danych:
Dostajemy oszacowanie
gdzie
jest optymalnym poziomem błędu rozwiązania w danej arytmetyce (fl).
bddd bddd
www = '(ddd); kddd¡ bdbdbdk · ½dkdddk
bwww = '(bddd); kbwww ¡ ewwwk · ½wkbwbwbwk
algorytm A jest numerycznie stabilny, jeśli dla każdego
istnieje stała K (ograniczenie od góry) i dla dostatecznie silnej arytmetyki zachodzi
- realizacja odwzorowania przez algorytm A w arytmetyce zmiennopozycyjnej
Wskaźnik stabilności K powinien być jak najmniejszy – jego wielkość może służyć do oceny algorytmu.Stabilność numeryczna jest własnością jakiej powinniśmy oczekiwać od algorytmu.
kwww ¡ ewewewk · kwww ¡ bwbwbwk+ kbwbwbw ¡ ewewewk ·· (1 + ½w)P (ddd; ')
ddd 2 D
k'(ddd)¡ fl(A(ddd))k · K ¢ P (ddd; ')
ewww = fl (bwww)
P (ddd; ') = ½wkwwwk+ max k'(ddd)¡ '(bdbdbd)k
fl(A(ddd))
24
Złożoność obliczeniowa
rozważamy problem
Minimalną liczbę działań potrzebnych do obliczenia wyniku definiujemy jako
Wielkość z(,D) nazywamy złożoności obliczeniową zadania.Jeśli zadanie ma n danych istotnych tj.
wówczas
i liczba istotnych danych określa oszacowanie z dołu złożoności obliczeniowej. Analiza algorytmów numerycznych powinna zawierać oprócz analizy dokładności metody również analizę jej złożoności obliczeniowej (pozwala oszacować koszt metody).
z(';D) = supd2D
z(';D)
_
d2D
^
1·j·n
_
±
ddd + ±eeej 2 D ) '(ddd) 6= '(ddd + ±eeej)
eeej = (0; : : : ; 0; 1; 0 : : : ; 0)T
z(';D) ¸ n=2
www = '(ddd); ' : D ½ Rn ! Rm