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

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

PA081 Programování numerických výpočtů

Podobné prezentace


Prezentace na téma: "PA081 Programování numerických výpočtů"— 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íž: Existuje standardní algoritmus (např. f(x) = 0) Tento algoritmus je numericky stabilní (pro všechny vstupy poskytuje výsledky, vyhovující zadání problému). 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í
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: Hodnocení: Poznámka:
Vypracovat zápočtový projekt (zadání projektu získá student po domluvě s učitelem). Hodnocení: z projekt splňuje požadavky, domluvené při zadávání n jinak 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: x2 + 2bx +c = 0

20 Nelineární úlohy – demonstrační příklady řešení kvadratických rovnic
Rovnice tvaru: x2 + 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 b2 – 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: x2 + 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+ = 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)/x2
Rovnice tvaru: (1 - cos x)/x2 Řešení dle definice - problém pro malá x: x = 1, (radiány) cos x (zaokrouhleno na 10 cifer): cos (1, ) = 0, 1-cos x (zaokrouhleno na 10 cifer): 1 - 0, = x2 : (1, )2 = 1, (1 - cos x)/x2 (zaokrouhleno na 10 cifer): / 1, = 0,

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

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

30 Nelineární úlohy – demonstrační příklady (1 - cos x)/x2 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)/x2 = 0,5 Výsledky výpočtu dle definice (10 cifer): (1 - cos x)/x2 = 0, Přesné výsledky: (1 - cos x)/x2 = 0,

31 Domácí úkol Navrhněte jinou (numericky stabilní) metodu pro výpočet hodnoty výrazu: (1 - cos x)/x2 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ů"

Podobné prezentace


Reklamy Google