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: u Marečka

16 Literatura Acton, F. S. REAL Computing made real : preventing errors in scientific and engineering calculations. Princeton : Princeton University Press, 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 = Po zaokrouhlení na 10 cifer (float v C): x + = ,9995 = x- = ,9995 = -1999,

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 + = x - = -1999, Přesné výsledky: x + = -5, x - = -1999,

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, x + = 1 / -1999, = 5, Výsledky školního algoritmu (10 cifer): x - = -1999, x + = Přesné výsledky: x - = -1999, x + = -5,

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 x +1 = 0 Programujte ve svém oblíbeném programovacím jazyce. Odevzdejte program a hodnoty kořenů testovací rovnice Datum odevzdání: do 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, (radiány) cos x (zaokrouhleno na 10 cifer): cos (1, ) = 0, cos x (zaokrouhleno na 10 cifer): 1 - 0, = x 2 : (1, ) 2 = 1, (1 - cos x)/x 2 (zaokrouhleno na 10 cifer): / 1, = 0,

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, ) = 0, cos (1, ) = 7, (1, ) 2 = 1, (1 - cos x)/x 2 = 0, Řešení dle definice: (1 - cos x)/x 2 = 0,

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, Přesné výsledky: (1 - cos x)/x 2 = 0,

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, Datum odevzdání: do 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