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ů
Přednáška 3

2 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

3 Nelineární úlohy atan x / tanh x = b (1)
Výraz tvaru: atan x / tanh x = b Pro b platí: 1 <= b < 

4 Nelineární úlohy atan x / tanh x = b (2)
a) b 1 výraz tvaru: atan x / tanh x = b Musíme si uchovat rozdíl mezi 1 a b => použijeme substituci b = 1 +  ( je malé) Upravujeme: atan x = (1 + ) tanh x atan x – tanh x =  . tanh x atan x . cosh x – sinh x =  . sinh x Teď můžeme použít mocninné řady 2 téměř stejné hodnoty => musíme se jich zbavit

5 Nelineární úlohy atan x / tanh x = b (3)
atan x . cosh x – sinh x =  . sinh x

6 Nelineární úlohy atan x / tanh x = b (4)
t = x2; f(t) je kontrakce (alespoň na [-0,2 , 0,2]) iteruji

7 Iterační metody pro řešení nelineárních úloh
Hledání pevného bodu: Metoda prosté iterace Hledání průsečíku s osou x: Metoda půlení intervalů Metoda regula falsi Modifikovaná metoda regula falsi Metoda sečen Newtonova metoda

8 Iterační metody hledání pevného bodu II
Princip iteračních metod: Máme výchozí nelineární rovnici: F(x) = G(x) Vytvoříme z ní rekursivní rovnici tvaru: xi+1 = f(xi ,xi-1, ...,x0) (Musí splňovat podmínky věty o pevném bodě.) Provedeme iterativní výpočet Nejčastěji se využívají rovnice: xi+1 = f(xi) xi+1 = f(xi ,xi-1)

9 Iterační metody hledání pevného bodu III
Iterativní výpočet: Zvolíme vhodné počáteční hodnoty x0, x1, ..., xk: i := k; DO xi+1 = f(xi ,xi-1, ...,x0); i++; WHILE (PODMÍNKA UKONČENÍ != TRUE)

10 Iterační metody hledání pevného bodu IV
Jaké mohou být podmínky ukončení: |f(xi+1) – f(xi)| < MIN_FX |xi+1 – xi| < MIN_X i > MAX_I

11 Iterační metody hledání pevného bodu - metoda prosté iterace
Pracuje s rovnicí: xi+1 = f(xi) Nepopisuje metodu, jak z výchozí rovnice získat rovnici xi+1 = f(xi) Pouze klade podmínky, které musí rovnice xi+1 = f(xi) splňovat: Existuje x*  D(f) tak, že x* je limitou posloupnosti x0, x1, x2, … pro I  .

12 Iterační metody hledání pevného bodu - metoda prosté iterace II
Příklad: Výchozí rovnice: cos x = b Rekursivní rovnice: Zhodnocení: Výhody: Rychlost konvergence (odpovídá typu funkce) Nevýhody: Neposkytuje žádný univerzální způsob, jak odvodit rekursivní rovnici. Neposkytuje ani metodu pro určení x0.

13 Iterační metody Hledání průsečíku s osou x - obecně
Výchozí nelineární rovnice: F(x) = G(x) Chceme najít x, pro které platí: F(x) – G(x) = 0 Využijeme metody pro hledání průsečíku s osou x. Hledáme průsečík f(x) s osou x, přičemž: f(x) = F(x) – G(x) Pro hledání průsečíku f(x) s osou x existují standardní metody: půlení intervalů, regula falsi, ...

14 Iterační metody Hledání průsečíku s osou x – obecně II
Ještě než použijeme standardní metody: Musíme D(f) funkcie f(x) rozdělit na intervaly: <ai, bi>, kde i = 1, 2, 3,… Tak, aby platilo: f(x) má v intervalu <ai, bi> právě 1 průsečík s osou x f(ai). f(bi) < 0 f(x) je v intervalu <ai, bi> spojitá

15 Iterační metody Hledání průsečíku s osou x – obecně III
Máme výchozí funkci f(x) a interval <a, b> Zvolíme funkci m pro výpočet xi+1: xi+1 = m(xi ,xi-1, ...,x0) Funkce m je popsána v rámci metody pro určování průsečíku s osou x Provedeme iterativní výpočet Nejčastěji se využívají funkce tvaru: xi+1 = m(xi) xi+1 = m(xi ,xi-1)

16 Iterační metody Hledání průsečíku s osou x – obecně IV
Iterativní výpočet: Zvolíme vhodné počáteční hodnoty x0, x1, ..., xk: i := k; DO xi+1 = m(xi ,xi-1, ...,x0); i++; WHILE (PODMÍNKA UKONČENÍ != TRUE)

17 Iterační metody Hledání průsečíku s osou x – obecně V
Jaké mohou být podmínky ukončení: |f(xi+1) – f(xi)| < MIN_DF |f(xi+1)| < MIN_F |xi+1 – xi| < MIN_X i > MAX_I

18 Iterační metody Hledání průsečíku s osou x – Newtonova metoda
Princip: Vysvětlím na tabuli.

19 Iterační metody Hledání průsečíku s osou x – Newtonova metoda II
Volba počátečních hodnot: x0 Výpočet xi+1 Vstup: x0 Vlastní výpočet:

20 Iterační metody Hledání průsečíku s osou x – Newtonova metoda III
Příklad: f(x) = x3 – x – 1 x0 = 1 x1 = 2

21 Iterační metody Hledání průsečíku s osou x – Newtonova metoda IV
Zhodnocení: Výhody: Kvadratická konvergence (v každém kroku se zdvojnásobí počet platných cifer) Nevýhody: Je nutno počítat derivaci V některých případech nekonverguje (xi+1 může vyjít mimo interval, kde funkce splňuje dříve uvedené podmínky)

22 Iterační metody Hledání průsečíku s osou x – metoda sečen
Patří mezi semi-Newtonovské metody – pracuje podobně jako Newtonova metoda, ale místo derivace využívá pouze její aproximaci (směrnici přímky xi, xi-1) Princip: Vysvětlím na tabuli. Obrázek + odvození vzorce:

23 Iterační metody Hledání průsečíku s osou x – metoda sečen II
Volba počátečních hodnot: x0 = a, x1 = b Výpočet xi+1 Vstup: x0, x1 Vlastní výpočet:

24 Iterační metody Hledání průsečíku s osou x – metoda sečen III
Příklad: f(x) = x3 – x – 1 x0 = 1 x1 = 2

25 Iterační metody Hledání průsečíku s osou x – metoda sečen IV
Zhodnocení: Výhody: Takřka kvadratická konvergence Nepoužívá druhou derivaci Nevýhody: V některých případech opět nekonverguje (xi+1 může vyjít mimo interval, kde funkce splňuje dříve uvedené podmínky)

26 Iterační metody Hledání průsečíku s osou x – půlení intervalu
Princip: Vysvětlím na tabuli.

27 Iterační metody Hledání průsečíku s osou x – půlení intervalu II
Volba počátečních hodnot: a0 = a, b0 = b Výpočet xi+1 (a také ai+1 a bi+1) Vstup: ai, bi Vlastní výpočet: IF f(xi+1) == 0 konec výpočtu, řešení: xi+1 IF f(xi+1).f(ai) < 0 ai+1 = ai ; bi+1 = xi+1 ELSE ai+1 = xi+1 ; bi+1 = bi

28 Iterační metody Hledání průsečíku s osou x – půlení intervalu III
Největší nutný počet kroků pro získání hodnoty xn s přesností :

29 Iterační metody Hledání průsečíku s osou x – půlení intervalu IV
Příklad: f(x) = x3 – x – 1 x0 = 1 x1 = 2

30 Iterační metody Hledání průsečíku s osou x – půlení intervalu V
Zhodnocení: Výhody: Konverguje vždy!!! Dokážeme určit největší nutný počet kroků Nevýhody: Konverguje pomalu (lineární konvergence)

31 Iterační metody Hledání průsečíku s osou x – regula falsi
Opět semi-Newtonovská metoda Využívá však stejný posun krajních bodů jako metoda půlení intervalů => zůstane v intervalu a0, b0 => konverguje vždy Princip: Vysvětlím na tabuli. Obrázek

32 Iterační metody Hledání průsečíku s osou x – regula falsi II
Volba počátečních hodnot: a0 = a, b0 = b Výpočet xi+1 (a také ai+1 a bi+1) Vstup: ai, bi Vlastní výpočet: IF f(xi+1) == 0 konec výpočtu, řešení: xi+1 IF f(xi+1).f(ai) < 0 ai+1 = ai ; bi+1 = xi+1 ELSE ai+1 = xi+1 ; bi+1 = bi

33 Iterační metody Hledání průsečíku s osou x – regula falsi III
Příklad: f(x) = x3 – x – 1 x0 = 1 x1 = 2

34 Iterační metody Hledání průsečíku s osou x – regula falsi IV
Problém s metodou regula falsi Vysvětlím na tabuli. Princip modifikované metody regula falsi

35 Iterační metody Hledání průsečíku s osou x – modifikovaná regula falsi
Volba počátečních hodnot: a0 = a, b0 = b Výpočet xi+1 (a také ai+1 a bi+1) Vstup: ai, bi Vlastní výpočet: IF f(xi+1) == 0 konec výpočtu, řešení: xi+1 IF f(xi+1).f(ai) < 0 ai+1 = ai ; fm(ai+1) = f(ai+1)/2 ; bi+1 = xi+1 ; fm(bi+1) = f(bi+1) ELSE ai+1 = xi+1 ; fm(ai+1) = f(ai+1) ; bi+1 = bi ; fm(bi+1) = f(bi+1)/2

36 Iterační metody Hledání průsečíku s osou x – modifikovaná regula falsi II
Příklad: f(x) = x3 – x – 1 x0 = 1 x1 = 2

37 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (1)
Prostá iterace: Nalezení rekurzivní rovnice: Nějaké návrhy?

38 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (2)
Prostá iterace: Nalezení rekurzivní rovnice: xi+1 = 2 sin xi – 0,1 nefunguje xi+1 = asin (x/2 + 0,1) funguje: Je potřeba 18 iterací na 6 desetinných míst 1 0,100167 2 0,150653 3 0,176237 4 0,189246 5 ...

39 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (3)
Prostá iterace: Speciální rekurzivní rovnice:

40 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (4)
Prostá iterace: Speciální rekurzivní rovnice: x0 = 0 Je potřeba 4 iterace na 6 desetinných míst 0,2 0,202697 0,202771 0,202773

41 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (5)
Newtonova metoda: Úprava rovnice: f(x) = x/2 + 0,1 – sin x = 0 Najít v grafu vhodné x0 x0 = 0 f’(x) = ½ - cos x

42 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (6)
Newtonova metoda: Jsou potřeba 3 iterace na 6 desetinných míst 0,2 0,202772 0,202773

43 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (7)
Metoda regula falsi metoda: Úprava rovnice: f(x) = x/2 + 0,1 – sin x = 0 Najít v grafu vhodné a0 a b0 a0 = 0, b0 = 1

44 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (8)
Metoda regula falsi: Je potřeba 6 iterací na 6 desetinných míst 0,292851 0,205860 0,202860 0,202776 0,202774 0,202773

45 Iterační metody Praktický příklad: sin x = x/2 + 0,1 (9)
Prostá iterace: xi+1 = asin (x/2 + 0,1) 18 iterací Prostá iterace: iterace Newtonova metoda: iterace Metoda regula falsi: iterací


Stáhnout ppt "PA081 Programování numerických výpočtů"

Podobné prezentace


Reklamy Google