2.1 Aritmetika s pohyblivou řádovou čárkou

Podobné dokumenty
Aplikovaná numerická matematika

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

1 Mnohočleny a algebraické rovnice

Úvod do problematiky numerických metod. Numerické metody. Ústav matematiky. 6. února 2006

Základy matematické analýzy

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Exponent. Integer 4 bajty až Double Integer 8 bajtů až

Numerické řešení nelineárních rovnic

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Architektury počítačů

1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači

- funkce, které integrujete aproximujte jejich Taylorovými řadami a ty následně zintegrujte. V obou případech vyzkoušejte Taylorovy řady

PŘEDNÁŠKA 2 POSLOUPNOSTI

Čísla a číselné soustavy.

1. Několik základních pojmů ze středoškolské matematiky. Na začátku si připomeneme následující pojmy:

Zdroje chyb. Absolutní a relativní chyba. Absolutní chyba. Absolutní chyba přibližného čísla a se nazývá absolutní hodnota rozdílu přesného

3. Reálná čísla. většinou racionálních čísel. V analytických úvahách, které praktickým výpočtům

Co je obsahem numerických metod?

Číselné posloupnosti

Numerická stabilita algoritmů

Interpolace, ortogonální polynomy, Gaussova kvadratura

Úvod do programování 7. hodina

Posloupnosti a jejich limity

Zdrojem většiny příkladů je sbírka úloh 1. cvičení ( ) 2. cvičení ( )

Počítání s neúplnými čísly 1

Posloupnosti a jejich konvergence POSLOUPNOSTI

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

Matematická analýza ve Vesmíru. Jiří Bouchala

5.3. Implicitní funkce a její derivace

1 Lineární prostory a podprostory

Matematika III. Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská. Ústav matematiky

)(x 2 + 3x + 4),

Posloupnosti a jejich konvergence

v aritmetické jednotce počíta

Digitální učební materiál

Je založen na pojmu derivace funkce a její užití. Z předchozího studia je třeba si zopakovat a orientovat se v pojmech: funkce, D(f), g 2 : y =

Přednáška 3: Limita a spojitost

1 Mnohočleny a algebraické rovnice

Semestrální písemka BMA3 - termín varianta A13 vzorové řešení

ALGEBRA. Téma 5: Vektorové prostory

Teorie. Hinty. kunck6am

pro každé i. Proto je takových čísel m právě N ai 1 +. k k p

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

Matematická analýza pro informatiky I. Limita funkce

Teorie. Hinty. kunck6am

f(c) = 0. cn pro f(c n ) > 0 b n pro f(c n ) < 0

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

C2115 Praktický úvod do superpočítání

Posloupnosti a řady. 28. listopadu 2015

pouze u některých typů rovnic a v tomto textu se jím nebudeme až na

a a

Doporučené příklady k Teorii množin, LS 2018/2019

Hledání kořenů rovnic jedné reálné proměnné metoda půlení intervalů Michal Čihák 23. října 2012

Úlohy krajského kola kategorie A

Matematická analýza III.

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Numerické řešení nelineárních rovnic

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

Pomocný text. Polynomy

Příklad. Řešte v : takže rovnice v zadání má v tomto případě jedno řešení. Pro má rovnice tvar

Dosud jsme se zabývali pouze soustavami lineárních rovnic s reálnými koeficienty.

Metody výpočtu limit funkcí a posloupností

7. Aplikace derivace

Úvod do teorie měření. Eva Hejnová

Určete (v závislosti na parametru), zda daný integrál konverguje, respektive zda konverguje. dx = t 1/α 1 dt. sin x α dx =

Struktura a architektura počítačů (BI-SAP) 6

To je samozřejmě základní pojem konvergence, ale v mnoha případech je příliš obecný a nestačí na dokazování některých užitečných tvrzení.

Numerická matematika 1

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

Jednoduché cykly

Podíl dvou čísel nazýváme číslo racionální, která vyjadřujeme ve tvaru zlomku.

2. přednáška 8. října 2007

Operace s maticemi. 19. února 2018

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Jan Kotůlek. verze 3 ze dne 25. února 2011

Praha & EU: investujeme do vaší budoucnosti. Daniel Turzík, Miroslava Dubcová,

Matematická analýza 1

Funkce jedn e re aln e promˇ enn e Derivace Pˇredn aˇska ˇr ıjna 2015

Limita posloupnosti a funkce

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech


19 Hilbertovy prostory

Datové typy a jejich reprezentace v počítači.

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Michal Fusek. 10. přednáška z AMA1. Ústav matematiky FEKT VUT, Michal Fusek 1 / 62

ALGEBRA. 1. Pomocí Eukleidova algoritmu najděte největší společný dělitel čísel a a b. a) a = 204, b = 54, b) a = , b =

Limita funkce. FIT ČVUT v Praze. (FIT) Limita funkce 3.týden 1 / 39

Limita a spojitost LDF MENDELU

Aplikovaná numerická matematika - ANM

Limita a spojitost funkce

Limita a spojitost funkce a zobrazení jedné reálné proměnné

Zimní semestr akademického roku 2014/ prosince 2014

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Úvod do teorie měření. Eva Hejnová

Úvod do teorie měření. Eva Hejnová

Transkript:

Kapitola 2 Aritmetika počítače V této kapitole se budeme zabývat vlivem zaokrouhlovacích chyb, které vznikají při numerických výpočtech prováděných na počítači v aritmetice s konečnou přesností. Bude nás zajímat, zda je algoritmus stabilní vůči zaokrouhlovacím chybám, tj. zda je výsledek výpočtu dostatečně přesná aproximace řešení. Nejprve popíšeme vznik zaokrouhlovacích chyb a jejich šíření při provádění elementárních aritmetických operací. {chp:2} 2. Aritmetika s pohyblivou řádovou čárkou Číslo je v počítači zobrazeno jako posloupnost bitů (každý s číselným obsahem 0 nebo ) konečné délky. Tato délka je pevně stanovena (např. 6, 32, 64 či 28 bitů). Počítač většinou umožňuje několik typů zobrazení čísel, jimž odpovídá několik velikostí paměťových míst. Nás především zajímá, jak jsou v počítači zobrazena reálná čísla. Je zřejmé, že při zvoleném typu zobrazení a předepsané délce paměťového místa je možno v počítači zobrazit pouze konečný počet čísel. Proto často hovoříme o konečné aritmetice či aritmetice s končenou přesností. Množina reálných čísel R je v počítači reprezentována svojí konečnou podmnožinou F, F Q R,kterou nazýváme soustavou čísel s pohyblivou řádovou čárkou (floating point number system), kde Q je množinou racionálních čísel. Prvky F lze zapsat ve tvaru y = ±m β e t, (2.) {cvut_2.} kde celé číslo β (obvykle β = 2) je nazýváno základem, celé číslo t určuje přesnost, celé číslo m pohybující se v rozsahu 0 m<β t je nazýváno mantisou a celočíselný parametr e exponentem. Množina F je plně určena parametry β, t a horní, resp. dolní mezí celočíselného exponentu e min e e max. Vztah 2. můžeme přepsat do názornějšího tvaru ( y = ±β e d β + d 2 β 2 +...+ d ) t β t = ±β e (0.d d 2...d t ) β, (2.2) {cvut_2.2} kde každá číslice d i leží v intervalu 0 d i β a(0.d d 2...d t ) β představuje číslo zapsané v číselné soustavě se základem β. Je výhodné uvažovat m β t pro y 0, pak zřejmě d 0 (nenulová první číslice mantisy). Systém dodržující tuto konvenci nazýváme normalizovaný. I když se v minulosti používaly různé základy β (do dnešní doby jsou rozšířeny základy β =2aβ = 6) a stále se můžeme setkat s rozličnými hodnotami t, e min a e max, vývoj spěje k všeobecnému uznání tzv. IEEE standardní aritmetiky. Stučně ji vyložíme a další vlastnosti aritmetiky s pohyblivou řádovou čárkou budeme popisovat na tomto příkladu. 5

6 KAPITOLA 2. ARITMETIKA POČÍTAČE IEEE aritmetika používá β = 2 a rozlišuje dva základní formáty čísel v pohyblivé řádové čárce: čísla s jednoduchou (single)advojitou přesností (double). V prvém případě je k uložení čísla použito 32, ve druhém 64 bitů. Uložení jednotlivých parametrů je patrné ze schematu na obrázku 2.. V případě jednoduché přsnosti je na exponent vyhrazeno 8 bitů, do kterých je možno uložit celé číslo v rozmezí 0 až 255. Řetězce (0000 0000) 2 = 0 či ( ) 2 = 255 mají však speciální význam, který bude popsán níže. Zbylá čísla až 254 určují hodnotu veličiny e + 26, tj. hodnota exponentu e se pohybuje v rozmezí e min = 25 e 28 = e max. Na mantisu je vyhrazeno zbývajících 23 bitů, přičemž se standardně využívá normalizace, cifra d = se přitom nezapisuje. S jednoduchou přesností uložené nenulové číslo v pohyblivé řádové čárce můžeme tedy zapsat ve tvaru {cvut_2.3} y = ±2 (g...g8)2 26 (0.d 2 d 3...d 24 ) 2, (2.3) z čehož vyplývá 2 26 y ( 2 24 ) 2 28 0 38. Jednoduchá přesnost ± exponent (g...g 8) mantisa (d 2...d 24) 0 8 3 Dvojitá přesnost ± exponent (g...g ) mantisa (d 2...d 53) 0 63 {pic:sin_dou} Obrázek 2.: Uložení parametrů IEEE standardni aritmetiky pro jednoduchou a dvojitou přesnost. Čísla v pohyblivé řádové čárce nejsou vzhledem k R rovnoměrně rozložena (viz cvičení 2..). Mají-li dvě čísla y, y 2 ve vyjádření (2.3) shodný exponent e a jedná-li se o dvě po sobě jdoucí čísla množiny F, y 2 >y,pak y 2 y =2 e 2 24. Rozložení čísel množiny F je charakterizováno pomocí strojové přesnosti ɛ M, což je vzdálenost čísla.0 od nejbližšího vyššího čísla v pohyblivé řádové čárce. Zřejmě platí ɛ M =2 2 24 =2 23. Snadno lze ukázat, že vzdálenost libovolného normalizovaného čísla x F od svých sousedů je nejméně ɛ M x /2 a nejvýše ɛ M x (cvičení 2..2). Pokud by IEEE aritmetika pracovala pouze s množinou F, která obsahuje jen normalizovaná čísla popsaná (2.3), došlo by k nepříjemnému jevu. Zatímco čísla blízká 2 26 zprava jsou aproximována s chybou odpovídající počtu bitů mantisy, nejbližší číslo menší než 2 26 definované (2.3) je 2 26, vzniká tak výrazná mezera v okolí nuly a zřejmě 0 F. K odstranění tohoto nedostatku množiny F

2.. ARITMETIKA S POHYBLIVOU ŘÁDOVOU ČÁRKOU 7 přidává norma IEEE navíc množinu tzv. subnormálních čísel. To jsou nenulová nenormalizovaná čísla s exponentem (0000 0000) 2 = 0, definovaná vztahem y = ±m β emin t, 0 <m<β t, neboli y = ±m 2 49, 0 <m<2 23. Je-li řetězec mantisy i exponentu nulový (tj. znaménkový bit je 0 nebo, všechny ostatní bity jsou nulové) dostaneme reprezentaci čísel ±0 (+0a 0 mají odlišnou reprezentaci, samozřejmě je zajištěno, že platí +0 = 0). Je-li řetězec exponentu roven ( ) 2 = 255 a mantisa je nulová, pak zobrazené číslo je definováno jako ±Inf (± ). Je-li řetězec exponentu roven ( ) 2 = 255 a řetězec mantisy je nenulový (jeho hodnota je libovolná nenulová), pak je obsah interpretován jako NaN (Not a Number). Shrnutí je uvedeno v tabulce 2.. řetězec exponentu numerická hodnota uloženého čísla (0000 0000) 2 =(0) 0 ±(0.0d 2 d 3...d 24 ) 2 2 25 (0000 000) 2 =() 0 ±(0.d 2 d 3...d 24 ) 2 2 25.. (0 0) 2 = (26) 0 ±(0.d 2 d 3...d 24 ) 2 2 0 (0 ) 2 = (27) 0 ±(0.d 2 d 3...d 24 ) 2 2.. ( 0) 2 = (254) 0 ±(0.d 2 d 3...d 24 ) 2 2 28 ( ) 2 = (255) 0 ± pokud d 2 = d 3 =...= d 24 =0;jinakNaN Tabulka 2.: IEEE jednoduchá přesnost. {tab:single} Zbývají dvě otázky. Jaká je přesnost zobrazení reálného čísla v množině F a jaká je přesnost provádění elementárních aritmetických operací +,,, /. Přesnost aproximace je charakterizována zaokrouhlovací jednotkou u =(/2)β t = (/2)2 23 =2 24. Důkaz následující věty (která je formulována obecně) ponecháme na cvičení. Věta 2... Nechť x Rleží mezi nejmenším a největším číslem množiny F. Označíme-li fl : R F zobrazení z R do F, pak platí fl(x) = x( + δ), δ <u, (2.4) {cvut_2.4} kde u je zaokrouhlovací jednotka. Aritmetické operace +,,, / se v IEEE aritmetice v obvyklých případech provádějí tak, jako kdyby byly nejprve provedeny přesně (s nekonečnou přesností) a pak je výsledek zaokrouhlen na nejbližší číslo z F (v případě nerozhodnosti se zaokrouhluje dolů). Jsou-li x, y F, pak platí {veta_cvut_2.} fl(x ± y) =(x ± y)( + δ ), δ u, fl(x y) =(x y)( + δ 2 ), δ 2 u, fl(x/y) =(x/y)( + δ 3 ), δ 3 u. (2.5) {cvut_2.5} Analogický vztah se obvykle přepokládá i pro operaci odmocnění. Nastane-li výjimečný případ, je výsledek generován podle tabulky 2.2. Přetečením rozumíme případ kdy je přesný výsledek operace v absolutní hodnotě větší než největší číslo z F. Podtečením rozumíme případ, kdy je přesný výsledek operace v absolutní hodnotě menší, než nejmenší kladné normalizované číslo.

8 KAPITOLA 2. ARITMETIKA POČÍTAČE typ výjimky příklad výsledek nedefinované operace 0/0, 0, NaN přetečení ± dělení nenulového čísla nulou ± podtečení subnormální čísla Tabulka 2.2: Výjimky v IEEE aritmetice. {tab:exceptns} Vlastnosti aritmetiky s pohyblivou řádovou čárkou jsme vyložili na příkladu IEEE aritmetiky s jednoduchou přesností. Je zřejmé, jak postupovat při odvození charakteristik aritmetiky založené na jiné hodnotě parametrů. Pro doplnění uvádíme v tabulce 2.3 porovnání IEEE aritmetiky s jednoduchou a dvojitou přesností. přesnost počet bitů zaokrouhlovací rozsah celkem mantisa exp. jednotka u jednoduchá 32 23(+) 8 2 24 5.96 0 8 0 ±38 dvojitá 64 52(+) 2 53. 0 6 0 ±308 Tabulka 2.3: IEEE aritmetika s pohyblivou řádovou čárkou, jednoduchá a dvojitá přesnost. {tab:sin_dou} {trivaritmetic} {trivaritmetic2} {trivaritmetic3} Cvičení konečná aritmetika Doporučená literatura: [], [6], [4]. Příklad 2... Vypočtěte a graficky znázorněte na číselné ose prvky množiny čísel s pohyblivou řádovou čárkou pro β =2, t =3, e min = a e max =3. Příklad 2..2. Nechť je množina F Rkonečnou množinou reprezentující množinu reálných čísel v počítači, množinou normalizovaných čísel. Ukažte, že vzdálenost Δx libovolného normalizovaného čísla x z množiny F od jeho nejbližšího souseda je β ɛ M x = ɛ M 2 x Δx ɛ M x. Příklad 2..3. Dokažte větu 2... Nechť x Rleží mezi nejmenším a největším číslem množiny F. Označíme-lifl : R F zobrazení z R do F, pak platí fl(x) x( + δ), δ <u {trivaritmetic4} {vyrokyvieee} kde u = ɛ M /2 se nazývá zaokrouhlovací jednotka. Příklad 2..4. Odvoďte parametry IEEE aritmetiky s pohyblivou řádovou čárkou v dvojité přesnosti (64 je celkový počet bitů, z toho 52(+) bitů tvoří matnisu, bitů tvoří exponent, viz tabulku 2.3). Příklad 2..5. Který z následujících výroků je pravdivý v IEEE aritmetice, předpokládáme-li, že a, b a c jsou normalizovaná čísla v pohyblivé řádové čárce a že nenastane žádná výjimečná situace (například přetečení) (a) fl(a op b) =fl(b op a), kdeop = +,

2.2. ZAOKROUHLOVACÍ CHYBY V ARITMETICE S KONEČNOU PŘESNOSTÍ9 (b) fl(b a) = fl(a b) (c) fl(a + a) =fl(2 a) (d) fl(0.5 a) =fl(a/2) (e) fl((a + b)+c) =fl(a +(b + c)) (f) je-li a b, pak a fl((a + b)/2) b Případnou nepravdivost výroků zkuste ověřit nalezením příkladu. Výhodně k tomu můžete využít jednoduché aritmetiky z příkladu 2... 2.2 Zaokrouhlovací chyby v aritmetice s konečnou přesností Při povrchním pohledu na vztah (2.4) a (2.5) by se mohlo zdát, že zaokrouhlovací chyby jsou velmi malé a jejich vliv při provádění numerických výpočtů nebude velký (snad s výjimkou velkého počtu operací s nějakými extrémními čísly). Ukážeme na několika příkladech, že tento ukvapený závěr je zcela mylný. Prvním příkladem je tzv. krácení platných cifer (cancellation), které nastává, odečítáme-li dvě téměř shodná čísla. Příklad. Uvažujme funkci f(x) = ( cos(x))/x 2 (převzato z []). Pro x =.2 0 5 je hodnota cos(x) zaokrouhlená na 0 desetinných míst rovna c = 0.9999999999, vyčíslením hodnoty f(.2 0 5 ) dostaneme ( c)/x 2 =0 0 /(.44 0 0 )=0.6944..., což je úplně špatně, neboť 0 f(x) 0.5 pro x 0. Vidíme, že přestože hodnota cos(x) byla aproximována s přesností na 0 desetinných míst, výsledek výpočtu f(x) neaproximuje správnou hodnotu ani s přesností jednoho desetinného místa! Je důležité si uvědomit, že problém není způsoben vlastním odečtením ( c), to bylo provedeno přesně. Problém spočívá v tom, že sama hodnota c byla určena nepřesně a výsledek přesného výpočtu ( c) je díky krácení platných cifer stejného řádu, jako je chyba obsažená v c. Tím se významnost nepatrné chyby posunula o 0 řádů a katastrofálně ovlivnila celý další výpočet, byť byl proveden sebepřesněji (často se proto hovoří v této souvislosti o tzv. katastrofickém krácení). Pokusíme se krácení popsat pomocí vztahů (2.4) a (2.5). Nechť ˆx aŷ jsou dvě čísla zažížená jistou chybou, tj ˆx = x( + δx), ŷ = y( + δy). Předpokládejme, že chyby δx, resp.δy jsou malé vzhledem k velikosti x, resp.y, může jít o chyby způsobené předcházejícím výpočtem nebo třeba o zaokrouhlovací chyby při uložení dat do počítače (pak ˆx = fl(x), ŷ = fl(x) a δx u, δy u). Proveďme přesný součet čísel ˆx aŷ (čísla mohou mít opačná znaménka, příklad zahrnuje i odečítání) ŝ =ˆx +ŷ = x( + δx)+y( + δy) = = x + y + xδx+ yδy= =(x + y)( + δs),

20 KAPITOLA 2. ARITMETIKA POČÍTAČE kde δs = x x + y δx + y x + y δy. Je zřejmé, že i když hodnoty δx a δy jsou malé, není zaručeno, že hodnota δs bude rovněž malá. Pokud bude x (x + y) azároveňδx 0,respektivey (x + y) a zároveň δy 0, bude chyba δs relativně velká, δs δx, respektiveδs δy. Znovu vidíme, že krácení není nebezpečné samo o sobě (dojde-li ke krácení při odečtení dvou přesných hodnot, k žádné ztrátě přesnosti nedojde), ale je nebezpečné tím, že zesiluje vliv předchozích chyb obsažených v datech. Druhý příklad ukazuje, že i bez krácení popsaného výše, může dojít při provedení jednoduchého výpočtu k velké chybě. Příklad. Předpokládejme, že chceme nalézt dobrou numerickou aproximaci hodnoty e s použitím vztahu e = lim n ( + /n) n, kde limitu nahradíme prostým výpočtem hodnoty f(n) =(+/n) n pro dostatečně velké n. Pron =0dostaneme v případě výpočtu v IEEE aritmetice s jednoduchou přesností lepší aproximaci čísla e než pro n =0 7! Příčina je následující. Sčítáme-li ( + /n) pro n, obsahuje výsledek součtu stále méně a méně informace o čísle n (neboť /n). I když provedeme následné umocnění přesně, výsledek je zatížen velkou chybou, viz cvičení, příklad 2.2.2. Posledním příkladem je sčítání řad s kladnými členy. Příklad. Z teorie Fourierových řad je známo, že n 2 = π 2 /6. Předpokládejme, že tuto identitu neznáme a chceme vypočítat součet řady numericky sčítáním (...((( + 2 2 )+3 2 )+4 2 )+...+ m 2 ), kde m určíme jako nejmenší celé číslo, jehož zahrnutí do výpočtu již nezmění vypočtený součet. Výsledek výpočtu bude překvapivě nepřesný (viz cvičení, příklad 2.2.3). Příčina je opět zřejmá: řada konverguje velmi pomalu a náš výpočet je prováděn tak, že hodnota přičítaných prvků se stále zmenšuje a hodnota částečných součtů se stále zvětšuje. Pro jisté k je vypočtený částečný součet k n 2 takový, že přičtení (k +) 2 nezmění jeho hodnotu. Zbytek n=k+ n 2 je však stále příliš velký. Jak překonat popstanou obtíž? První nápad může být změnit pořadí sčítání (sčítat od nejmenšího prvku k největšímu). Problém ovšem je, že nevíme, kterým prvkem začít. Navíc, uspořádání sčítanců je obecně drahá operace a nelze ji v praktických výpočtech použít. Univerzálním řešením je použití speciálních technik zvyšujících přesnost (samozřejmě na úkor rychlosti). Zvídavého čtenáře odkazujeme na [, Chapter 4]. Jiným řešením může být použití vhodné identity a řady konvergující podstatně rychleji, viz cvičení, příklad 2.2.6. V každém případě je vhodné zamyslet se nad konvergencí sčítané řady. Odstrašujícím případem budiž všem eventuální pokus nalézt výše popsaným postupem součet řady n.

2.2. ZAOKROUHLOVACÍ CHYBY V ARITMETICE S KONEČNOU PŘESNOSTÍ2 Cvičení rušení platných číslic, součty řad Doporučená literatura: [3], [4]. Příklad 2.2.. Ukažte, jak je potřeba přepsat uvedené výrazy, aby byl omezen vliv krácení platných cifer: (a) pro x 0 výraz x +, (b) pro x y výraz sin(x) sin(y), (c) pro x y výraz x 2 y 2, (d) pro x 0 výraz ( cos(x))/sin(x). Příklad 2.2.2. Vypočtěte hodnotu výrazu ( + /n) n pro n =0, 0 2,...,0 7 a srovnejte výsledky s číslem e. Příklad 2.2.3. Vypočtěte aproximaci součtu nekonečné řady /n2 porovnejte s hodnotou π 2 /6. Určete chybu a udejte, kolik členů řady jste sčítali. Příklad 2.2.4. Vypočtěte aproximaci součtu nekonečné řady /(n2 +). Součet řady aproximujte k-tým částečným součtem. Výpočet zastavte při splnění podmínky ( k fl ) ( k+ n 2 = fl + Určete počet členů k řady, které jste sčítali. ) n 2. + Příklad 2.2.5. Vypočtěte aproximaci součtu nekonečné řady /(n2 +) s přesností větší než 0 6. Při určení počtu členů řady k použijte nerovnost {priklad_e} {priklad_pi26} {sum_naiv} {sum_presnost} n=k+ n 2 + dx k x 2 + =arctan( ) arctan(k) = π 2 arctan(k) < 0 6. Sčítejte od nejmenších členů k největším (tedy od k do ). Proč je to výhodnější? Příklad 2.2.6. Vypočtěte aproximaci součtu nekonečné řady /(n2 +) s přesností větší než 0 6. Nesčítejte však původní řadu, ale využijte následujících identit n 2 = π2 6, n 4 = π4 90, Opět sčítejte od nejmenších členů k největším. n 6 = π6 945. {sum_identity} Návod k řešení. Zřejmě platí následující vztahy: x x x 2 x 3 n 2 +, π2 6 x = π2 90 x = π 2 945 x 2 = n 2 n 2 + = n 4 n 4 + n 2 = n 2 (n 2 +), n 4 (n 2 +), n 6 n 6 + n 4 = n 6 (n 2 +).

22 KAPITOLA 2. ARITMETIKA POČÍTAČE Výpočet proveďte nejpve s využitím pouze první identity, poté s využitím prvních dvou identit a nakonec s využitím všech tří identit. Výsledek určete nejprve naivním způsobem (jako v příkladu 2.2.4), dále sčítejte každou řadu od nejmenších členů k největším se zaručenou přesností (viz příklad 2.2.5). Při určení počtu sčítanců k v jednotlivých případech použijte odhady pomocí vhodných integrálů. Platí následující vztahy dx x 2 + =arctan(x), dx x n (x 2 +) = (n )x n Dále je vhodné využít nerovnosti b dx x n 2 (x 2 +), n 2. dx b a x n (x 2 +) dx a x n+2. Porovnejte výsledky z příkladů 2.2.4, 2.2.5, 2.2.6 (jednotlivé součty a počty sčítanců, ev. dobu, kterou počítač k vyčíslení součtů potřeboval počítal). Příklad 2.2.7. Zkuste vypočítat aproximaci součtu řady /(n +)2, nebo nějaké jiné vámi zvolené nekonečné řady. Aproximaci součtu vypočtěte opět několika různými způsoby, tak jako u předchozích příkladů. Příklad 2.2.8. Zkuste naivním způsobem vypočítat aproximaci součtu nekonečné řady /n. Jaká je asi přesnost takto získaného výsledku? Návod k řešení. Pro řadu /n je podmínka fl(s k)=fl(s k+ ) splněna až pro velmi vysoké k. Zamyslete se nad konvergencí této řady a zkuste raději naivním způsobem aproximovat součet jiné nekonečné řady s obdobnými vlastnostmi, například /(n 0.9999999995). Cvičení příklady v MATLABu Doporučená literatura: [9], [4]. Příklad 2.2.9. Máme následující program v MATLABu >> a = ; >> b = ; >> while a+b ~= a; b=b/2; end; Promněnná b je v cyklu půlená, dokud je součet a + b různý od a. Budeme-li výpočet provádět na množině reálných čísel, program skončí v nekonečném cyklu. Náš program však skončí po konečném počtu kroků. Proveďtě výpočet. Určete hodnotu b, při které program skončí. O jakou hodnotu se jedná? Návod k řešení. Jedná se o zaokrouhlovací jednotku u = ɛ M /2=.02 0 6. Relativní strojovou přesnost ɛ M v MATLABu zjistíme příkazem eps.

2.2. ZAOKROUHLOVACÍ CHYBY V ARITMETICE S KONEČNOU PŘESNOSTÍ23 Příklad 2.2.0. Nyní budeme krátkým výpočtem dokumentovat neplatnost zákona asociativity sčítání v aritmetice čísel s pohyblivou řádovou čárkou. Máme následující tři čísla >> a =.0e+308; >> b =.e+308; >> c = -.00e+308; Součet čísel a + b + c spočítáme v MATLABu dvěma různýmy způsoby. Dostaneme následující výsledky. >> a+(b+c) >> (a+b)+c ans =.0990e+308 ans = Inf Vysvětlete. Jaký je rozdíl mezi tímto příkladem a příkladem 2..5 (e)? Návod k řešení. V druhém výpočtu došlo k výjimce přetečení. Příklad 2.2.. Mějme výraz ( + x), x hodnota tohoto výrazu je zřejmě rovna pro libovolné x 0. Pro pevně zvolené x jsme výraz vyčíslili v MATLABu. Následuje výpis programu >> x =.0e-5; >> ((+x)-)/x ans =.02 Kde nastala chyba? Návod k řešení. Rušení platných číslic cancelation. Cvičení polynomy Doporučená literatura: [], [4], [3]. Příklad 2.2.2. Metodou bisekce nalezněte kořen(y) polynomu {polynom} p(x) =x 9 8x 8 +44x 7 672x 6 +206x 5 4032x 4 +5376x 3 4608x 2 +2304x 52 ležící v intervalu [.8, 2.2]. Jeden z kořenů polynomu by měl ležet blízko hodnoty 2. Zkuste ověřit vámi získaný výsledek aplikováním metody jiné intevaly blízké intervalu původnímu, např. [.9, 2.2], [.7, 2.2]. Vykreslete graf tohoto polynomu v okolí nalezených kořenů. K vyčíslení hodnoty polynomu d p(x) = a i x i použijte Hornerova pravidla. V MATLABu určíme hodnotu polynomu p(x) v bodu x programem i=0

24 KAPITOLA 2. ARITMETIKA POČÍTAČE >> coeff = [ -8 44-672 206-4032 5376-4608 2304-52]; >> n = 0; >> p = 0; >> for i = :n, p = x*p + coeff(i); end MATLAB obsahuje funkci polyval(), která implementuje Hornerovo pravidlo, odpovídající program pak vypadá >> coeff = [ -8 44-672 206-4032 5376-4608 2304-52]; >> p = polyval(a,x); {polynom_roots} Konfrontujte graf s výsledky získanými metodou bisekce, vysvětlete. Příklad 2.2.3. Pro výpočet kořenů polynomu je v MATLABu přímo implementovaná funkce roots(). Zkuste kořeny polynomu z předchozího příkladu nalézt pomocí této funkce >> coeff = [ -8 44-672 206-4032 5376-4608 2304-52]; >> r = roots(coeff); {priklad_raclomfce} Porovnejte výsledky s výsledky, které jste získali metodou bisekce v předchozím příkladu. Pokuste se vysvětlit. Příklad 2.2.4. Zopakujte postupy z předchozích dvou příkladů pro jednodušší polynom q(x) =x 7 7x 6 +2x 5 35x 4 +35x 3 2x 2 +7x. Při hledání kořenů pomocí bisekce předpokládejte, že jeden z kořenů polynomu leží blízko hodnoty. Sami navrhněte polynom r(x), u něhož znáte alespoň přibližně hodnotu minimálně jednoho z jeho kořenů, a aplikujte výše zmíněné postupy. Srovnejte chování všech polynomů p(x), q(x) a r(x). Čím jsou polynomy p(x) a q(x), popřípadě i r(x), charakteristické? Příklad 2.2.5. Vykreslete graf racionální lomené funkce ρ(x) = 4x4 59x 3 + 324x 2 75x + 622 x 4 4x 3 +72x 2 5x + 2. Hodnoty polynomů čitatele a jmenovatele počítejte pomocí Hornerova pravidla. Graf funkce vykreslete pro hodnoty x = a +(k ) 2 26,kdea =.606 a k =,...,36 (příklad převzat z []). Spočtěte derivaci π(x) = dρ dx funkce ρ(x) a její numerickou aproximaci (z hodnot funkce ρ(x)). Vykreslete grafy a porovnejte. Výpočty provádějte vždy v jednoduché a dvojité přesnosti. Zhodnoťte výsledky. Návod k řešení. Pozor, některé verze MATLABu neumí operovat s čísly v jednoduché přesností. Při vyčíslování funkce v jednoduché přesnosti je tedy potřeba provádět konverzi příslušných mezivýsledků pomocí funkcí single() a double().