UMÍ POČÍTAČE POČÍTAT? O ÚSKALÍCH POČÍTAČOVÉ ARITMETIKY RNDr. Iveta Hnětynková, PhD. Katedra numerické matematiky
VÝPOČTY A SIMULACE Aplikace: chemie, fyzika, lekařství, statistika, ekonomie, stojírenství,...
POČÍTAČE A VÝPOČTY 3
TOP0 POČÍTAČE PODLE VÝPOČETNÍHO VÝKONU 4
SUPERPOČÍTAČE VE SVĚTĚ (07) Výpočetní výkon: 5
SUPERPOČÍTAČE U NÁS - IT4Innovations Ostrava Superpočítač Anselm (03) 3 344 jader 94 TFLOPS (tj. 0 operací/s) výpočetní výkon Superpočítač Salomon (05) 4. v TOP500 nejrychlejších (39. při zprovoznění) 76 896 jader PFLOPS výpočetní výkon (0 5, jako zhruba 74 000 notebooků) 6
OD REÁLNÉHO PROBLÉMU K ŘEŠENÍ MODEL, METODA, PŘIBLIŽNÝ VÝSLEDEK? Přibližné řešení CHYBY Reálný problém Výpočetní metoda CHYBY Matematický model CHYBY Model = často zjednodušený popis problému jazykem matematiky (rovnice, tabulky, ) Výpočetní metoda = postup vedoucí k získání (přibližného) řešení 7
VYUŽITÍ POČÍTAČE K ŘEŠENÍ ALGORITMUS, PROGRAM Program = popis postupu řešení v jazyce počítače = sekvence instrukcí k jednoduchým operacím Počítá počítač přesně? Můžeme výsledku věřit? Co máme udělat, abychom se na výsledek mohli spolehnout? 8
JE VÝPOČET VŽDY SPOLEHLIVÝ? n n 3 4... Přesně: Matlab:,06 8 pro x,.0 Přesně: 0,5 Matlab: 0,77 cos( x) x 9
REPREZENTACE ČÍSEL V POČÍTAČI ARITMETIKA S POHYBLIVOU ČÁRKOU Číslo je uloženo v binární (dvojkové) reprezentaci v určitém počtu bajtů (4, 8, ). Jeden bajt má 8 bitů pro uložení 0 nebo. přesnost single.000 x 5 mantisa exponent max. 3 pozic mezi -6 a 7 0
PŘESNOST ČÍSEL V POČÍTAČI ZAOKROUHLOVÁNÍ Číslo 0, je binárně přibližně.00000000-4 a tedy fl (0,) ~ 0,00000038485790 chyba Větší čísla jsou uložena s menší absolutní přesností
PŘESNOST ZÁKLADNÍCH OPERACÍ ZAOKROUHLOVÁNÍ Ztráta přesnosti při operacích (sčítání, násobení, ) fl (x * y) = (x * y) ( + d), d < e ~ 0-8 přesnost single ~ 0-6 přesnost double Neplatí základní vlastnosti z přesné aritmetiky (komutativita, ). = 00 000 000 Single: fl (0, + 00 000 000 00 000 000) = 0 fl (00 000 000 00 000 000 + 0,) = 0,
JE VÝPOČET SPOLEHLIVÝ? SČÍTÁNÍ ČÍSEL RŮZNÉHO ŘÁDU n n 3 4... 0 000000000... 5 6 Počítač (přesnost single): 5,40 Počítač (přesnost double):,06 fl A B A 3
JE VÝPOČET SPOLEHLIVÝ? ODČÍTÁNÍ BLÍZKÝCH ČÍSEL cos( x) 8 Počítač (přesnost single): 0 0,5 pro x,.0 x Počítač (přesnost double): 0,77 Přesně: Double: cos( x) cos( x) cos( x) 0,99999999999999998 0,99999999999999989 0,700000000000000.0 cos( x),030465565.0-6 -6 fl A B? 4
ZTRÁTA PŘESNOSTI OPERACÍ ČEMU SE VYHNOUT fl A B A ztráta přesnosti zaokrouhlováním fl A B? ztráta přesnoti rušením platých cifer a dalším obdobným situacím. 5
JAK SNÍŽIT CHYBY? VHODNÁ VÝPOČETNÍ METODA Chceme nalézt metodu, která nebude citlivá na zaokrouhlovací chyby. Použijeme-li cos( x) sin x / vyhneme se odčítaní blízkých čísel cos( x) x sin x / / x / Počítač (přesnost single): 0,5 Počítač (přesnost double): 0,5 6
JAK SNÍŽIT CHYBY? VHODNÁ VÝPOČETNÍ METODA Výpočet kořenů x 56x 0 pomocí r, ( b b 4ac) /(a) Počítač (double): r 8 7,98 r je OK, ztráta přesnosti jen v r, Využijeme-li vztahy r r b /, a rr c /, r / 55,98 0, 07869 a 7
REÁLNÝ PROBLÉM SEKVENCE OPERACÍ CHYBY SE MOHOU KUMULOVAT Přesné řešení Spolehlivý postup: Matematika + Informatika Reálné výpočty = miliardy operací v aritmetice s konečnou přesností Nespolehlivý postup 8
REÁLNÝ PROBLÉM KUMULACE CHYB VÁLKA V PERSKÉM ZÁLIVU Americká raketa Patriot minula iráckou raketu Scud (5..99), která následně zasáhla americká kasárna (8 mrtvých). Příčinou byla kumulace zaokrouhlovacích chyb při výpočtu času. Systém: odpalovací zařízení + radar + řídící stanice Vlastní hodiny měřili čas jako celé číslo reprezentující desítky sekund od zapnutí systému. Pak dělili 0. 9
REÁLNÝ PROBLÉM KUMULACE CHYB VÁLKA V PERSKÉM ZÁLIVU Výpočet: 4 bitová (fixed point) reprezentace čísla 0, 0, ~ 0.00000000000000000 chyba ~ 0.000000095 Po 00 hodinách provozu vracely hodiny již velká čísla chyba ~ 00*60*60*0*0.000000095 s ~ 0,34 s Za 0,34 s uletěla raketa Scud 570 metrů. 0
ZVYŠOVÁNÍ PŘESNOSTI ARITMETIKY NEMUSÍ ŘEŠIT PROBLÉM a 0, a, a 34 n an 3 a n rychle klesající posloupnost, a n n Nevýhody zvyšování přesnosti aritmetiky: zvyšuje paměťové náklady zpomaluje výpočet nemusí řešit problém
ZVYŠOVÁNÍ PŘESNOSTI ARITMETIKY NEMUSÍ ŘEŠIT PROBLÉM u( x, y) Výpočet pro 333,75y x 6 x (x y y 7767, y 33096 6 y 4 ) 5,5 y a různou přesnost: 8 x y Single,7603 Double,7603940053 Quadruple,7603940053788760 Přesně: -0,87396 Výsledek se zdánlivě zpřesňuje, ale je zcela chybný. Těžko identifikujeme chybu.
JAK SNÍŽIT CHYBY? VHODNÁ VÝPOČETNÍ METODA u( x, y) 333,75y 6 x (x y y 6 y 4 ) 5,5 y 8 x y odčítáme blízká velká čísla, dochází ke ztrátě platných cifer u( x, y) 333,75y 6 x (x y y 6 y 4 ) 5,5 y 8 x y OK 3
KONTROLA VÝSLEDKU A ODHADY CHYB a e, a ( n n a n ) klesající posloupnost, kde a n Výpočet a 5 pro různou decimální přesnost: 0 65990,4339-4457,988593 95,3744940 4 40,638707 5-6,7348 a a a fl fl fl n a ( a a n fl E ) n! E E a! E E chyba 4
REÁLNÝ PROBLÉM HLEDÁNÍ PŘIBLIŽNÉHO ŘEŠENÍ Základní suroviny: Vhodná výpočetní metoda Vhodná implementace na počítači stabilita výpočtu Zpětná kontrola spolehlivosti výsledku odhady chyb 5
DĚKUJI ZA POZORNOST 6