Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

PA081 Programování numerických výpočtů Mgr. Radka Svobodová Vařeková.

Podobné prezentace


Prezentace na téma: "PA081 Programování numerických výpočtů Mgr. Radka Svobodová Vařeková."— Transkript prezentace:

1 PA081 Programování numerických výpočtů Mgr. Radka Svobodová Vařeková

2 Cíl přednášky Převést matematickou formulaci numerického výpočtu na program, který tento výpočet provede s dostatečnou přesností a co nejefektivněji.

3 Implementace numerických výpočtů Převést problém do formy, pro níž: a)Existuje standardní algoritmus (např. f(x) = 0) b)Tento algoritmus je numericky stabilní (pro všechny vstupy poskytuje výsledky, vyhovující zadání problému). c)Daný algoritmus lze implementovat tak, že vzniklý program bude: –Efektivní –Srozumitelný –Rozšiřitelný

4 Implementace numerických výpočtů – numerická stabilita I matematicky korektní algoritmus může po implementaci poskytovat nepřesné případně chybné výsledky. Důvod: Konečná reprezentace reálných čísel v počítači.

5 Implementace numerických výpočtů – efektivita Každá úloha lze řešit více metodami. Dané metody se liší: –Časovou složitostí –Prostorovou složitostí –Vhodností pro určitou platformu Je nutno vzít v úvahu všechny tyto faktory.

6 Implementace numerických výpočtů – programovací jazyky FORTRAN C, C++ Java Python …

7 Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy –Řešení nelineárních rovnic –Numerická integrace Lineární úlohy –Řešení soustav lineárních rovnic –Metoda nejmenších čtverců pro lineární úlohy –Sumace obecné a s korekcí Numerické výpočty v C a C++ –Optimalizace výrazů, optimalizace při překladu

8 Sylabus - nelineární úlohy Nelineární rovnice tvaru: f(x) = g(x) Konkrétní příklady: kvadratické rovnice (1 – cos x)/x pro malé x sin x = ax + b …

9 Sylabus - nelineární úlohy II Numerické integrace: –Obecně o metodách: Lichoběžníkové pravidlo Rombergova integrac Konkrétní příklady: –Odstranění singularity u....

10 Sylabus - lineární úlohy Soustavy lineárních rovnic tvaru: Ax = b Konkrétní metody: x = A -1. b Gaussova eliminační metoda a její varianty

11 Sylabus - lineární úlohy II Metoda nejmenších čtverců pro lineární úlohy: Máme množinu bodů: (parametry experimentu, naměřená hodnota) Těmito body proložíme lineární trend (přímku, která bude co nejblíže ke všem naměřeným bodům)

12 Vstupní požadavky Informatika - pojmy z oblasti: –Návrhy algoritmů I Matematika - základní znalosti z oblastí: –Lineární algebra –Matematická analýza

13 Požadavky ke zkoušce a hodnocení Požadavky: znalosti v rozsahu přednášek :-) zkouška bude písemná (příklady + teorie) Hodnocení: A  90 % B  80 % C  70 % D  60 % E  50 % F < 50 %

14 Požadavky k zápočtu Požadavky: Vypracovat zápočtový projekt (zadání projektu získá student po domluvě s učitelem). Hodnocení: zprojekt splňuje požadavky, domluvené při zadávání njinak Poznámka: Předmět PA081 nelze ukončit kolokviem.

15 Materiály ke studiu Slidy: http://ncbr.chemi.muni.cz/~n19n/vyuka/nv u Marečka

16 Literatura Acton, F. S. REAL Computing made real : preventing errors in scientific and engineering calculations. Princeton : Princeton University Press, 1996. Higham, N. J. Accuracy and stability of numerical algorithms. Philadelphia : Society for Industrial and Applied Mathematics. Stroustrup, B. The C++ programming language. 3rd ed. Reading : Addison-Wesley, 1997.

17 Konzultační hodiny Kdy: Dle domluvy Kde: Kancelář C503.

18 Domácí úkoly Budu zadávat na některých přednáškách. Jejich řešení budu prezentovat na následující přednášce a zveřejním na Internetu. Jsou dobrovolné :-). Jsou hodnoceny bonus body. Když si je vyřešíte, pochopíte problematiku lépe.

19 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic Rovnice tvaru: x 2 + 2bx +c = 0

20 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic Rovnice tvaru: x 2 + 2bx +c = 0 Školní algoritmus: (pokud D >= 0) Problém školního algoritmu: b >> c Pak totiž:  Rozdíl 2 skoro stejně velkých čísel  Ztráta přesnosti

21 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic II Příklad výpočtu pomocí školního algoritmu: b = 1000, c = 1

22 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic II Příklad výpočtu pomocí školního algoritmu: b = 1000, c = 1 b 2 – c = 999 999 Po zaokrouhlení na 10 cifer (float v C): x + = -1000 + 999,9995 = -5. 10 -4 x- = -1000 - 999,9995 = -1999,9995000

23 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic III Porovnání přesného výpočtu a výpočtu pomocí školního algoritmu: Výsledky školního algoritmu (10 cifer): x + = -5. 10 -4 x - = -1999,9995000 Přesné výsledky: x + = -5,000001250000625. 10 -4 x - = -1999,999499999874

24 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic IV Numericky stabilní algoritmus: x - vypočítáme stejně jako předtím: Vztah pro x + odvodíme z rovnice: x 2 + 2bx + c = (x – x - ).(x – x + ) Platí tedy: c = x -.x + => x + = c/x -

25 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic V Porovnání přesného výpočtu, výpočtu pomocí numericky stabilního algoritmu a výpočtu pomocí školního algoritmu: Výsledky numericky stabilního algoritmu (10 cifer): x - = -1999,9995000 x + = 1 / -1999,9995000 = 5,000001250. 10 -4 Výsledky školního algoritmu (10 cifer): x - = -1999,9995000 x + = -5. 10 -4 Přesné výsledky: x - = -1999,999499999874 x + = -5,000001250000625. 10 -4

26 Domácí úkol Vytvořte co možná nejlepší program pro výpočet kořenů kvadratické rovnice. Ošetřete všechny problémové situace, které mohou nastat. Program otestujte na rovnici: x 2 + 20000x +1 = 0 Programujte ve svém oblíbeném programovacím jazyce. Odevzdejte program a hodnoty kořenů testovací rovnice Datum odevzdání: do 7.3.2005 Hodnocení: 3%

27 Nelineární úlohy – demonstrační příklady (1 - cos x)/x 2 Rovnice tvaru: (1 - cos x)/x 2 Řešení dle definice - problém pro malá x: x = 1,2. 10 -5 (radiány) cos x (zaokrouhleno na 10 cifer): cos (1,2. 10 -5 ) = 0,9999999999 1-cos x (zaokrouhleno na 10 cifer): 1 - 0,9999999999 = 1.10 -10 x 2 : (1,2. 10 -5 ) 2 = 1,44.10 -10 (1 - cos x)/x 2 (zaokrouhleno na 10 cifer): 1.10 -10 / 1,44.10 -10 = 0,6944444444

28 Nelineární úlohy – demonstrační příklady (1 - cos x)/x 2 II Rovnice tvaru: (1 - cos x)/x 2 Porovnání přesného řešení a řešení dle definice: Přesné řešení: cos (1,2. 10 -5 ) = 0,999999999928000000000864 1-cos (1,2. 10 -5 ) = 7,19999999991360000....10 -11 (1,2. 10 -5 ) 2 = 1,44.10 -10 (1 - cos x)/x 2 = 0,49999999999400... Řešení dle definice: (1 - cos x)/x 2 = 0,6944444444

29 Nelineární úlohy – demonstrační příklady (1 - cos x)/x 2 III Rovnice tvaru: (1 - cos x)/x 2 Numericky stabilní algoritmus: Nahradíme cos x pomocí Taylorova rozvoje: cos x = 1 – x 2 /2! + x 4 /4! – x 6 /6! + … Výpočet (zaokrouhleno na 10 cifer):

30 Nelineární úlohy – demonstrační příklady (1 - cos x)/x 2 IV Porovnání přesného výpočtu, výpočtu pomocí numericky stabilního algoritmu a výpočtu dle definice: Výsledky numericky stabilního algoritmu (10 cifer): (1 - cos x)/x 2 = 0,5 Výsledky výpočtu dle definice (10 cifer): (1 - cos x)/x 2 = 0,6944444444 Přesné výsledky: (1 - cos x)/x 2 = 0,49999999999400...

31 Domácí úkol Navrhněte jinou (numericky stabilní) metodu pro výpočet hodnoty výrazu: (1 - cos x)/x 2 Navrženou metodu otestujte pro x = 1,2. 10 -5 Datum odevzdání: do 7.3.2005 Hodnocení: 3% (za první metodu) + 1,5% za další originální metodu (nejvýše 6% na osobu)


Stáhnout ppt "PA081 Programování numerických výpočtů Mgr. Radka Svobodová Vařeková."

Podobné prezentace


Reklamy Google