250 likes | 370 Views
P A 0 81 P rogramov ání numerických výpočtů. Přednáška 4. 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
E N D
PA081 Programování numerických výpočtů Přednáška 4
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
Nelineární úlohy(1-sin x) / (/2-x) (1) Výraz tvaru:(1-sin x) / (/2-x)pro x /2 Standardní výpočet pro x = 1,5708: (přesnost 10 desetinných míst) /2=1,5707963267 /2-x = 0,0000036733 sin x = 0,9999999999 (1-sin x) / (/2-x) = 0,0000272235
Nelineární úlohy(1-sin x) / (/2-x) (2) Výraz tvaru:(1-sin x) / (/2-x)pro x /2 Přesný výpočet pro x = 1,5708: /2= 1,5707963267949... /2-x = -0,00000367320510341607... sin x = 0,999999999993254... (1-sin x) / (/2-x) = 0,0000018366168017301
Nelineární úlohy(1-sin x) / (/2-x) (3) Výraz tvaru: (1-sin x) / (/2-x) pro x /2 Převedení úlohy do vhodnějšího tvaru: Substituce t = /2 – x Pro sin x pak platí: sin x = sin (/2 – t) = -sin (t - /2) = cos (t) Pozn.: sin (x + /2) = cos x; sin (x - /2) = -cos x
Nelineární úlohy(1-sin x) / (/2-x) (4) Výraz tvaru: (1-sin x) / (/2-x) pro x /2 Převedení úlohy do vhodnějšího tvaru: x = 1,5708 t = 0,00000 36732
Nelineární úlohy(1-sin x) / (/2-x) (5) Porovnání výsledků (x = 1,5708): Standardní výpočet: 0,0000272235 Přesný výpočet: 0,0000018366168017301 Pozměnění výrazu: 0,00000 18366
Iterační metodyPraktický příklad 2: (1) Prostá iterace: Nalezení rekurzivní rovnice: Nějaké návrhy?
Iterační metodyPraktický příklad 2: (2) Prostá iterace: Nalezení rekurzivní rovnice: a) konverguje b) diverguje
Iterační metodyPraktický příklad 2: (3) Prostá iterace: Nalezení rekurzivní rovnice: a) konverguje 7 iterací pro přesnost na 6 des. míst
Iterační metodyPraktický příklad 2: (4) Newtonova metoda: Úprava rovnice není nutná: Derivace: Výpočet xi+1: Pozor na správnou volbu x0: x0 = 1 (chyba), x0 = 2 (OK)
Iterační metodyPraktický příklad 2: (5) Newtonova metoda: 7 iterací pro přesnost na 6 des. míst
Iterační metodyPraktický příklad 3: sin x = x - h (1) Prostá iterace: Pro h = 0,234567 Pro h = 0,000123456
Iterační metodyPraktický příklad 3: sin x = x - h (1) Prostá iterace: Pro h = 0,234567 Nalezení rekurzivní rovnice: • x = sin x + h konverguje (x* = 1,145472; 20 iter.) • x = asin (x – h) nekonverguje Pro h = 0,000123456 Nalezení rekurzivní rovnice: • x = sin x + h nekonverguje • x = asin (x – h) nekonverguje
Iterační metodyPraktický příklad 3: sin x = x - h (2) Newtonova metoda: Úprava rovnice: f(x) = sin x – x + h = 0 Derivace: f’(x) = cos x - 1 Výpočet xi+1: Pro h = 0,234567: konverguje; x0 = 0,5; x* = 1,145472; 6 iter. Pro h = 0,000123456: konverguje; x0 = 0,001; x* = 0,090492916; 22 iter. VELMI OBTÍŽNÁ VOLBA x0 ROVNICE PRO xi+1MÁ NEVHODNÝ TVAR
Iterační metodyPraktický příklad 3: sin x = x - h (3) Pro h = 0,000123456 Analogický problém pro metodu regula falsi: Má ve jmenovateli: sin a – a – (sin b – b) => velmi malá čísla, navíc jejich rozdíl se blíží 0 Co tedy dělat?:
Iterační metodyPraktický příklad 3: sin x = x - h (4) Pro h = 0,000123456 Analogický problém pro metodu regula falsi: Má ve jmenovateli: sin a – a – (sin b – b) => velmi malá čísla, navíc jejich rozdíl se blíží 0 Co tedy dělat?: a) Půlení intervalů – zaručené, ale pomalé: konverguje, 22 iterací b) Prostá iterace s rovnicí, využívající Taylorovy řady
Iterační metodyPraktický příklad 3: sin x = x - h (5) Pro h = 0,000123456 Prostá iterace s rovnicí, využívající Taylorovy řady: Konverguje; x0 = 0; 3 iterace
Iterační metodyPraktický příklad 4:x.sin x = h (1) Podobný problém jako v předchozím případě. Existuje ještě jedna metoda, jak pracovat s takovýmito výrazy: Využijeme „pseudokonstantu“ sin x/x: x. sin x = h vynásobíme levou stranu zlomkem x/x a tím si na levé straně vytvoříme výraz sin x/x x2.(sin x/x) = h pro x 0 je hodnota tohoto výrazu blízká 1 a se změnou x se mění velmi pomalu => vhodná do jmenovatele
Iterační metodyPraktický příklad 4:x.sin x = h (2) Prostá iterace s rovnicí (h = 0,00123456): Pro x0 = 0,001 Konverguje, 2 iterace
Iterační metodyPraktický příklad 4: (1) Hodnoty konstant: a = 0,8474; b = 0,3; c = 3,27; d = 0,6697 Substituce:
Iterační metodyPraktický příklad 4: (1) Hodnoty konstant: a = 0,8474; b = 0,3; c = 3,27; d = 0,6697 Substituce: • x = u2/d Nahradíme cos pomocí sin, abychom mohli použít sin u/u: 1 – cos u = 2 (sin (u/2))2
Iterační metodyPraktický příklad 4: (2) 1 – cos u = 2 (sin (u/2))2 => u = 1,42998 x = 4,55932
Iterační metodyObecná pravidla • Vytvořit graf rovnice. • Zjistit, kde zhruba leží kořen rovnice. V případě, že jich je několik, ujistit se, který z nich hledáme. • Vymyslet vhodnou iterativní metodu – jednu z těchto: • Prostá iterace s původní rovnicí • Prostá iterace s upravenou rovnicí (Taylorův rozvoj, využití pseudokonstanty sin x / x) • Newtonova metoda • Metoda regula falsi • Metoda půlení intervalů • Metodu použít a otestovat správnost výsledků (např. pomocí grafu rovnice). Pokud je výsledek nesprávný, zjistit důvod a zkusit jinou metodu.
Domácí úkol 4 Máme kolejnici délky 1 km a 10 cm. Ohneme ji tak, aby mezi jejími konci byla vzdálenost 1 km. Jaká bude vzdálenost mezi spojnicí konců kolejnice a bodem ve středu kolejnice?