Metódy numerickej matematiky I Cvičenia Metódy numerickej matematiky I Odhady chýb pri numerickom výpočte Riešenie nelineárnych rovníc Systémy lineárnych rovníc
Matematický model, numerická metóda Veda: ľudská činnosť zameraná na pochopenie akýchkoľvek pozorovaných javov existujúce teórie verifikujeme experimentmi, treba ich naplánovať (napr. sú veľmi nákladné) v mnohých prípadoch experimenty nie je možné vykonať: podmienky (energie, teploty, tlaky, rozmery, ...) nie je možné zrealizovať v laboratóriu treba predpovedať výsledky experimentov bez realizácie samotného experimentu chceme hlbšie spoznať fyziku, ktorú nám teórie popisujú
Matematický model, numerická metóda Matematický model sú rovnice vystihujúce základné vlastnosti fyzikálneho systému prostredníctvom premenných popisujúcich systém cieľ je, aby sme riešením rovníc matematického modelu dostali predpoveď výsledkov experimentu rovnice môžu byť veľmi zložité, analyticky neriešiteľné, preto používame numerické metódy Numerická metóda nahradí zložitejšiu úlohu postupnosťou jednoduchších, ktoré umožňujú výsledok získať s určitou presnosťou napr. transformuje rovnice platné pre spojitý systém na systém algebraických rovníc diskrétneho modelu, ktoré sa riešia na počítači
Matematický model, numerická metóda Numerická matematika časť matematiky, ktorá vyvíja, analyzuje a aplikuje metódy výpočtov s číslami s konečnou presnosťou Numerická úloha - úloha numericky riešiť rovnice (väčšinou získané aproximáciou získanou zahrnutou v numerickej metóde) predpokladáme, že rovnice jednoznačne špecifikujú vzťah medzi vstupnými a výstupnými veličinami Algoritmus numerickej úlohy (po diskretizácii matematického modelu) špecifikácia konečnej postupnosti operácií, ktorou z vstupných údajov vypočítame výsledky ( toto nepatrí do samotného algoritmu numerickej metódy ale súvisí s ním: ) Pre- a post-processing dáta - vstupy a výstupy - môžeme z rôznych dôvodov pred alebo po výpočte upravovať preprocessing – pred aplikovaním numerického algoritmu postprocessing – po aplikovaní numerického algoritmu
pri numerickom riešení získame vždy približné hodnoty Zdroje a typy chýb pri numerickom riešení získame vždy približné hodnoty aby získané hodnoty mali výpovednú hodnotu, potrebujeme vedieť, ako presne sme ich vypočítali chyba výsledku – rozdiel medzi získanou a “skutočnou” hodotou vo fyzikálnom systéme (pričom skutočná hodnota (presné číslo) je hodnota existujúca len v našej abstrakcii, skutočná hodnota musí byť chápaná v zmysle: určená na základe nekonečného počtu meraní) hlavné príčiny vzniku chyby: (matematický model – konštrukcia zahŕňa zjednodušenia) numerická metóda – aproximovanie rovníc modelu dáta – neurčitosti (neistoty) ich hodnôt (- konečný počet meraní) reprezentácia čísel – použitie čísel s konečným počtom cifier aritmetické operácie (+, x, –, /)
model budeme pri aplikovaní numerickej metódy považovať za presný Zdroje a typy chýb model budeme pri aplikovaní numerickej metódy považovať za presný chybu vznikajúcu použitím aproximácie v numerickej metóde odhadneme (obyčajne sa dá urobiť analyticky) neistoty v dátach a chyby vznikajúce pri reprezentácii čísel budú vykonaním aritmetických operácií spolu interagovať – budeme sa snažiť odhadnúť odhadnúť ich vplyv na chybu výsledku model: dáta: p = 10.13 ± 0,01 kPa, n = 1.31 ± 0,01 mol, T = 273.8 ± 0,3 K numerická metóda: hľadanie koreňov kubickej rovnice numerická úloha: nájsť koreň: V (iteratívne) reprezentácia čísel: použitá presnosť čísel (zaokrúhľovanie) chyby ar. operácií: x, /, +, -, (odmocnina)
Príklad – chyba numerickej metódy Chyba numerickej metódy vzniká pri aproximovaní rovníc modelu, získame jednoduchšiu, numericky riešiteľnú úlohou Odhad tejto chyby je dôležitou súčasťou riešenia (analyticky) Príklad: Výpočet hodnoty funkcie sin 1 sčítaním konečného počtu členov Taylorovho rozvoja pre x = 1. Je známe, že sčítaním prvých n členov postupnosti sa dopustíme chyby veľkosti najviac (alternujúci rad – skúste si ukázať) pre x > 1 platí od istého n
Definície chýb za predpokladu, že poznáme presné riešenie (čo je veľmi zriedkavý prípad) absolútna chyba aproximácie relatívna chyba vo väčšine prípadov používame odhady chýb - neistoty v určení veličín odhad absolútnej chyby = každé nezáporné číslo (neistota určenia x) odhad relatínej chyby = každé nezáporné číslo (relatívna neistota určenia x)
dôležitý je odhad absolútnej ale aj relatívnej chyby Šírenie chýb aj pokiaľ nepoužijeme žiadnu numerickú metódu – zjednodušenie úlohy, samotný výpočet výsledku zo vzorca zo zadaných vstupných hodnôt s neistotami bude mať neistotu dôležitý je odhad absolútnej ale aj relatívnej chyby (relatívna neistota často indikuje zhoršenie presnosti aj keď absolútna neistota sa nezmení) odhad absolútnej chyby výsledku odhad relatívnej chyby výsledku relatívna chyba x
Pri odčítaní dvoch blízkych čísel dochádza k strate platných cifier Šírenie chýb pri výpočte Pri odčítaní dvoch blízkych čísel dochádza k strate platných cifier Príklad: potom pre rozdiely dostávame takže má jednu platnú cifru, zatiaľ čo aj majú štyri platné cifry.
Pri odčítaní dvoch blízkych čísel dochádza k strate platných cifier Šírenie chýb pri výpočte Pri odčítaní dvoch blízkych čísel dochádza k strate platných cifier 49.98949 50.01848 00.02899 49.99000 50.02000 00.03000 00.00051 00.00152 00.00101 Príklad: náš odhad absolútnej chyby: absolútna chyba sa nezhorší, relatívna podstatne platné cifry sa odčítali
iba odstraňovali, samozrejme, že je to menej presné, Zaokrúhľovacie chyby pri numerických výpočtoch vždy pracujeme s číslami zaokrúhlenými na určitý počet desatinných miest (číslicové počítače: nutnosť) - pri výpočte po každej aritmetickej operácii výsledok zaokrúhlený prvé verzie počítačov prebytočné desatinné miesta iba odstraňovali, samozrejme, že je to menej presné, snaha presadiť lepšiu manipuláciu s číslami viedla k zavedeniu IEEE štandardu 754 zaokrúhľovanie môže spôsobiť kumulovanie chýb ale aj ich eliminovanie výpočty sa snažíme robiť tak, aby chyby v reprezentácii čísel boli zanedbateľné voči neistotám vstupných dát
zisťovanie počtu platných (significant) cifier 12.1231 12.1200 00.0031 Zaokrúhľovanie kvantizácia: číslo nahradíme blízkym s menším počtom cifier zmysel: menšie nároky na pamäť zisťovanie počtu platných (significant) cifier 12.1231 12.1200 00.0031 nájdeme najmenšie číslo tvaru 5.10-k, ktoré je väčšie (≥) ako rozdiel 00.0031 < 00.0050 všetky cifry pred miestom, kde je 5 sú platné, preto máme 4 platné cifry, 2 platné desatinné miesta nezaokrúhlené číslo zaokrúhlené rozdiel
platné cifry desatinné miesta Zaokrúhľovanie 374 -27,6473 100,0020 380 -27,5980 099,9973 006 +00,0493 000,0047 1 3 4 - 2 platné cifry desatinné miesta 099,9973 -0,003728 1,841.10-6 100,0020 -0,004100 2,500.10-6 000,0047 +0,000372 0,659.10-6 5 1 2 3 0,9973 -10,0037 1,82.10-2 1,0084 -10,0042 2,52.10-2 0,0011 +00,0005 0,70.10-2 3 5 2 1
Šírenie chýb pri výpočte zápis 10.2324 znamená: 10.2324 ± 0.00005 (všetky cifry čísla považujeme za platné) Vypočítajte (ako najpresnejšie sa dá): 3.45 + 4.87 - 5.16 3.55 x 2.73 8.24 + 5.33 124.53 - 124.52 4.27 x 3.13 9.48 x 0.513 - 6.72
Šírenie chýb pri výpočte Vypočítajte (ako najpresnejšie sa dá): 3.45 + 4.87 - 5.16 = 3.16 ± 0.015 (3.145,3.175) 3 1S 3.55 x 2.73 = 9.6915 ± 0.0314 (9.6601, 9.7229) 9.7 2S 8.24 + 5.33 = 13.57 ± 0.01 (13.56, 13.58) 13.6 3S 124.53 - 124.52 = 0.01 ± 0.01 (0, 0.02) 0S 4.27 x 3.13 = 13.3651 ± 0.037 (13.3281, 13.4021) 13 2S 9.48 x 0.513 - 6.72 = -1.85676 ± 0.012305 (-1.869065, -1.844455) -2 1S (1S znamená 1 platná cifra)
Reprezentácia čísel v počítači základ číselnej sústavy presnosť rozsah exponentu Každé číslo má tvar kde Binárna sústava:
Reprezentácia čísel v počítači 1.6250 +0.3125 menší exponent bit shift 2 doprava 1.9375
Reprezentácia čísel v počítači nula UFL (UnderFlow Level) (najmenšie reprezentovateľné č.) OFL (OverFlow Level) (najväčšie reprez. č.) Ďalšie binárne reprezentácie v IEEE štandarde: INF pre výraz typu +∞ (napr. výsledok operácie 1/0 ) -INF pre výraz typu –∞ (napr. výsledok operácie – 1/0 ) NAN not a number (napr. výsledok operácie 0/0 ) UFLs subnormálne čísla vyskúšajte si bitviewer (http://www.fyzikazeme.sk/mainpage/stud_mat/menm/BITVIEW.EXE)
(dá sa zaručiť správnym zaokrúhľovaním) Štandard IEEE Počítačová aritmetika podľa štandardu IEEE: Výsledok aritmetickej operácie vykonanej v počítači je rovnaký ako keď operáciu vykonáme presne a potom získaný výsledok vložíme do počítača (dá sa zaručiť správnym zaokrúhľovaním) Ak je absolútna hodnota výsledku aritmetickej operácie väčšia ako OFL dochádza k tzv. pretečeniu (overflow, výsledok je INF). Ak je absolútna hodnota výsledku aritmetickej operácie menšia ako UFL (resp. UFLs) dochádza k tzv. podtečeniu (underflow, výsledok je -INF).
Dôsledky používania floating point aritmetiky: Štandard IEEE Dôsledky používania floating point aritmetiky: pripočítanie malého nenulového čísla nemusí mať žiadny účinok 5.18 x 102 + 4.37 x 10-1 = 5.18 x 102 + 0.00437 x 102 = 5.18437 x 102 =(zaokrúhlenie)= 5.18 x 102 strojové epsilon: najväčšie číslo ε, pre ktoré platí 1 + ε = 1 ukazuje aj, aký je počet platných cifier (v príklade je to 7) preto sú vo fortrane štandardne real(4) čísla vypisované na 6 desatinných miest
Dôsledky používania floating point aritmetiky: Štandard IEEE Dôsledky používania floating point aritmetiky: multiplikatívna inverzia nemusí existovať a x 1/a ≠ 1 : 3.000 x 0.333 = 0.999 (bez zaokrúhľovania) zaokrúhľovanie chybu v reprezentácii odstráni: podobná situácia môže nastať aj pri sčítaní:
Dôsledky používania floating point aritmetiky: Štandard IEEE Dôsledky používania floating point aritmetiky: asociatívnosť nemusí platiť (a + b) + c ≠ a + (b + c) a = 6.31 x 101, b = 4.24 x 100, c = 2.47 x 10-1 (6.31 x 101 + 0.424 x 101) + 2.47 x 10-1 = 6.73 x 101 + 2.47 x 10-1 = 6.73 x 101 + 0.0247 x 101 = 6.75 x 101 6.31 x 101 + (4.24 x 100 + 0.247 x 100) = 6.31 x 101 + 4.49 x 100 = 6.31 x 101 + 0.449 x 101 = 6.76 x 101 strata platných cifier
1. Korene kvadratickej rovnice Podmienenosť numerických úloh a numerická stabilita algoritmov Príklady: 1. Korene kvadratickej rovnice ( štandardný prístup priameho výpočtu zo vzorca môže produkovať pri odčítaní blízkych čísel chyby, lepšie: pomocou Vietových vzťahov )
( rekurencia od n = 0 nahor nedáva stabilný algoritmus, Podmienenosť numerických úloh a numerická stabilita algoritmov 2. Výpočet integrálu ( rekurencia od n = 0 nahor nedáva stabilný algoritmus, presnejší je výpočet od dostatočne veľkého n )
Niečo z funkcionálnej analýzy pevný bod zobrazenia , ak platí Na čo je to dobré? – Ak riešime rovnicu , môžeme ju prepísať na tvar dostaneme úlohu o hľadaní pevného bodu pre , riešenie je koreňom: (za predpokladu, že )
množina, na ktorej vieme merať vzdialenosti prvkov Niečo z funkcionálnej analýzy Metrický priestor množina, na ktorej vieme merať vzdialenosti prvkov vzdialenosť je nezáporná, ak je nulová, sme na tom istom mieste najkratšia cesta je priama, inak ideme „okľukou“ konvergencia: nech vyberieme akúkoľvek malú vzdialenosť e, ak sa pozrieme dosť ďaleko, všetky nasledujúce prvky sú už k limitnej hodnote bližšie ako e cauchyovskosť: nech vyberieme akúkoľvek malú vzdialenosť e, ak sa pozrieme na prvok dosť ďaleko, všetky nasledujúce prvky sú už k tomuto prvku bližšie ako e tieto dve definície hovoria to isté ak to, k čomu postupnosť konverguje patrí do našej množiny (úplný metrický priestor)
Niečo z funkcionálnej analýzy zobrazenie je kontraktívne: obrazy dvoch prvkov sú bližšie ako vzory Banachova veta o pevnom bode – hovorí, že existuje jediné ak je kontraktívne teda postupnosť sa k limite rovnomerne približuje
pevné body zobrazenia Hľadanie koreňov nelineárnych rovníc ako sa ukáže, úloha o pevných bodoch sa dá riešiť (a tým realizujeme hľadanie koreňa), ak skonštruujeme kontraktívne zobrazenie umožňuje nám to vytvoriť postupnosť (cauchyovskú) ktorá konverguje k pevnému bodu (= ku koreňu pôvodnej rovnice)
Hľadanie koreňov nelineárnych rovníc pretože g má byť kontraktívne: teda derivácia musí byť z intervalu to zaručuje, že je kontraktívne - nutne konverguje k niektorému pevnému bodu konvergovať však môže aj inde (ale nie je to zaručené)
Hľadanie koreňov nelineárnych rovníc metóda rád konverguje iné bisekcia (B) 1 vždy regula falsi robustná, rýchlejšia ako B jedn. iterácií podm. modifikovateľná sečníc (S) 1.618 Newtonova 2 treba deriváciu Steffensenova derivácia aproximovaná Aitken-Steffensenova viac krát vyhodnotiť g Brentova 1-4 rozhodovanie to zaručí kombinácia B, S a IQI (4. rád) IQI - inverse quadratic interpolation
Dosiahnuteľná presnosť ak derivácia má malé hodnoty v blízkosti koreňa a naša vertikálna rozlišovacia schopnosť je limitovaná, je aj lokalizácia koreňa limitovaná pri násobných koreňoch je derivácia nulová v x*, vyššie derivácie môžu byť taktiež: hovoria o vyšších krivostiach krivky – čím vyšší rád, tým je funkcia dlhšie v blízkosti osi x
Hľadanie koreňov v komplexnej rovine úlohu nájsť korene rovnice možno riešiť metódou jednoduchých iterácií: úplne analogicky ako v jednorozmernom prípade znázornenie oblasti a rýchlosti konvergencie vedie na Mandelbrotov fraktál a Juliove množiny
Hľadanie koreňov v komplexnej rovine komplexné číslo c možno ľubovoľne zvoliť (podľa toho sa mení tvar fraktálu) počiatočnú hodnotu z0 volíme postupne tak, že mapujeme vybranú časť komplexnej roviny t.j. podľa polohy pixelu na obrázku začneme iterovať a kontrolujeme výstupnú podmienku (či ešte nie sme v oblasti divergovania metódy – v tomto prípade to nastane, ak vzdialenosť zk od počiatku je väčšia ako 2) podľa toho, aký počet iterácií je potrebný na dosiahnutie výstupnej podmienky, dostane daný pixel farbu pre body patriace do množiny výstupná podmienka nebude splnená ani po nekonečnom počte iterácií
Hľadanie koreňov v komplexnej rovine komplexné číslo c je zvolené podľa pozície pixelu počiatočnú hodnotu z0 volíme 0+0 i, rovnako sa kontroluje výstupná podmienka - vzdialenosť zk od počiatku je väčšia ako 2 farbu pixelu určujeme rovnako, ako pri Juliovej množine vyskúšajte si applet fractal (http://www.fyzikazeme.sk/mainpage/stud_mat/menm/fraktal.htm)
Hľadanie koreňov v komplexnej rovine je možné použiť aj Newtonovu metódu zobrazená rýchlosť konvergencie je opäť fraktál (čím tmavšia farba, tým pomalšia) daná rovnica sú vlastne dve rovnice pre dve neznáme (Re a Im časť)
Riešenie systému nelineárnych rovníc Newtonova metóda (Taylorov rozvoj pre funkciu viac premenných) je jakobián transformácie: v každom kroku sa vypočíta veľkosť opravy (lineárny systém) a pripočíta sa k aktuálnemu vektoru riešenia
Riešenie systému nelineárnych rovníc Newtonova metóda zadefinujeme si počiatočný odhad – vektor (1, 3) V cykle riešime a opravujeme aktuálny vektor riešenia po troch iteráciách máme výsledok na 6 platných cifier program vo výpočtovom prostredí Mathematica
A je štvorcová nesingulárna matica Riešenie systému lineárnych rovníc lineárne systémy sa vyskytujú veľmi často, je vhodné mať pre ne špeciálne prispôsobené efektívne metódy riešenia priame metódy: eliminovanie, vyjadrenie (použiteľné pre relatívne malé systémy) iteratívne metódy: dostatočne presná aproximácia (presnosť určuje potrebný počet iterácií) A je štvorcová nesingulárna matica
– zaručuje to, že riešenie neznehodnotia zaokrúhľovacie chyby Gaussova eliminácia najdôležitejší predstaviteľ priamych metód je Gaussova eliminácia postup: 1. ekvivalentnými úpravami získať systém s hornou trojuholníkovou maticou (priamy chod) 2. postupne vypočítať neznáme (spätný chod) veľmi užitočné sa ukazuje vyberať hlavné prvky (prvky na diagonále) v každom kroku tak, aby boli čo najväčšie – dosiahnuť to možno výmenou riadkov pred každým eliminovaním (čiastočný výber hlavného prvku), – zaručuje to, že riešenie neznehodnotia zaokrúhľovacie chyby bez výberu hlavných prvkov je Gaussova eliminácia použiteľná len pre špeciálne matice: rýdzo diagonálne dominantná, pozitívne definitná
Gaussova eliminácia – LU dekompozícia v prípadoch, kedy je potrebné riešiť sústavu opakovane pre rôzne pravé strany: LU dekompozícia priamy chod: získanie hornej a dolnej trojuholníkovej matice a permutačnej matice spätný chod: najskôr vypočítame y, potom hodnoty neznámej x riešením sústav výpočet riešenia pre viaceré pravé strany je možné urobiť analogicky ako v prípade jednej – vektory budú teraz matice
Gaussova eliminácia – LU dekompozícia zadefinujeme si maticu permutačný vektor hľadanie pivota a zámena riadkov vlastné eliminovanie ukladanie prvkov dolnej trojuholníkovej matice Potom pomocou p vypočítame z (poprehadzujeme prvky b) a z vyriešených sústav získame vyjadrením x
Gaussova eliminácia – LU dekompozícia aplikácie: výpočet determinantu (súčin diagonálnych prvkov, znamienko) výpočet inverznej matice (b bude jednotková matica) špeciálne algoritmy pre riedke matice (pásová matica – tridiagonálna) vo všeobecnosti dostaneme použitím Gaussovej eliminácie malé rezíduum: nemusí to však znamenať, že riešenie je blízke presnému riešeniu vzťah: veľkosť rezídua – veľkosť chyby riešenia možno charakterizovať pomocou čísla podmienenosti matice: (A)
podmienenosť sústavy je ekvivalentná podmienenosti matice sústavy číslo podmienenosti: maximálne a minimálne relatívne predĺženie pri zobrazení vektora maticou A pokiaľ poznáme číslo podmienenosti, umožňuje nám to odhadnúť relatívnu chybu riešenia
takže malá hodnota čísla podmienenosti Podmienenosť sústavy takže malá hodnota čísla podmienenosti spôsobuje, že malé reziduum zabezpečí malú relatívnu chybu riešenia sústavu považujeme za dobre podmienenú, ak podmienka porušená – sústava zle podmienená