i Obsah Úvod 1 § 0.1. Reprezentace čísel v počítači . . . . . . . . . . . . . . . . . . . . 2 § 0.2. Celková chyba výpočtu . . . . . . . . . . . . . . . . . . . . . . . 5 § 0.3. Podmíněnost úloh . . . . . . . . . . . . . . . . . . . . . . . . . . 8 § 0.4. Realizace numerických výpočtů . . . . . . . . . . . . . . . . . . 9 § 0.5. Stabilita algoritmů . . . . . . . . . . . . . . . . . . . . . . . . . . 11 § 0.6. Symbolika O, o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1 Normy vektorů a matic 15 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2 Řešení nelineárních rovnic 23 § 2.1. Metoda bisekce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 § 2.2. Metoda prosté iterace . . . . . . . . . . . . . . . . . . . . . . . . 26 § 2.3. Hledání vhodného tvaru iterační funkce . . . . . . . . . . . . . . 37 § 2.4. Newtonova metoda . . . . . . . . . . . . . . . . . . . . . . . . . 40 § 2.5. Metoda sečen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 § 2.6. Metoda regula falsi . . . . . . . . . . . . . . . . . . . . . . . . . 50 § 2.7. Quasi Newtonova metoda . . . . . . . . . . . . . . . . . . . . . . 52 § 2.8. Iterační metody pro násobné kořeny . . . . . . . . . . . . . . . . 55 § 2.9. Urychlení konvergence . . . . . . . . . . . . . . . . . . . . . . . . 57 § 2.10. Steffensenova metoda . . . . . . . . . . . . . . . . . . . . . . . . 58 § 2.11. Müllerova metoda . . . . . . . . . . . . . . . . . . . . . . . . . . 62 § 2.12. Iterační metody pro systémy nelineárních rovnic . . . . . . . . . 63 § 2.13. Newtonova metoda pro systémy nelineárních rovnic . . . . . . . 67 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3 Polynomy 73 § 3.1. Hranice kořenů . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 § 3.2. Počet reálných kořenů polynomu . . . . . . . . . . . . . . . . . . 74 ii OBSAH § 3.3. Newtonova metoda a její modifikace . . . . . . . . . . . . . . . . 78 § 3.4. Bairstowova metoda . . . . . . . . . . . . . . . . . . . . . . . . . 86 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4 Přímé metody řešení systémů lineárních rovnic 93 § 4.1. Systémy lineárních rovnic . . . . . . . . . . . . . . . . . . . . . . 93 § 4.2. Gaussova eliminační metoda . . . . . . . . . . . . . . . . . . . . 95 § 4.3. Systémy se speciálními maticemi . . . . . . . . . . . . . . . . . . 107 § 4.4. Výpočet inverzní matice a determinantu . . . . . . . . . . . . . 111 § 4.5. Metody založené na minimalizaci kvadratické formy . . . . . . . 114 § 4.6. Stabilita, podmíněnost . . . . . . . . . . . . . . . . . . . . . . . 121 § 4.7. Analýza chyb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 5 Iterační metody řešení systémů lineárních rovnic 133 § 5.1. Princip iteračních metod . . . . . . . . . . . . . . . . . . . . . . 133 § 5.2. Jacobiova iterační metoda . . . . . . . . . . . . . . . . . . . . . 137 § 5.3. Gaussova-Seidelova iterační metoda . . . . . . . . . . . . . . . . 141 § 5.4. Relaxační metody . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6 Interpolace 157 § 6.1. Polynomiální interpolace . . . . . . . . . . . . . . . . . . . . . . 158 § 6.2. Chyba interpolace . . . . . . . . . . . . . . . . . . . . . . . . . . 167 § 6.3. Interpolace na ekvidistantních uzlech . . . . . . . . . . . . . . . 170 § 6.4. Obecný interpolační proces . . . . . . . . . . . . . . . . . . . . . 177 § 6.5. Iterovaná interpolace . . . . . . . . . . . . . . . . . . . . . . . . 179 § 6.6. Inverzní interpolace . . . . . . . . . . . . . . . . . . . . . . . . . 182 § 6.7. Sestavování tabulek . . . . . . . . . . . . . . . . . . . . . . . . . 182 § 6.8. Hermitova interpolace . . . . . . . . . . . . . . . . . . . . . . . . 183 § 6.9. Interpolace pomocí splajnů . . . . . . . . . . . . . . . . . . . . . 193 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 7 Numerické derivování 205 § 7.1. Numerický výpočet derivace . . . . . . . . . . . . . . . . . . . . 205 § 7.2. Diferenční aproximace . . . . . . . . . . . . . . . . . . . . . . . . 211 § 7.3. Richardsonova extrapolace . . . . . . . . . . . . . . . . . . . . . 212 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 iii 8 Ortogonální polynomy 217 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 9 Numerické integrování 225 § 9.1. Kvadraturní formule, stupeň přesnosti, chyba . . . . . . . . . . . 225 § 9.2. Gaussovy kvadraturní formule . . . . . . . . . . . . . . . . . . . 231 § 9.3. Newtonovy-Cotesovy kvadraturní formule . . . . . . . . . . . . . 248 § 9.4. Lobattova kvadraturní formule . . . . . . . . . . . . . . . . . . . 254 § 9.5. Čebyševova kvadraturní formule . . . . . . . . . . . . . . . . . . 257 § 9.6. Složené kvadraturní formule . . . . . . . . . . . . . . . . . . . . 260 § 9.7. Adaptivní kvadraturní formule . . . . . . . . . . . . . . . . . . . 264 § 9.8. Rombergova integrace . . . . . . . . . . . . . . . . . . . . . . . . 266 § 9.9. Metoda polovičního kroku, použití kvadraturních formulí . . . . 269 § 9.10. Integrály se singularitami . . . . . . . . . . . . . . . . . . . . . . 271 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Kontrolní otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10 Metoda nejmenších čtverců 279 Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Literatura 289 Rejstřík 291 iv OBSAH Předmluva Současná doba je charakterizována prudkým rozvojem výpočetní techniky a s tím souvisí rozšíření možností aplikace matematiky i v dalších vědeckých oborech -- biologii, chemii, ekonomii, psychologii, lékařství a v technických vědách. Důležitou úlohu v řadě aplikací mají metody numerické matematiky a odpovídající efektivní algoritmy. A právě základním numerickým metodám jsou věnována tato skripta. Skripta vycházejí ve druhém, rozšířeném vydání. Svým rozsahem pokrývají dvousemestrovou přednášku z numerických metod v rámci studijních programů Matematika a Aplikovaná matematika na Přírodovědecké fakultě MU. Skripta jsou věnována základním numerickým metodám, a protože odpovídající algoritmy pro realizaci těchto metod jsou poměrně jednoduché, nejsou, až na výjimky, v těchto skriptech uvedeny. Konstrukci těchto algoritmů v rámci systému MATLAB je věnováno dost prostoru v příslušných cvičeních k uvedeným přednáškám. Brno, říjen 2008 Ivana Horová Jiří Zelinka vi PŘEDMLUVA Úvod Hamming, R. W. (1962): ,,Cíl výpočtů ­ pochopení podstaty, a ne číslo ,,Dříve než budete úlohu řešit, promyslete si, co budete dělat s jejím řešením. Numerická matematika se zabývá procesy, pomocí nichž lze matematické problémy řešit aritmetickými operacemi. Někdy to bude znamenat sestrojení algoritmů k řešení problému, který je již v takovém tvaru, že jeho řešení lze nalézt aritmetickými prostředky (např. systém lineárních rovnic). Často to bude znamenat náhradu veličin, které nemohou být počítány aritmeticky (např. derivace nebo integrály) aproximacemi, které umožní nalézt přibližné řešení. Numerická matematika se rovněž zabývá volbou postupu, který se ,,nejlépe hodí k řešení speciálního problému. Uvádíme proto řadu příkladů na ilustraci numerických metod. Účelem těchto příkladů je, aby pomohly čtenáři porozumět podstatě té které numerické metody. Poznámka 1. V 9. stol. n. l. arabský matematik Muhamad ibn Músá al-Chvarízmí napsal knihu, ve které vykládá indický početní systém. Latinskému překladu názvu knihy ,,Algorithmi de numero Indorum vděčíme za název algoritmus. Numerická řešení problémů jsou obvykle zatížena chybami, které vznikají ve dvou oblastech: těmi, které jsou obsaženy v matematické formulaci problému, a těmi, které jsou způsobeny hledáním řešení numerickou cestou. První kategorie zahrnuje chyby způsobené tím, že matematický problém je pouze aproximací reálné situace. Jiným pramenem chyb jsou např. nepřesnosti fyzikálních konstant nebo chyby v empirických hodnotách. Nechť x je přesné číslo a nechť ~x značí aproximaci x. Rozdíl ~x - x nazýváme absolutní chybou aproximace ~x, veličinu , |~x - x| , nazýváme odhadem absolutní chyby. Vhodněji lze vyjádřit vztah mezi x a ~x prostřednictvím relativní chyby: Podíl (x - ~x)/x nazýváme relativní chybou a veličinu , x - ~x x , nazýváme odhadem relativní chyby. Jestliže |x| je malé číslo, je vhodné pro odhad chyby použít relativní chyby, což je vidět z následujícího příkladu. 2 ÚVOD Mějme např. čísla x1 = 1,31, ~x1 = 1,30 a x2 = 0,12, ~x2 = 0,11. Pro absolutní chyby v obou případech platí |x1 - ~x1| = 0,01, |x2 - ~x2| = 0,01, ale pro relativní chyby platí ~x1 - x1 x1 = 0,0076, ~x2 - x2 x2 = 0,0833. Tento výsledek ukazuje, že ~x1 je bližší x1 než ~x2 k x2, zatímco z absolutní chyby nic takového neplyne. Relativní chyba rovněž slouží k odhadu platných cifer aproximace ~x. Tuto skutečnost lze formulovat takto: Definice 0.1. Řekneme, že aproximace ~x čísla x má s platných cifer, jestliže s je největší celé nezáporné číslo takové, že platí x - ~x x 5.10-s . Poznámka 2. Nechť x je reálné číslo, které má obecně nekonečné dekadické vyjádření. Číslo x(d) , které má d desetinných míst, je správně zaokrouhlenou hodnotou čísla x, platí-li |x - x(d) | 1 2 10-d . Ve správně zaokrouhleném čísle jsou všechny cifry platné. Dalším zdrojem chyb během výpočtu je nepřesné zobrazování čísel v paměti počítače jako důsledek její konečné velikosti. § 0.1. Reprezentace čísel v počítači1 1. Strojová reprezentace celých čísel na n bitů (počítání modulo 2n ) (i) bez znaménka (unsigned integer): a 0 rozsah: 0 a 2n - 1 = (11 . . . 1 n )2, (ii) se znaménkem (signed integer): a libovolné rozsah: (10 . . . 0 n )2 = -2n-1 a 2n-1 - 1 = (01 . . . 1 n )2. Současně vidíme, že prvý bit určuje znaménko: 1 = minus, 0 = plus. 1Tato část byla převzata z nepublikovaného učebního textu doc. RNDr. V. Veselého, CSc. § 0.1. Reprezentace čísel v počítači 3 Je zřejmé, že v rámci uvedených rozsahů jsou celočíselné výpočty absolutně přesné, zatímco mimo ně naopak zcela chybné. Příklad 0.1. (n = 3) (i) 0 a 7 : mod8 0 1 2 3 4 5 6 7 0 1 2 3 . . . (ii) -4 a 3 : 0 -7 -6 -5 mod8 -4 -3 -2 -1 0 1 2 3 . . . K číslu a najdeme v modulární aritmetice číslo opačné -a snadno z rovnice a + a (11...1)2 + 1 = 2n 0 mod 2n . Odtud dostáváme -a = a + 1, kde a vznikne z a negací po bitech. Například a = 2 = (010)2 2 = (101)2 2 + 2 = (111)2 -2 = 2 + 1 = (110)2 = 6 mod 8. V počítači se celá čísla zobrazují zpravidla v těchto přesnostech: n = 8 (1 bajt) . . . (un)signed char (1 znak) n = 16 (2 bajty) . . . (un)signed short integer (poloviční přesnost) n = 32 (4 bajty) . . . (un)signed integer (jednoduchá přesnost) n = 64 (8 bajtů) . . . (un)signed long integer (dvojnásobná přesnost) 2. Strojová reprezentace reálných čísel na n bitů Nechť q 2 značí základ číselné soustavy. V počítačích pracujeme s čísly nejčastěji v soustavách q = 2, 8, 16. Přesná reálná čísla se reprezentují v tzv. semilogaritmickém tvaru pohyblivé řádové čárky (normalizovaná mantisa + exponent): p = mantisa d1, d2d3 . . . dkdk+1 . . . × qe , kde e Z je exponent a 1 d1 q - 1, 0 dj q - 1 (pro j > 1) jsou cifry mantisy. Zejména v případě q = 2 je d1 = 1, takže tento bit je možno využít pro zobrazení znaménka mantisy (1 = minus, 0 = plus). Strojová reálná čísla se ukládají pouze s konečným počtem k cifer mantisy. Obdržíme tak přibližnou reprezentaci fl(p) (floating-point representation), která vznikne buď pouhým odseknutím (chopping) přebývajících cifer nebo se navíc poslední k-tá cifra dk zaokrouhlí (rounding). Současně se také vhodně omezí rozsah exponentu: -emin e emax. Dostáváme tedy tyto aproximace: 4 ÚVOD a) ~p = flchop(p) = d1, d2d3 . . . dk × qe , s absolutní chybou aproximace 0 |p - ~p| < qe-(k-1) , b) ~p = flround(p) = d1, d2d3 . . . dk-1 ~dk × qe , ~dk = round(dk, dk+1, . . .), s absolutní chybou aproximace 0 |p - ~p| qe-(k-1) /2. Příklad 0.2. (a) q = 10, k = 6: p = 22 7 = 3,1428571428 flchop(p) = 3,14285 × 100 flround(p) = 3,14286 × 100 (b) q = 2, k = 5: p = 0,1 = (1,10011001)2 × 2-4 flchop(p) = (1,1001)2 × 2-4 flround(p) = (1,1010)2 × 2-4 Tento příklad je současně ilustrací čísla, které má konečný počet cifer v dekadické soustavě, ale nekonečný počet cifer v binární soustavě a není tedy v paměti počítače zobrazeno přesně. V počítačích se reálná čísla zobrazují zpravidla v těchto přesnostech: a) Jednoduchá přesnost (4 bajty): n = 32 = 24 bitů mantisy + 8 bitů expo- nentu. Rozsah exponentu: -27 -128 e 27 - 1 127 . Dekadický rozsah: 2,938736 × 10-39 až 1,701412 × 1038 , kde 2,938736 × 10-39 . = 1 × 2-128 a 1,701412 × 1038 . = (1,11 . . .1)2 2 ×2127 . = 2 × 2127 = 2128 . Dekadická přesnost mantisy: 2-23 . = 1,2 × 10-7 cca 7 dekadických cifer přesnosti, což však vzhledem k příkladu 0.2(b) neznamená, že každé číslo s nejvýše 7 dekadickými ciframi musí být zobrazeno přesně. b) Dvojnásobná přesnost (8 bajtů): n = 64 = 53 bitů mantisy + 11 bitů expo- nentu. Rozsah exponentu: -210 -1024 e 210 - 1 1023 . Dekadický rozsah: 5,562684646268003 × 10-309 až 8,988465674311580 × 10307 , kde 5,562684646268003 × 10-309 . = 1 × 2-1024 a 8,988465674311580 × 10307 . = (1,11 . . . 1)2 2 ×21023 . = 2 × 21023 = 21024 . Dekadická přesnost mantisy: 2-52 . = 2,2 × 10-16 cca 16 dekadických cifer přesnosti. § 0.2. Celková chyba výpočtu 5 Běžně používaná binární reprezentace dle normy IEEE (např. počítače třídy PC) je v poněkud modifikovaném tvaru: ~p = flIEEE(p) = s e10e9e8 . . . e0d2, d3 . . . d53, kde * s1 d2, d3 . . . d53 . . . mantisa se znaménkovým bitem s (1=minus, 0=plus) a dvěma binárními místy před řádovou čárkou (d1 = 1 a d2), * e = (e10e9e8 . . . e0)2 . . . exponent v 11-bitové binární reprezentaci se znaménkem podle 1ii v symetrickém rozsahu -(210 - 1) e 210 - 1. Tedy e10 = 1 odpovídá nezaporným hodnotám exponentu a e10 = 0 záporným hodnotám, přičemž případ e = -210 byl vyloučen, neboť pro něj jsou všechny bity exponentu e10e9e8 . . . e0 nulové a vznikla by kolize s vyjádřením čísla 0, která je dána nulovými hodnotami všech bitů IEEE reprezentace (jinak by totiž tyto nulové bity určovaly kladné číslo (10,0 . . . 0)2 × 2-210 ). Zmíníme se ještě o šíření chyb při provádění aritmetických operací v případě zápisu čísel v pohyblivé řádové čárce. Lze dokázat, že platí ([6],[13]) fl(x y) = (x y)(1 + ), kde znamená libovolnou z aritmetických operací +, -, ×, :, a || , dekadická přesnost mantisy. § 0.2. Celková chyba výpočtu Dalším zdrojem chyb je skutečnost, že se neřeší problém, který byl původně zadán, ale nějaká jeho aproximace. Často je to způsobeno náhradou procesu nekonečného procesem konečným. Přesněji: Předpokládejme, že veličina Y je jednoznačně určena hodnotami x1, . . . , xn, tj. Y = F(x1, . . . , xn). Funkční závislost F nahradíme numerickou metodou f a získané teoretické řešení označíme y: y = f(x1, . . . , xn). Vzhledem k tomu, že místo hodnot xi musíme často používat jen aproximace ~xi, a protože nelze provádět všechny aritmetické operace přesně (zaokrouhlování mezivýsledků), bude se vypočtená hodnota ~y = ~f(~x1, . . . , ~xn) lišit od y. Celkovou chybu vyjádříme jako součet dílčích chyb takto: Y - ~y = {Y - y} + {f(x1, x2, . . . , xn) - f(~x1, . . . , ~xn)} + + f(~x1, . . . , ~xn) - ~f(~x1, . . . , ~xn) . 6 ÚVOD Rozdíl Y - y nazveme chybou metody, f(x1, x2, . . . , xn) - f(~x1, . . . , ~xn) se nazývá chyba primární a f(~x1, . . . , ~xn) - ~f(~x1, . . . , ~xn) se nazývá chyba sekundární. Schematicky lze předchozí úvahy znázornit takto: Daný problém Matematická formulace Numerická metoda Numerická metoda -- algoritmus E E E Y = F(x1, . . . , xn) y = f(x1, . . . , xn) ~y = ~f(~x1, . . . , ~xn) U každé numerické metody by měla být uvedena chyba této metody. Primární chybu lze odhadnout následujícím způsobem: Věta 0.1. Buď U = {xi : |xi - ~xi| i, i = 1, . . . , n} a nechť funkce f(x1, . . . , xn) je spojitě diferencovatelná na U. Pak |f(x1, . . . , xn) - f(~x1, . . . , ~xn)| n i=1 Aii, (0.1) kde Ai = sup U f xi (x1, . . . , xn) , i = 1, . . . , n. Důkaz plyne z Lagrangeovy věty pro funkce n proměnných. Poznámka 3. V praxi se užívá odhadu |f(x1, . . . , xn) - f(~x1, . . . , ~xn)| n i=1 f xi (~x1, ~x2, . . . , ~xn) i. (0.2) Odhad sekundární chyby lze provést teprve tehdy, až je algoritmus rozepsán do posloupnosti aritmetických operací (viz příklad 0.4). Příklad 0.3. Počítejme gravitační zrychlení g ze vzorce pro dobu kmitu T matematického kyvadla T = 2 l g (l délka kyvadla). Jaké absolutní chyby se dopustíme, jestliže dobu kmitu T měříme s chybou T a l s chybou l? Řešení. Je třeba v podstatě odhadnout primární chybu: |g(l, T ) - g(~l, ~T)|, kde ~T = T + T , ~l = l + l, a funkce g je dána vztahem g(l, T ) = 42 l T 2 . § 0.2. Celková chyba výpočtu 7 Počítejme parciální derivace funkce g podle jednotlivých proměnných: g l = 42 T 2 , g T = - 82 l T 3 Užijeme vztahu (0.2): |g(l, T ) - g(~l, ~T)| g l (~l, ~T) |l| + g T (~l, ~T) |T | = = 42 ~T 2 |l| + 82 l ~T 3 |T | = 42 ~T 2 ~l |l| ~l + 2 |T | ~T = = g(~l, ~T) |l| ~l + 2 |T | ~T . Ukážeme nyní na příkladě, že sekundární chyba a tedy i celková chyba výpočtu závisí na tom, jak výpočet uspořádáme a jak zaokrouhlujeme během výpočtového procesu. Příklad 0.4. Nechť u = (u1, . . . , un), v = (v1, . . . , vn) jsou dva vektory, jejichž všechny složky jsou správně zaokrouhleny na d desetinných míst a nechť U = (U1, . . . , Un), V = (V1, . . . , Vn) jsou přesné vektory. Je třeba vypočítat skalární součin (u, v) = n i=1 uivi na d míst. Ptáme se: Je výhodnější každý ze součinů uivi napřed zaokrouhlit na d míst a pak sečíst, nebo napřed všechny součiny uivi sečíst a pak zaokrouhlit výsledek na d desetinných míst? Řešení. Nechť Ui = ui + i, Vi = vi + i, i = 1, . . . , n, |i|, |i| 1 2 10-d . Pak uivi = (Ui - i)(Vi - i) = UiVi - iVi - iUi + ii . (0.3) Vztah (0.3) udává primární chybu UiVi - uivi. Jestliže každý ze součinů uivi zaokrouhlíme na d desetinných míst a výsledek označíme (uivi)z, máme (uivi)z = UiVi - iVi - iUi + ii + i, (0.4) kde |i| 1 2 10-d . V prvním případě je skalární součin (u, v) roven (u, v) = n i=1 (uivi)z = n i=1 UiVi - n i=1 (iUi + iVi - ii - i), 8 ÚVOD takže celková chyba je (U, V ) - (u, v) = n i=1 (iUi + iVi - ii - i) = = n i=1 (iUi + iVi - ii) - n i=1 i . (0.5) Při druhém postupu počítáme bez zaokrouhlování, tj. každý součin uivi má 2d desetinných míst. Tyto součiny sečteme a výsledek zaokrouhlíme: (u, v) = n i=1 uivi + = n i=1 UiVi - n i=1 (iUi + iVi - ii) + , (0.6) kde || 1 2 10-d . Tedy (U, V ) - (u, v) = n i=1 (iUi + iVi - ii) - . (0.7) Protože uivi jsou správně zaokrouhlená čísla na d desetinných míst, je n i=1 (iUi + iVi - ii) 1 2 10-d n i=1 (|Ui| + |Vi| + 1 2 10-d ) . (0.8) Dále je n i=1 |i| n 2 10-d . V rovnicích (0.5) a (0.7) je pouze poslední člen způsoben zaokrouhlovacími chybami během výpočtu. Nechť |Ui|, |Vi| < 1, pro i = 1, . . . , n. Pak druhý člen v rovnici (0.5) je řádově stejný jako první člen, ale druhý člen v rovnici (0.7) je malý ve srovnání s prvním členem. Druhý postup je proto výhodnější než první postup. Tyto úvahy mají velký význam při výpočtech na počítačích, kde je velký počet operací, a pořadí, v němž je výpočet proveden, je velmi významným faktorem. § 0.3. Podmíněnost úloh Předpokládejme, že B1 (množina vstupních dat) a B2 (množina výstupních dat) jsou Banachovy prostory. Řekneme, že úloha y = U(x), x B1, y B2 je korektní pro dvojici prostorů (B1, B2), jestliže 1. ke každému x B1 existuje jediné řešení y B2 : y = U(x). § 0.4. Realizace numerických výpočtů 9 2. toto řešení spojitě závisí na vstupních datech, tj. jestliže xn x, U(xn) = yn, pak U(xn) U(x) = y. Velkou třídu nekorektních úloh tvoří nejednoznačně řešitelné úlohy. Uvedeme nyní charakteristiku dobře podmíněných úloh. Řekneme, že korektní úloha je dobře podmíněna, jestliže malá změna ve vstupních datech vyvolá malou změnu řešení. Je-li y + y resp. y řešení odpovídající vstupním datům x + x resp. x, potom číslo Cp = y y x x = |relativní chyba na výstupu| |relativní chyba na vstupu| (kde místo absolutních hodnot mohou být obecně normy, viz kap. 1) nazýváme číslem podmíněnosti úlohy y = U(x). Je-li Cp 1, je úloha velmi dobře podmíněna. Pro velká Cp (> 100) je úloha špatně podmíněna. Posuďme nyní z hlediska dobré či špatné podmíněnosti výpočet hodnoty y = sin x. Číslo podmíněnosti je v tomto případě dáno vztahem Cp = y y x x = sin(x + x) - sin x sin x x x = sin(x + x) - sin x x x sin x . Nechť x 0 a zabývejme se výpočtem sin x a) v okolí bodu 0, b) v okolí bodu . a) V okolí bodu 0 je Cp | cos x| x sin x 1. b) V okolí bodu Cp = x cos x sin x = |x cotg x| +. Speciálně pro x = 3,14, x = 0,01 se dá ukázat ([18]) Cp 1972. Úloha stanovit sin x v okolí 0 je dobře podmíněna a v okolí bodu je špatně podmíněna. § 0.4. Realizace numerických výpočtů Následující příklady ukazují na problémy, které se mohou objevit při realizaci numerických výpočtů. 10 ÚVOD Příklad 0.5. Počítejme rozdíl dvou čísel x = 0,54617 a y = 0,54601. Přesná hodnota rozdílu je d = 0,00016. Uvažujme nyní čísla zaokrouhlená: ~x = 0,5462, ~y = 0,5460. Nyní je ~d = ~x - ~y = 0,0002. Relativní chyba je v tomto případě |d - ~d| |d| = 0,25 a je tedy dosti velká. Co se zde stalo? Čísla ~x a ~y jsou ,,téměř stejná (při zaokrouhlení na 4 cifry). Při odčítání platné cifry se vyruší a zůstanou ,,méně významné cifry. Tento jev se nazývá ,,katastrofické zrušení a vyskytuje se v případech, kdy odečítáme přibližně dvě stejná čísla. Ale při konkrétních výpočtech můžeme tento jev eliminovat. Uvažujme například kvadratickou rovnici ax2 + bx + c = 0, a = 0. Kořeny této rovnice jsou x1 = -b + b2 - 4ac 2a , x2 = -b - b2 - 4ac 2a . Je jasné, že v případě, kdy -b a b2 - 4ac jsou ,,blízká čísla, výpočet x2 může být velmi negativně ovlivněn ,,katastrofickým zrušením . Tomuto problému se můžeme vyhnout tak, že počítáme kořeny následujícím způsobem: x1 = -b - sign (b) b2 - 4ac 2a , x2 = c ax1 . Příklad 0.6. Počítejme integrál En = 1 0 xn ex-1 dx pro n = 1, 2, 3, . . . Integrací per partes dostaneme En = 1 0 xn ex-1 dx = xn ex-1 1 0 - 1 0 nxn-1 ex-1 dx, neboli En = 1 - nEn-1. Jelikož E1 = 1/e, lze užitím této formule vypočítat En pro n = 2, 3, . . . § 0.5. Stabilita algoritmů 11 Nechť E1 = 0,367879 (tj. hodnota 1/e je zaokrouhlena na 6 cifer). Pak E2 = 0,264242 E3 = 0,207274 ... E9 = -0,0684800 I když je integrand kladný, je hodnota integrálu záporná! Tento jev můžeme vysvětlit takto: Ze vztahu E2 = 1 - 2E1 plyne, že chyba při výpočtu E2 je (-2)krát větší než chyba při výpočtu E1, dále chyba při výpočtu E3 je (-3)krát větší než chyba při výpočtu E2 atd. To znamená, že chyba při výpočtu E9 je (-2)(-3) . . . (-9) = 9! větší než chyba v E1. Tedy chyba v E1, která je přibližně 4,412 × 10-7 , vede na chybu 9! 4,412 × 10-7 0,1601, což znamená dosti velkou chybu. Užitím uvedené rekurentní formule došlo ke značné kumulaci chyby. Toto je obecný problém tzv. trojčlenných rekurentních formulí. Doporučený postup je následující. Přepišme uvedenou formuli ve tvaru En-1 = 1 - En n , n = . . . , 3, 2. Pak chyba bude na každém kroku redukována faktorem 1/n. Začneme větší hodnotou n a postupujeme zpětně. Je třeba ovšem ,,odhadnout tuto ,,startovací hodnotu. Všimněme si, že En = 1 0 xn ex-1 dx 1 0 xn dx = 1 n + 1 . Tedy pro n = 20 je E20 1/21 a lze položit E20 = 0. Nyní užitím formule En-1 = (1 - En)/n dostaneme E9 = 0,0916123 a tato hodnota má 6 platných cifer. § 0.5. Stabilita algoritmů Z předchozích příkladů je zřejmé, že velká nepřesnost vypočtených výsledků byla způsobena užitím nevhodného algoritmu, neboť při změně algoritmu byly vypočtené výsledky zcela vyhovující. S tím souvisí otázky stability algoritmů. Definice 0.2. Algoritmus se nazývá stabilní, jestliže vypočtené řešení je přesným řešením ,,blízkého problému, tj. řešením problému s blízkými vstupními daty. Tento pojem stability vysvětlíme na následujícím příkladě. Příklad 0.7. Víme, že fl(x + y) = (x + y)(1 + ) = x(1 + ) + y(1 + ) = x + y . Tedy vypočtený součet dvou čísel x, y v pohyblivé řádové čárce je přesný součet jiných dvou čísel x a y . Jelikož || , jsou čísla x a y blízká číslům x, y. Tedy operace sčítání dvou čísel v pohyblivé řádové čárce je stabilní. 12 ÚVOD O stabilitě konkrétních algoritmů pojednáme v dalších kapitolách při realizaci jednotlivých numerických metod. Výše uvedenými příklady nechceme čtenáře odradit od studia a používání numerických metod. Cílem bylo pouze upozornit na možná ,,úskalí při realizaci numerických metod a ukázat způsoby, jak tyto problémy překonat. Velmi pěkně jsou některé patologické jevy v numerické matematice objasněny v monografii [15]. § 0.6. Symbolika O, o Závěrem této kapitoly ještě uvedeme symboliku O a o, která se často používá pro vyjádření chyb matematických výrazů (viz např. [9]). Nechť je funkce (reálná nebo komplexní) definovaná v okolí bodu a (může být i ). Nechť je funkce kladná v prstencovém okolí bodu a. Symbol (x) = O((x)) pro x a (0.9) značí, že lim sup xa |(x)| (x) < . Podobně symbol (x) = o((x)) pro x a (0.10) označuje, že lim xa |(x)| (x) = 0 . Podobně je možné definovat výraz an = O(bn) nebo an = o(bn) pro n , kde an, bn jsou prvky posloupností. Dodatek ,,pro x a se často vynechává, pokud je jasné, o které a se jedná. Je to zejména v případech a = 0 či a = , případně u posloupností, kde je zřejmé, že n . Často používaný výraz je také O(hk ), resp. o(hk ), kde (h) = hk , přičemž zpravidla h 0. Při počítání s výrazy obsahující symboly O a o platí následující pravidla: O((x)) + O((x)) = O((x)) o((x)) + o((x)) = o((x)) O((x)) O((x)) = O((x) (x)) O((x)) o((x)) = o((x) (x)) o((x)) = O((x)) Cvičení k úvodní kapitole 13 Tyto rovnice nejsou symetrické, platí jen zleva doprava. Např. poslední rovnice značí, že funkce splňující rovnici (0.10) splňuje také rovnici (0.9). Opačně to ovšem neplatí. Pokud za funkci (x) vezmeme konstantu 1, dostáváme výrazy (x) = O(1) a (x) = o(1). První z nich znamená, že funkce je omezená v okolí bodu a, druhý, že má limitu 0 v bodě a. Cvičení k úvodní kapitole 1. Najděte primární chybu, která vznikne, jestliže přibližných čísel je použito k výpočtu: a) součtu n čísel b) součinu n čísel c) podílu dvou čísel d) mocniny čísla, kdy exponent je znám přesně 2. Nechť je dáno n čísel ~a1, . . . , ~an, kde ~ai je správně zaokrouhleno na di desetinných míst. Chceme spočítat součet na d = min i di desetinných míst. Ukažte, že je výhodnější nejprve všechna čísla sečíst a výsledek zaokrouhlit na d míst, než napřed každé číslo ~ai zaokrouhlit na d míst a pak sečíst. 3. Buďte ~x resp. ~y čísla v absolutní hodnotě menší než 1 a správně zaokrouhlena na 2d resp. d desetinných míst. Nechť |~x| < |~y|.Chceme spočítat podíl ~x/~y na d desetinných míst. Ukažte, že použití 2d-místného dělence je výhodnější, než když dělence nejdříve zaokrouhlíme na d míst a pak dělíme. 14 ÚVOD Kapitola 1 Normy vektorů a matic Nechť Cn resp. Rn je vektorový prostor všech uspořádaných n-tic komplexních resp. reálných čísel. Prvky tohoto prostoru budeme zapisovat ve tvaru sloupcových vektorů. Definice 1.1. Vektorová norma na Cn je funkce (z Cn do R) s následujícími vlastnostmi: 1) x 0, x Cn 2) x = 0 x = o, o = (0, . . . , 0)T 3) x = || x , C, x Cn 4) x + y x + y , x, y Cn . Příklady vektorových norem: 1) x 2 = n i=1 |xi|2 1 2 (eukleidovská norma) 2) x 1 = n i=1 |xi| (oktaedrická norma) 3) x = max 1i n |xi| (krychlová norma) Každá vektorová norma indukuje metriku danou vztahem (x, y) = x - y . Připomeňme ještě definici konvergence posloupnosti vektorů vzhledem k dané normě. Definice 1.2. Řekneme, že posloupnost {xk } k=1 vektorů z Cn konverguje k vektoru x Cn vzhledem k normě , jestliže pro libovolné > 0 existuje index N = N() tak, že xk - x < 16 1. NORMY VEKTORŮ A MATIC pro k N(). Nechť A je čtvercová matice řádu n s reálnými resp. komplexními prvky, tj. A = a11 a1n a21 a2n ... ... an1 ann . Označme Mn třídu všech matic tohoto typu. Matici A lze považovat za vektor dimenze n2 . Mohli bychom tedy definovat normu matice jako normu vektoru. Ale z hlediska pozdějších aplikací je vhodnější požadovat, aby norma matice splňovala další vlastnosti. Z těchto důvodů definujeme maticovou normu takto: Definice 1.3. Maticová norma na množině Mn je reálná funkce s těmito vlastnostmi: 1) A 0, A Mn 2) A = 0 A je nulová matice 3) A = || A , C, A Mn 4) A + B A + B , A, B Mn 5) AB A B , A, B Mn Vlastnost 5) se nazývá multiplikativnost. Někdy je vhodné požadovat, aby norma matice nějakým způsobem ,,souvisela s normou vektoru. Tuto vlastnost nazýváme souhlasnost a její definice je následu- jící: Definice 1.4. Řekneme, že maticová norma je souhlasná s danou vektorovou normou , jestliže Ax A x , x Cn , A Mn. Věta 1.1. Nechť je vektorová norma na Cn . Pak číslo A = max x =1 Ax je maticová norma souhlasná s danou vektorovou normou . Tato norma se nazývá přidružená k dané vektorové normě. Důkaz. Norma je spojitá funkce vektoru x. Protože Ax je rovněž vektor, je funkce Ax spojitá, a tedy dosáhne na uzavřené omezené množině = {x: x = 1} svého maxima. To znamená, že existuje vektor x0 Cn , x0 = 1, tak, že Ax0 = max x =1 Ax . 17 Tím je dokázána existence čísla A . Nyní ukážeme, že jsou splněny všechny axiomy maticové normy. 1) Nechť A O, kde O je nulová matice. Pak existuje vektor ^x Cn , ^x = 1 takový, že A^x = o a tedy A^x > 0. Proto A = max x =1 Ax A^x > 0. 2) Je zřejmé, že A = 0 A je nulová matice. 3) Pro libovolné C platí A = max x =1 (A)x = max x =1 || Ax = || A . Než dokážeme, že je splněn čtvrtý axiom, ukážeme, že norma A je souhlasná s danou vektorovou normou. Nechť y = o je libovolný vektor z Cn . Vektor x = y/ y má normu rovnu jedné. Pak Ay = A(x y ) = y Ax y A . Tedy norma A je souhlasná s danou vektorovou normou. 4) Nechť ~x Cn , ~x = 1, je takový vektor, že (A + B)~x = max x =1 (A + B)x . Je tedy A + B = (A + B)~x A~x + B~x max x =1 Ax + max x =1 Bx = A + B . 5) Pro matici AB najdeme vektor x Cn , x = 1, takový, že (AB)x = max x =1 (AB)x . Pak je AB = (AB)x = A(Bx) A Bx A B x = A B . 2 Věta 1.2. Přidružená maticová norma je nejvýše rovna libovolné maticové normě souhlasné s danou vektorovou normou. 18 1. NORMY VEKTORŮ A MATIC Důkaz. Nechť je maticová norma souhlasná s danou vektorovou normou . Pak platí Ax A x . Víme, že existuje takový vektor x0 Cn , že x0 = 1, A = Ax0 a odtud plyne A = Ax0 A x0 = A , a tedy A A . 2 Věta 1.3. Nechť maticová norma je souhlasná s danou vektorovou normou . Pak pro všechna vlastní čísla matice A platí: || A . Důkaz. Nechť x je vlastní vektor matice A odpovídající (nenulovému) vlastnímu číslu , tj. Ax = x. Pak je x = || x = Ax A x , jelikož x = 0, je || A . 2 Definice 1.5. Nechť 1, . . . , n jsou vlastní čísla matice A. Číslo (A) = max 1i n |i| se nazývá spektrální poloměr matice A. Věta 1.4. Nechť A Mn. Přidružené maticové normy k vektorovým normám 1, , 2 jsou dány vztahy (i) A 1 = max 1jn n i=1 |aij|, (ii) A = max 1i n n j=1 |aij|, (iii) A 2 = (AA), (A A) je spektrální poloměr A A, kde A = A T , pro reálné matice je A = AT . Důkaz viz [5]. Poznámka 1. Norma A 2 se nazývá spektrální norma matice A. Nechť E Mn je jednotková matice. Zřejmě E = max x =1 Ex = 1 a pro souhlasnou maticovou normu platí E 1. 19 Důležitou normou souhlasnou s vektorovou normou 2 je Frobeniova norma: A F = n j=1 n i=1 |aij|2 1 2 . Zřejmě platí E F = n. Stopa matice A (tr A) je definována jako součet diagonálních prvků, tr A = n i=1 aii. Odtud plyne, že A 2 F = tr(A A). Dále lze ukázat, že pro maticové normy platí tyto ekvivalentní vztahy ([5]): 1. 1 n A A 2 n A 2. A 2 A F n A 2 3. 1 n A 1 A 2 n A 1 . Příklad 1.1. Vypočtěte normy A 2, A 1, A a A F pro matici A = 1 3 -2 4 . Řešení. Je zřejmě A 1 = 7, A = 6. Dále AT A = 10 10 10 20 1,2 = 3 10 5 2 (AT A) . = 12.680340 A 2 . = 3.5609465 . Dále A F = (1 + 9 + 4 + 16)1/2 . = 5.4772256. Příklad 1.2. Nechť R je reálná ortogonální matice, tj. RT R = E, RT = R-1 . Vypočtěte R 2 a AR 2, A Mn. Řešení. Je R 2 2 = (RT R) = (E) = 1. Dále AR 2 2 = ((AR)T AR) = (RT AT AR) = (R-1 AT AR) . Transformace R-1 AT AR je podobnostní transformace, která nemění vlastní čísla matice. Odtud plyne, že spektrální poloměr matice R-1 AT AR je roven spektrálnímu poloměru matice AT A. To znamená, že AR 2 2 = (R-1 AT AR) = (AT A) = A 2 2 . Věta 1.5. Nechť B < 1, je souhlasná s danou vektorovou normou. Pak matice E - B je regulární a platí (E - B)-1 E 1 - B . 20 1. NORMY VEKTORŮ A MATIC Důkaz. Vlastní čísla matice B jsou řešením charakteristické rovnice det(B E) = 0. Odtud 0 = det(B - E) = det(B - E + E - E) = = det(B - E - ( - 1)E). Tedy matice B - E má vlastní čísla - 1. Protože (B) B < 1, jsou všechna tato vlastní čísla různá od nuly a tedy matice B - E i E - B jsou regulární. Nyní E = (E - B)(E - B)-1 = (E - B)-1 - B(E - B)-1 . Odtud E (E - B)-1 - B(E - B)-1 (E - B)-1 - B (E - B)-1 a tedy (E - B)-1 E 1 - B . 2 Poznámka 2. Jestliže maticová norma uvažovaná v předchozí větě je přidruženou maticovou normou, pak (E - B)-1 1 1 - B . Důsledek. Je-li (B) < 1, je matice E - B regulární. Důkaz plyne ihned z výše dokázaného faktu, že vlastní čísla matice E -B jsou různá od nuly. Cvičení ke kapitole 1 1. Nechť v rovině jsou dány dva vektory u, v. Najděte geometrické místo vektorů w takových, že u - w = v - w . Sestrojte tato geometrická místa pro normy 1, 2, v případě, že u = (0, 0)T , a) v = (1, 1)T , b) v = (1, 1 2 )T , c) v = (1, 0)T . 2. Ověřte, že funkce definovaná na množině Mn vztahem A = n i,j=1 |aij|p 1 p je maticová norma právě tehdy, když 1 < p 2. Cvičení ke kapitole 1 21 3. Nechť A = (a1, . . . , an), kde aj je j-tý sloupec matice A. Dokažte, že A 2 F = n i=1 ai 2 2 . 4. Pro matici A = 2 1 1 2 3 2 1 1 2 vypočtěte A 1, A 2 a A . (Řešení: A 1 = 5, A 2 = (AT A) = 5, 203 527, A = 7.) 5. Nechť k matici A existuje inverzní matice A-1 . Ukažte: a) Je-li = 0 vlastní číslo matice A, x je příslušný vlastní vektor, pak 1/ je vlastní číslo matice A-1 s vlastním vektorem x. b) Pro libovolnou přidruženou maticovou normu platí 1 A-1 ||. 6. Nechť R je reálná ortogonální matice. dokažte, že pak AR F = A F . (Řešení: AR 2 F = tr((AR)T AR) = tr(RT AT AR). Na druhé straně tr(A) = n i=1 i, kde i jsou vlastní čísla matice A. Jelikož matice AT A a RT AT AR mají stejná vlastní čísla, je tr(AT A) = tr(RT AT AR) a tedy AR F = A F .) 7. Ukažte, že spektrální norma symetrické matice je rovna jejímu spektrálnímu poloměru. (Řešení: Je-li A symetrická matice, pak jsou všechna její vlastní čísla reálná. Jsou-li 1,. . . ,n vlastní čísla této matice, pak matice A2 = AT A má vlastní čísla 2 1,. . . ,2 n. Pak A 2 2 = (AT A) = (A2 ) = max 1in 2 i = 2 (A) ) 8. Nechť P a Q jsou ortogonální matice. Pak platí: a) QAP F = A F b) QAP 2 = A 2 (Řešení: a) QAP 2 F = tr((QAP)T QAP) = tr((AP)T QT QAP) = tr((AP)T AP), neboť QT Q = E. Stopa matice je invariantní vzhledem k podobnostní transformaci a z toho plyne (viz cvičení 6), že tr((AP)T AP) = tr(AT A) = A 2 F . b) QAP 2 2 = ((QAP)T QAP) = ((AP)T QT QAP) = (PT AT AP) = (AT A) = A 2 2 (viz př. 1.2) ) 22 1. NORMY VEKTORŮ A MATIC Kontrolní otázky ke kapitole 1 1. Může být maticová norma definována vztahem A = max 1i,jn |aij| ? Ilustrujte na příkladě. 2. Je Frobeniova norma přidružená k vektorové normě 2? 3. Nechť Q Mn je ortogonální matice. Pak Qx 2 = x 2. Dokažte. Platí toto tvrzení i pro normy 1, , F ? Kapitola 2 Řešení nelineárních rovnic Tato kapitola se bude zabývat numerickými metodami řešení nelineárních algebraických a transcendentních rovnic v případech, kdy přesné řešení nelze získat algebraickými metodami. Budeme se tedy zabývat hledáním kořenů, zejména reálných, rovnice f(x) = 0, (2.1) kde x je reálná proměnná a f je v nějakém smyslu ,,rozumná funkce. Číslo , které je řešením rovnice (2.1) budeme nazývat kořenem funkce. Při hledání kořenů lze postupovat takto: A) Separace kořenů, tj. nalezení intervalů, ve kterých leží vždy právě jeden kořen rovnice (2.1). B) Zpřesnění těchto kořenů. Pro separaci kořenů lze užít známé věty z matematické analýzy: Věta 2.1. Nechť f C[a, b] a nechť f nabývá v koncových bodech intervalu hodnot s opačnými znaménky, tj. f(a)f(b) < 0. Pak uvnitř tohoto intervalu leží alespoň jeden kořen rovnice (2.1). Jestliže existuje f a má konstantní znaménko v tomto intervalu, pak existuje právě jeden kořen (a, b). Při separaci kořenů postupujeme tak, že nejdříve určíme znaménka funkce f v hraničních bodech jejího definičního oboru. Pak určujeme znaménka funkce v bodech, jejichž volba je určena chováním funkce f. § 2.1. Metoda bisekce Na větě 2.1 je založena velmi jednoduchá numerická metoda pro nalezení kořenů -- metoda bisekce neboli metoda půlení. Popišme nyní stručně tuto metodu. 24 2. ŘEŠENí NELINEÁRNíCH ROVNIC Nechť f C[a, b] a nechť f(a)f(b) < 0. Podle věty 2.1 leží v intervalu [a, b] alespoň jeden kořen rovnice f(x) = 0. Předpokládejme pro jednoduchost, že tento kořen je jediný. Položme a0 = a, b0 = b, s0 = 1 2 (a0 + b0). Je-li f(a0)f(s0) < 0, leží kořen v intervalu [a0, s0] a položíme a1 = a0, b1 = s0 a postup opakujme pro interval [a1, b1]. Je-li f(s0)f(b0) < 0, leží kořen v intervalu [s0, b0] a položíme s0 = a1, b0 = b1 a postup opakujme pro interval [a1, b1]. Je-li f(s0) = 0, je s0 = a kořen je nalezen. Tímto způsobem dostaneme posloupnost intervalů [a0, b0] [a1, b1] . . . [an, bn] . . . , přičemž f(an)f(bn) < 0, n = 0, 1, . . . Pro koncové body těchto intervalů platí a0 a1 a2 . . . an an+1 . . . . . . bn+1 bn . . . b0 a délky těchto intervalů jsou dány vztahem bn - an = b0 - a0 2n , n = 1, 2, . . . Protože posloupnosti {an}, {bn} jsou omezené, monotonní a délka intervalů [an, bn] konverguje k nule, platí lim n bn = lim n an = . Nyní snadno ukážeme, že je kořenem rovnice f(x) = 0. Funkce f je spojitá a platí f(an)f(bn) < 0, n = 0, 1, . . .. Odtud lim n f(bn)f(an) = f2 () 0, ale odtud plyne, že f() = 0. Z uvedeného postupu rovněž plyne, že |sn - | b - a 2n+1 , sn = an + bn 2 . Je totiž [an, bn], bn - an = (b - a)/2n a tudíž |sn - | (bn - an)/2 = (b - a)/2n+1 . Uvedené úvahy můžeme zformulovat v následující větě. Věta 2.2. Nechť f C[a, b], f(a)f(b) < 0 a nechť f má v intervalu [a, b] jediný kořen . Pak metoda bisekce generuje posloupnost sn = (an +bn)/2, n = 0, 1, 2, . . ., která konverguje ke kořenu a aproximuje kořen takto: |sn - | b - a 2n+1 . (2.2) § 2.1. Metoda bisekce 25 Než uvedeme příklad na ilustraci metody bisekce, zmíníme se o problému zastavení výpočtu při použití numerické metody pro nalezení kořene. Předpokládejme, že numerická metoda generuje posloupnost {xk } konvergující ke kořenu a nechť je dána požadovaná přesnost > 0. Jako kritérium pro zastavení výpočtu lze především doporučit | xk+1 - xk xk | < (2.3) nebo |xk+1 - xk | < (2.4) |f(xk )| < (2.5) Kritéria (2.4) a (2.5) nejsou obecně vždy vhodná, neboť i když |xk+1 - xk | < , nemusí také být |xk+1 -| < a totéž platí pro kritérium (2.5). Z těchto důvodů je nejvhodnějším kritériem pro zastavení výpočtů kritérium (2.3). Na druhé straně, u některých dále uvedených metod lze bez problémů použít kritérium (2.4), nebo je vhodné současné použití (2.4) a (2.5) (viz obrázek 2.1). Rovnice f(x) = x3 - x - 1 má podle věty 2.1 v intervalu [1, 2] právě jeden kořen. Podle Cardanových vzorců je tento kořen dán vztahem = + , = 3 1 2 + 23 6 3 , = 3 1 2 - 23 6 3 , tj. 1,3247179572447. Tuto rovnici budeme v této kapitole považovat v jistém smyslu za ,,testovací pro jednotlivé metody, to znamená, že tyto metody budeme aplikovat na nalezení kořene této rovnice. Příklad 2.1. Metodou bisekce najděte kořen funkce f(x) = x3 - x - 1 ležící v intervalu [1, 2] (obr. 2.2). n an bn bn - an 0 1,000000 2,000000 1,000000 1 1,000000 1,500000 0,500000 2 1,250000 1,500000 0,250000 3 1,250000 1,375000 0,125000 4 1,312500 1,375000 0,062500 5 1,312500 1,343750 0,031250 6 1,312500 1,328125 0,015625 7 1,320312 1,328125 0,007812 Je tedy s7 = 1,3242185 a pro chybu aproximace platí |s7 - | 1/28 . 26 2. ŘEŠENí NELINEÁRNíCH ROVNIC 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 x0 x1 x2 xk xk+1 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 x0 x1 x2 xk xk+1 Horizontální konvergenční pás: |f(x)| < Vertikální konvergenční pás: |x - | < 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 x0 x1 x2 xk xk+1 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 x0 x1 x2 xk xk+1 Neomezená oblast: |f(x)| < |x - | < Obdélníková oblast: |f(x)| < |x - | < Obr. 2.1: Kritéria k zastavení iteračního procesu Poznámka 1. Při aplikaci metody bisekce je třeba věnovat pozornost ověření předpokladů: f C[a, b], f(a)f(b) < 0. Následující příklad ukazuje, jaké problémy mohou nastat při nesplnění některého z předpokladů. Příklad 2.2. Užitím metody bisekce najděte kořen funkce f(x) = 4x-7 (x-2)2 . Řešení: Kořen leží v intervalu [1, 5; 2, 5], neboť f(1, 5) < 0, f(2, 5) > 0. Položme a0 = 1, 5, b0 = 2, 5. Pak s0 = (1, 5 + 2, 5)/2 = 2, ale funkce f(x) = (4x - 7)/(x - 2)2 není definována v bodě x = 2. Metoda bisekce ,,selhala , neboť daná funkce není spojitá na [1, 5; 2, 5] (obr. 2.3). Vhodný interval pro použití metody bisekce je [1, 5; 1, 9]. Opět platí f(1, 5) < 0, f(1, 9) > 0, ale funkce f C[1, 5; 1, 9]. Metodou bisekce s počátečními hodnotami a0 = 1, 5, b0 = 1, 9 získáme posloupnost s0 = 1, 7, s1 = 1, 8, s2 = 1, 75. Hodnota s2 = 1, 75 je hledaný kořen . § 2.2. Metoda prosté iterace Nyní se budeme zabývat iteračními metodami pro nalezení kořenů rovnice (2.1). § 2.2. Metoda prosté iterace 27 0 1 2 3 -1 0 1 2 3 4 5 x y a0 b0 0 1 2 3 -1 0 1 2 3 4 5 xy a1 b1 0 1 2 3 -1 0 1 2 3 4 5 x y a2 b2 0 1 2 3 -1 0 1 2 3 4 5 x y a3 b3 3 3 0 1 2 3 -1 0 1 2 3 4 5 x y a4 b4 0 1 2 3 -1 0 1 2 3 4 5 x y a5 b5 Obr. 2.2: Metoda bisekce 28 2. ŘEŠENí NELINEÁRNíCH ROVNIC 1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5 -10 0 10 20 30 40 50 60 70 80 90 100 Obr. 2.3: Graf funkce f(x) = 4x-7 (x-2)2 Tyto metody jsou založeny na řešení ekvivalentní úlohy x = g(x), tj. na nalezení pevných bodů funkce g. Bod je pevným bodem funkce g jestliže g() = . Ekvivalentnost úloh x = g(x) a f(x) = 0 znamená: jestliže je pevný bod funkce g, pak je kořen funkce f a naopak. Nejdříve se budeme zabývat iteračními metodami pro nalezení pevného bodu a pak volbou vhodné funkce g. Věta 2.3. Nechť g C[a, b], g : [a, b] [a, b]. Pak funkce g má v intervalu [a, b] pevný bod. Jestliže g splňuje navíc Lipschitzovu podmínku s konstantou q, 0 q < 1 |g(x) - g(y)| q |x - y| , x, y [a, b], pak g má v intervalu jediný pevný bod. Důkaz. Jestliže g(a) = a nebo g(b) = b, je existence pevného bodu zřejmá. Předpokládejme nyní, že g(a) > a, g(b) < b a uvažujme funkci h, h(x) = g(x) - x. Zřejmě h C[a, b] a dále h(a) = g(a) - a > 0, h(b) = g(b) - b < 0. Z vlastností spojitých funkcí plyne, že existuje bod (a, b) tak, že h() = 0, tj. g() - = 0 = g() a tedy je pevný bod funkce g. Nechť funkce g splňuje Lipschitzovu podmínku s konstantou q, 0 q < 1. Předpokládejme, že existují dva pevné body , . Nyní pro tyto body platí | - | = |g() - g()| q | - | < | - | , což je spor a odtud plyne, že = . 2 Důsledek. Nechť g C1 [a, b], g: [a, b] [a, b] a |g (x)| q < 1, x [a, b]. Pak g má v intervalu [a, b] jediný pevný bod. § 2.2. Metoda prosté iterace 29 Důkaz ihned plyne aplikací věty o střední hodnotě: |g(x) - g(y)| = |g ()| |x - y| q|x - y|, (a, b). Poznámka 2. Předpoklady uvedené ve větě 2.3 jsou postačující, ale nikoliv nutné pro jednoznačnost pevného bodu. Příklad 2.3. Je dána funkce g(x) = 3-x , g (x) = -3-x ln 3 < 0 na [0, 1]. Funkce g je tedy klesající na intervalu [0, 1]. Dále g(1) = 1 3 g(x) 1 = g(0). Odtud plyne, že funkce g zobrazuje interval [0, 1] do sebe. Dále g (0) = - ln 3 . = -1, 09861, a tedy |g (x)| q < 1 na intervalu [0, 1]. Ale je jasné, že pevný bod je jediný, neboť g je klesající (viz obrázek). Jak je třeba ,,zúžit interval, aby byla splněna podmínka |g (x)| q < 1 (viz obrázek 2.4)? 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 g(x)=3 -x y=x Obr. 2.4: Graf funkce g(x) = 3-x Poznámka 3. Řešit rovnici x = g(x) geometricky znamená hledat průsečík přímky y = x s křivkou y = g(x). Zabývejme se nyní numerickými metodami určení pevného bodu funkce g. Nechť g C[a, b], g : [a, b] [a, b] a zvolme libovolnou počáteční aproximaci x0 [a, b]. Generujme posloupnost {xk } k=0 takto: xk+1 = g(xk ), k = 0, 1, 2, . . . (2.6) Funkci g nazýváme iterační funkcí a metodu (2.6) iterační metodou nebo také metodou prosté iterace. Iterační metoda (2.6) patří mezi jednokrokové iterační metody, neboť výpočet xk+1 závisí pouze na jedné předchozí aproximaci xk . Obecně jsou funkcionální iterační metody tvaru xk+1 = g(xk , xk-1 , . . . , xk-j+1 ), j 2. (2.7) Tyto metody nazýváme j-krokovými metodami. 30 2. ŘEŠENí NELINEÁRNíCH ROVNIC Otázkou nyní je, za jakých předpokladů bude iterační posloupnost1 (2.6) resp. (2.7) konvergovat a jak rychle bude tato posloupnost konvergovat k pevnému bodu . V další části této kapitoly bude mít značný význam řád iterační metody jako ,,míra rychlosti konvergence metody. Definujme nejdříve chybu k-té iterace vzta- hem ek = xk - . Předpokládejme nyní, že metoda (2.7) je konvergentní: lim k xk = . Existuje-li nyní reálné číslo p 1 takové, že platí lim k xk+1 - |xk - | p = lim k |ek+1| |ek| p = C 0, řekneme, že daná iterační metoda je řádu p pro bod . Konstanta C se nazývá asymptotickou konstantou chyby a závisí na funkci g. Požadavek C 0 znamená, že C = 0 pro obecnou funkci g. Tento požadavek zaručuje jednoznačnost čísla p. Jestliže pro nějakou funkci g je konstanta C rovna nule, pak iterační metoda konverguje rychleji než obvykle. Zabývejme se nyní jednokrokovými iteračními metodami. Následující věta ukazuje, že řád těchto metod je přirozené číslo. Věta 2.4. Nechť funkce g má v okolí bodu derivace až do řádu p 1 včetně. Iterační metoda xk+1 = g(xk ), k = 0, 1, . . . je řádu p tehdy a jen tehdy, když platí = g(), g(j) () = 0, 1 j < p, g(p) () = 0. Důkaz. Vyjádříme funkci g v okolí bodu pomocí Taylorova vzorce g(xk ) = + (xk - )g () + . . . + (xk - )p-1 (p - 1)! g(p-1) () + (xk - )p p! g(p) () = = + (xk - )p p! g(p) (), (2.8) kde bod leží v intervalu určeném body xk a . Protože xk+1 = g(xk ), dostaneme z předchozího vztahu xk+1 - = (xk - )p p! g(p) (), (2.9) a tedy lim k xk+1 - |xk - | p = g(p) () p! 0. 1Někdy také říkáme, že ,,iterační metoda konverguje místo ,,posloupnost konverguje . § 2.2. Metoda prosté iterace 31 Metoda je tedy řádu p 1, p přirozené číslo. Z druhé strany: Nechť pro některé j, 1 j < p, platí g(j) () = 0. Pak z (2.8) plyne, že metoda nemůže být řádu p. Rovněž, jestliže g(p) () = 0, pak z (2.9) plyne, že metoda není řádu p. 2 Věta 2.5. Nechť jsou splněny předpoklady věty 2.3. Pak pro libovolnou počáteční aproximaci x0 [a, b] je posloupnost {xk } k=0, xk = g(xk-1 ), konvergentní a platí lim k xk = , kde je pevný bod funkce g. Důkaz. Funkce g zobrazuje interval [a, b] do sebe. Odtud plyne, že posloupnost {xk } k=0 je definována pro všechna k 0 a xk [a, b] pro všechna k 0. Dále xk - = g(xk-1 ) - g() q xk-1 - . Indukcí odtud plyne, že xk - qk x0 - . Jelikož 0 q < 1, je lim k xk - = 0, a tedy posloupnost xk k=0 konverguje k pevnému bodu . 2 Důsledek. Nechť funkce g splňuje předpoklady věty 2.3. Pak pro posloupnost {xk } k=0, x0 [a, b], xk = g(xk-1 ), platí xk - qk 1 - q x0 - x1 , k 1. (2.10) Důkaz. Z konstrukce iterační posloupnosti plyne: xk+1 - xk = g(xk ) - g(xk-1 ) q xk - xk-1 . . . qk x1 - x0 . Dále pro m > k 1 xm - xk xm - xm-1 + xm-1 - xm-2 + . . . + xk+1 - xk qm-1 x1 - x0 + qm-2 x1 - x0 + . . . + qk x1 - x0 = = qk 1 + q + . . . + qm-k-1 x1 - x0 . Jelikož jsou splněny předpoklady věty 2.5 o konvergenci iteračního procesu, je lim m xm = a platí - xk = lim m xm - xk qk x1 - x0 i=0 qi = qk 1 - q x1 - x0 . 2 Je zřejmé, že věta 2.5 je důsledkem známé Banachovy věty o pevném bodě. 32 2. ŘEŠENí NELINEÁRNíCH ROVNIC Poznámka 4. Rychlost konvergence závisí na faktoru qk /(1 - q). Je-li q malé, rychlost je větší. Pro q blízké 1 je konvergence pomalá. Vztahu (2.10) lze užít jako kriteria pro zastavení výpočtu. Podívejme se nyní na problematiku iteračních procesů a pevných bodů z geometrického hlediska. Uvedeme klasifikaci pevných bodů. Tato klasifikace je poměrně hrubá, ale pro naše účely je postačující. Definice 2.1. Pevný bod funkce g C[a, b] se nazývá a) přitahující (atraktivní) pevný bod, jestliže existuje takové okolí V tohoto bodu , že pro každou počáteční aproximaci x0 V posloupnost iterací xk k=0 konverguje k bodu . b) odpuzující (repulzivní) pevný bod, jestliže existuje takové okolí U bodu , že pro každou počáteční aproximaci x0 U, x0 = , existuje takové k, že xk U. Následující věta uvádí, kdy je pevný bod přitahující a kdy je odpuzující. Věta 2.6. Nechť g C[a, b], g : [a, b] [a, b] a nechť je pevný bod. a) Jestliže pro všechna x = z nějakého okolí V bodu platí g(x) - g() x - < 1, (2.11) pak je přitahující pevný bod. b) Jestliže pro všechna x = z nějakého okolí U bodu platí g(x) - g() x - > 1, (2.12) pak je odpuzující pevný bod. Důkaz viz [20]. Důsledek. Nechť g C[a, b], g : [a, b] [a, b] a nechť g má v bodě derivaci. a) Je-li |g ()| < 1, pak je přitahující pevný bod. b) Je-li |g ()| > 1, pak je odpuzující pevný bod. Obrázky 2.8 a 2.9 znázorňují přitahující a odpuzující body funkce g(x) = Ax(1 - x). Případ |g ()| = 1 je třeba vyšetřovat zvlášť. Může nastat situace, že při počáteční iteraci na jedné straně okolí bodu proces konverguje a na druhé straně diverguje (viz obr. 2.5). Úmluva. Pro iterační proces platí x1 = g(x0 ), x2 = g(x1 ) = g g(x0 ) , x3 = g g g(x0 ) . § 2.2. Metoda prosté iterace 33 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 2 2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 Obr. 2.5: Případ g() = 1 Obecně lze iteraci xk+1 definovat rekurzívně takto: xk+1 = gk+1 (x0 ), přičemž g1 (x) = g(x), gk+1 (x) = g gk (x) . Funkce gk se nazývá k-tá iterace funkce g (viz obr. 2.6). 0 0.2 0.4 0.6 0.8 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 g 3 (x) g 2 (x) g4 (x) g(x) y=x Obr. 2.6: Grafy iterací funkce g(x) = 3,5x(1 - x) Doposud jsme se zabývali otázkami konvergence a divergence posloupnosti xk . Ale někdy je užitečné zabývat se posloupnostmi, které jsou periodické. Základním pojmem je zde pojem cyklu a jeho řádu. 34 2. ŘEŠENí NELINEÁRNíCH ROVNIC Definice 2.2. Nechť g C[a, b], g : [a, b] [a, b]. Řekneme, že bod x0 [a, b] je bodem cyklu řádu n funkce g, nebo že x0 generuje cyklus řádu n, jestliže gn (x0 ) = x0 , gk (x0 ) = x0 pro k = 1, 2, . . ., n - 1. Poznámka 5. Je-li x0 bod cyklu řádu n, pak je pevným bodem funkce gn . Uvažujme rovnici x = sin 2 x + 2. Funkce g(x) = sin 2 x + 2 má pevný bod = 2. Zvolme počáteční aproximaci x0 = 1. Pak x1 = g(x0 ) = 3, x2 = g2 (x0 ) = 1. Bod x0 = 1 tedy generuje cyklus řádu 2. Cyklus je ilustrován na obr. 2.7. 0 0.5 1 1.5 2 2.5 3 3.5 0 0.5 1 1.5 2 2.5 3 3.5 Obr. 2.7: Metoda prosté iterace, x = sin ( 2 x) + 2 Vyšetřujme nyní pevné body funkce g(x) = Ax(1 - x), x [0, 1], A [0, 4] v závislosti na parametru A. Tato funkce se používá na modelování některých biologických jevů. Za uvedených předpokladů je funkce g spojitá na intervalu [0, 1] a zobrazuje tento interval do sebe. Protože jsou splněny předpoklady první části věty 2.3, má funkce g v intervalu [0, 1] alespoň jeden pevný bod. V tomto jednoduchém případě pevné body snadno vypočteme a vyšetříme jejich vlastnosti. Řešíme-li rovnici x = Ax(1 - x) dostaneme pro A [0, 1] právě jeden pevný bod 1 = 0 a pro A (1, 4] právě dva pevné body 1 = 0, 2 = 1 - 1/A. Rozebereme nyní jednotlivé případy. 1. A [0, 1]. Je g (x) = A - 2Ax; g (0) = A 1. Funkce má jediný pevný bod 1 = 0; graf funkce leží pod přímkou y = x a bod 1 = 0 je tedy přitahujícím pevným bodem (i pro A = 1) (viz obr. 2.8). 2. A (1, 3]. V tomto případě g (1) = A > 1; g (2) = A - 2. To znamená, že bod 1 je odpuzujícím pevným bodem a 2 je pro A (1, 3) přitahujícím § 2.2. Metoda prosté iterace 35 k xk g(xk ) 0 0,5500 0,2351 1 0,2351 0,1708 2 0,1708 0,1346 3 0,1346 0,1106 4 0,1106 0,0935 5 0,0935 0,0805 6 0,0805 0,0703 7 0,0703 0,0621 0 x0 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Obr. 2.8: Metoda prosté iterace, A = 0,95, 1 = 0 pevným bodem, neboť |g (2)| < 1. Pro A = 3 je |g (2)| = 1, ale i v tomto případě lze ukázat, že posloupnost {xk } bude konvergovat k pevnému bodu 2, i když konvergence bude pomalá (viz [20] a obr. 2.9). k xk g(xk ) 0 0,1500 0,3187 1 0,3187 0,5429 2 0,5429 0,6204 3 0,6204 0,5888 4 0,5888 0,6053 5 0,6053 0,5973 6 0,5973 0,6013 7 0,6013 0,5993 0 x0 0.5 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Obr. 2.9: Metoda prosté iterace, A = 2,5, 2 = 0,6 3. A (3, 4]. Pro tyto hodnoty A již existují cykly různých řádů. Pro jisté hodnoty A existují posloupnosti generované libovolným prvkem x0 [0, 1], které jsou buď periodické nebo konvergují k periodické posloupnosti. Existuje také kritická hodnota A = Ac = 3,5700 . . . taková, že pro A > Ac lze vždy najít takovou počáteční aproximaci x0 [0, 1], že v odpovídající iterační posloupnosti neexistuje žádná zákonitost. Tato posloupnost může být dokonce tak neuspořádaná, že ji lze pokládat za posloupnost náhodných čísel a tomuto 36 2. ŘEŠENí NELINEÁRNíCH ROVNIC jevu říkáme chaos (viz obr. 2.10). Zde se nebudeme podrobně zabývat těmito otázkami. Podrobnější informace lze najít např. v [20]. k xk g(xk ) 0 0,500000 0,937500 1 0,937500 0,219727 2 0,219727 0,642926 3 0,642926 0,860896 4 0,860896 0,449077 5 0,449077 0,927776 6 0,927776 0,251279 7 0,251279 0,705518 8 0,705518 0,779109 9 0,779109 0,645367 10 0,645367 0,858256 11 0,858256 0,456197 12 0,456197 0,930305 0 0.5 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Obr. 2.10: Metoda prosté iterace, A = 3,75, 2 = 11 15 Jako příklad ukážeme, že pro každé A (3, 4] existuje alespoň jedna dvojice bodů x0 1, x0 2, které generují cyklus řádu 2. Je zřejmé, že body cyklu řádu 2 najdeme řešením rovnice x = g2 (x), tj. A (Ax(1 - x)) (1 - Ax(1 - x)) = x. (2.13) Úpravou dostaneme A3 x4 - 2A3 x3 + A2 (A + 1)x2 - A2 x + x = 0. Pevné body 1 = 0, 2 = 1 - 1/A jsou rovněž řešení této rovnice. Vydělíme tuto rovnici polynomem (x - 0)(x - (1 - 1/A)) a výsledná rovnice je tvaru A2 x2 - A(A + 1)x + A + 1 = 0. (2.14) Její diskriminant D = A2 (A + 1)(A - 3). Odtud plyne: 0 A < 3 D < 0 neexistuje bod generující cyklus řádu 2. A = 3 D = 0 kvadratická rovnice má dvojnásobný kořen 2 = 1 - 1/A = 2/3. 3 < A 4 D > 0 kvadratická rovnice má dva reálné různé kořeny x0 1, x0 2, které generují cyklus řádu 2. Například lze snadno ověřit pro A = 1 + 5 jsou body cyklu řádu 2 body x0 1 = 0,5; x0 2 = (3 + 5)/(2(1 + 5)) (viz obr. 2.11). § 2.3. Hledání vhodného tvaru iterační funkce 37 k xk g(xk ) 0 0,5000 0,8090 1 0,8090 0,5000 2 0,5000 0,8090 3 0,8090 0,5000 4 0,5000 0,8090 5 0,8090 0,5000 6 0,5000 0,8090 7 0,8090 0,5000 0 0.5 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Obr. 2.11: Metoda prosté iterace, A = 1 + 5, 2 = 5/(1 + 5) Pro určitou hodnotu A > 3 vznikne první 4-cyklus. Od hodnoty A = Ac = 3,5700 . . . se objevují cykly řádu 2i p, p > 1 je liché číslo. Pro hodnotu A = 1+ 8 vznikne první 3-cyklus. Otázkami cyklů se obecně zabýval A. N. Šarkovskij. Uvedeme bez důkazu jeho známou větu (podrobněji viz [20]). Věta 2.7. (Šarkovského věta). Nechť g C[a, b], g : [a, b] [a, b]. Na množině přirozených čísel definujme uspořádání takto: 3 5 7 . . . 2.3 2.5 . . . 2i .3 2i .5 . . . . . . 2j+1 2j . . . 8 4 2 1. Jestliže g má cyklus řádu m, m n, pak má g cyklus řádu n. § 2.3. Hledání vhodného tvaru iterační funkce Zabývejme se nyní volbou vhodné iterační funkce g pro řešení rovnice f(x) = 0. Jednou z možností je ,,vhodně vypočítat x z rovnice f(x) = 0. Ale tento postup není vždy jednoduchý. Některé možné postupy ukazují následující příklady: Příklad 2.4. 1. Najděte vhodnou iterační funkci pro nalezení největšího kladného kořene rovnice x3 + x - 1000 = 0. Řešení. g(x) = 3 1000 - x. 2. Pro rovnici x - tg x = 0 najděte vhodnou iterační funkci pro určení nejmenšího kladného kořene. Řešení. Nejmenší kladný kořen leží v intervalu [, 3 2 ) a vhodné iterační funkce jsou například 38 2. ŘEŠENí NELINEÁRNíCH ROVNIC (a) g(x) = 1 tg x - 1 x + x, (b) g(x) = arctg x + . Příklad 2.5. Pro funkci z příkladu 2.1, tj. f(x) = x3 - x - 1, najděte vhodnou iterační funkci pro kořen [1, 2]. Obrázky 2.12 a 2.13 ilustrují chování iterační posloupnosti pro různé volby iterační funkce g. Je zřejmé, že vhodná iterační funkce je funkce g(x) = (x + 1) 1 3 . a) g(x) = (x + 1) 1 3 x0 = 1 x1 = 1,259921050 x2 = 1,312293837 x3 = 1,322353819 x4 = 1,324268745 x5 = 1,324632625 x6 = 1,324701749 x7 = 1,324714878 x8 = 1,324717372 x9 = 1,324717846 b) g(x) = x3 - 1 x0 = 1,3 x1 = 1,197 x2 = 0,715072373 x3 = -0,634363117 x4 = -1,255278226 x5 = -2,977971306 x6 = -27,40958194 x7 = -20593,41275 -1 -0.5 0 0.5 1.5 2 2.5 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 y=x x0 Obr. 2.12: Metoda prosté iterace, x = (x + 1) 1 3 , x0 = 1 Podle věty 2.3 je třeba najít takovou funkci g, pro kterou |g (x)| q < 1 v okolí bodu . Lze snadno ověřit, že pro iterační funkci g(x) = x3 - 1 nejsou splněny předpoklady věty 2.3 a pro iterační funkci g(x) = (x+1) 1 3 jsou tyto předpoklady splněny (q = 1/3 3 4). § 2.3. Hledání vhodného tvaru iterační funkce 39 -1.5 -1 -0.5 0 0.5 1 1.5 2 -1.5 -1 -0.5 0 0.5 1 1.5 2 y=x Obr. 2.13: Metoda prosté iterace, x = x3 - 1, x0 = 1,3 Příklad 2.6. Najděte vhodnou iterační funkci pro výpočet hodnoty 3 25. Řešení. Zvolme funkci g(x) = 5 x za iterační funkci. Pevným bodem této funkce je bod = 3 25. Ukážeme, že funkce g splňuje na intervalu I = [2, 6; 3, 5] předpoklady věty 2.3. Je g (x) = - 5 2 x- 3 2 g je klesající na intervalu I, a jelikož g(2, 6) . = 3, 101, g(3, 5) . = 2, 673, zobrazuje g tento interval do sebe. Dále g (x) = 15 4 x- 5 2 , g (x) = - 75 8 x- 7 2 . Odtud plyne, že funkce g je rostoucí a konkávní na I. Tedy max xI |g (x)| = |g (2, 6)| . = 0, 596 Funkce g tedy splňuje předpoklady věty 2.3 s q . = 0, 596 a z věty 2.5 plyne konvergence pro každou počáteční aproximaci x0 I. Zvolme počáteční aproximaci x0 = 3; další aproximace jsou generovány vztahem xk+1 = 5/ xk: x1 . = 2, 886751, x2 . = 2, 942831, x3 . = 2, 914656, x4 . = 2, 928709, x5 . = 2, 921675, atd. Odhad relativní chyby pro x4 je roven x5 - x4 x4 . = 0, 0024 . Z uvedených příkladů je vidět, že při hledání řešení rovnice f(x) = 0 je často možné vytvořit iterační funkci g více způsoby, přičemž ne vždy její vlastnosti 40 2. ŘEŠENí NELINEÁRNíCH ROVNIC zaručují konvergenci iteračního procesu. Ve většině případů je ale možné volit iterační funkci ve tvaru g(x) = x - Mf(x), kde vhodnou volbou konstanty M lze často zaručit splnění předpokladů věty 2.3. Iterační proces má pak tvar xk+1 = xk - Mf(xk ), M = 0. Geometricky je bod xk+1 průsečík osy x a přímky procházející bodem (xk , f(xk )) se směrnicí 1/M. Příklad 2.7. Najděte vhodnou iterační funkci pro výpočet hodnoty ln 2. Řešení. Řešíme rovnici ex = 2, tj. f(x) = ex - 2 = 0. Dále víme, že x I = [0, 1]. Položme g(x) = x - Mf(x) = x - M(ex - 2) . Nejprve zkoumejme derivaci funkce g: g (x) = 1 - Mex , |g (x)| = |1 - Mex |. Pokud chceme, aby |g (x)| q < 1 na [0, 1], musí platit 0 < Mex < 2 pro x I, tedy 0 < M < 2/e. Z rovnice g (x) = 0 dále lehce zjistíme, že funkce g může mít lokální extrém jedině v bodě ln(1/M), pokud ale zvolíme M < 1/e, leží tento bod mimo interval I a g je na I monotonní. Tedy k tomu, aby se interval I zobrazil do sebe, stačí, když se do něj zobrazí krajní body: g(0) = -M(1 - 2) = M [0, 1], g(1) = 1 - M(e - 2) [0, 1]. Pro M < 1/e oba vztahy platí, takže můžeme zvolit hodnotu M rovnu např. 1/3. § 2.4. Newtonova metoda Určit vhodnou iterační funkci může být obtížné. Z tohoto důvodu se budeme zabývat obecnými postupy, které rovnici f(x) = 0 ,,přiřadí za jistých předpokladů o funkci f vhodnou iterační funkci. Předpokládejme, že rovnice f(x) = 0 má jednoduchý kořen , tj. f () = 0. Pak pro funkci g(x) = x - f(x) f(x) (2.15) je pevným bodem ( = g()). Iterační metoda určená touto iterační funkcí je tvaru xk+1 = xk - f(xk ) f(xk) , (2.16) (za předpokladu f (xk ) = 0, k = 0, 1, . . .) a nazývá se Newtonova metoda. Tato metoda má jednoduchý geometrický význam: bod xk+1 je průsečík tečny ke grafu § 2.4. Newtonova metoda 41 funkce f v bodě [xk , f(xk )] s osou x. Z tohoto důvodu se Newtonova metoda také nazývá metoda tečen. Věta 2.8. Nechť f C2 [a, b]. Nechť [a, b] je kořenem rovnice f(x) = 0 a f () = 0. Pak existuje > 0 tak, že posloupnost xk k=0 generovaná Newtonovou metodou konverguje k bodu pro každou počáteční aproximaci x0 [ - , + ] [a, b]. Důkaz. Ukážeme, že existuje subinterval [ - , + ] [a, b], na kterém iterační funkce (2.15) splňuje předpoklady věty 2.5. Jelikož f () = 0 a f je spojitá na intervalu [a, b], existuje takové 1 > 0, že pro všechna x [ - 1, + 1] [a, b] je f (x) = 0. Tedy funkce g je definována a spojitá na intervalu [ - 1, + 1]. Dále g (x) = 1 - f2 (x) - f(x)f (x) f2(x) = f(x)f (x) f2(x) pro x [ - 1, + 1], a protože f C2 [a, b], je g C1 [ - 1, + 1]. Podle předpokladu je f() = 0, a tedy g () = f()f () f2() = 0. (2.17) Funkce g C1 [ - 1, + 1], a tedy z (2.17) plyne, že existuje , 0 < < 1, tak, že |g (x)| q < 1 pro všechna x [ - , + ]. Je třeba ještě ukázat, že g: [ -, +] [ -, +], což plyne ihned aplikací věty o střední hodnotě, neboť pro libovolný bod x [ - , + ] platí |g(x) - | = |g(x) - g()| = |g ()(x - )|, a protože leží v intervalu určeném body x a , je |g ()| q < 1. Odtud |g(x) - | q|x - | < |x - | , a tedy g(x) [ - , + ]. Funkce g splňuje na intervalu [ - , + ] předpoklady věty 2.5 a to znamená, že posloupnost xk k=0 generovaná Newtonovou metodou konverguje pro každou počáteční aproximaci x0 [ - , + ] ke kořenu . 2 Důsledek. Newtonova metoda je metoda druhého řádu pro jednoduchý kořen . Důkaz plyne ihned ze vztahu (2.17), neboť = g(), g () = 0 a g () = 0. Příklad 2.8. Newtonovou metodou nalezněte kořen rovnice f(x) = x3 - x - 1 ležící v intervalu [1, 2]. Řešení. Newtonova metoda je v tomto případě tvaru xk+1 = xk - (xk )3 - xk - 1 3(xk)2 - 1 . 42 2. ŘEŠENí NELINEÁRNíCH ROVNIC k xk f(xk ) 0 2 5 1 1,54 1,145755071 2 1,359614916 0,153704934 3 1,325801345 0,004624917 4 1,324719049 0,000004658 5 1,324717957 2, 2204-16 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 -1 0 1 2 3 4 5 6 x y x 0 x 1 x 2 Obr. 2.14: Newtonova metoda, x3 - x - 1 = 0, x0 = 2 Za počáteční aproximaci zvolme x0 = 2. Metoda je ilustrována na obr. 2.14. Jelikož |x5 - x4 |/x5 = 8.10-7 a funkční hodnota f(x5 ) 5.10-12 , je x5 velmi dobrou aproximací hledaného kořene , což je na druhé straně vidět přímým porovnáním s hodnotou vypočtenou pomocí Cardanových vzorců (viz př. 2.1). Předpoklady uvedené ve větě 2.8 znamenají, že Newtonova metoda bude konvergovat, zvolíme-li počáteční aproximaci x0 ,,dostatečně blízko bodu . V další části této kapitoly uvedeme metody, které jsou vhodné pro určení ,,dostatečně blízké počáteční aproximace. Jak jsme již viděli, jednou z takových metod je metoda bisekce. Věta 2.9. Nechť jsou splněny předpoklady předchozí věty. Pak pro posloupnost xk k=0 generovanou Newtonovou metodou platí a) xk+1 - M 2m (xk - )2 , (2.18) b) xk+1 - M 2m (xk+1 - xk )2 , (2.19) kde M = max xI |f (x)|, m = min xI |f (x)| > 0, I = [ - , + ]. § 2.4. Newtonova metoda 43 Důkaz. a) Užijme Taylorova vzorce ve tvaru 0 = f() = f(xk ) + f (xk )( - xk ) + f (k ) ( - xk )2 2 , kde bod k leží mezi body xk , . Z Newtonovy metody plyne xk+1 f (xk ) = xk f (xk ) - f(xk ). Po dosazení do předchozího vztahu dostaneme 0 = -xk+1 f (xk ) + f (xk ) + f (k ) ( - xk )2 2 a odtud xk+1 - = f (k ) 2|f(xk)| ( - xk )2 M 2m ( - xk )2 . b) Pro důkaz vztahu (2.19) použijeme opět Taylorova vzorce: f(xk+1 ) = f(xk ) + f (xk )(xk+1 - xk ) + f (k ) 2 (xk+1 - xk )2 , kde k leží mezi body xk a xk+1 . Opět z Newtonovy metody plyne, že f(xk ) + f (xk )(xk+1 - xk ) = 0 a tudíž f(xk+1 ) = f (k ) 2 (xk+1 - xk )2 . Nyní použijeme věty o střední hodnotě ve tvaru (f() = 0) f(xk+1 ) = f(xk+1 ) - f() = f (k )(xk+1 - ), k leží mezi body xk+1 a . Dosazením do předchozího vztahu odtud ihned plyne xk+1 - = f (k ) 2 |f(k)| (xk+1 - xk )2 , a tedy i (2.19). 2 44 2. ŘEŠENí NELINEÁRNíCH ROVNIC Následující věta ukazuje, že za jistých podmínek lze zajistit monotonní konvergenci posloupnosti generované Newtonovou metodou. Tyto podmínky se někdy nazývají Fourierovy podmínky. Věta 2.10. Nechť f C2 [a, b] a nechť rovnice f(x) = 0 má v intervalu jediný kořen . Nechť f , f nemění znaménka na intervalu [a, b], přičemž f (x) = 0, x [a, b]. Nechť počáteční aproximace x0 je ten z krajních bodů a, b, v němž znaménko funkce je stejné jako znaménko f na intervalu [a, b]. Pak posloupnost xk k=0 určená Newtonovou metodou konverguje monotonně k bodu . Důkaz. Vyšetříme případ f(a) < 0, f(b) > 0, f (x) > 0, f (x) 0, x [a, b]. V ostatních případech je důkaz obdobný. Newtonova metoda je tvaru xk+1 = xk - f(xk ) f(xk) , k = 0, 1, 2, . . . Důkaz provedeme indukcí. Zvolme podle předpokladu za počáteční aproximaci bod b = x0 . Je třeba ukázat, že x1 < x0 . Jelikož x1 = x0 - f(x0 ) f(x0) a f(x0 ) > 0, f (x0 ) > 0, plyne odtud, že x1 < x0 . Dále užijeme Taylorova vzorce: 0 = f() = f(x0 ) + f (x0 )( - x0 ) + f (0 ) 2 ( - x0 )2 , 0 (, x0 ). Protože f (0 )( - x0 )2 /2 0, plyne z tohoto vztahu, že f(x0 ) + f (x0 )( - x0 ) 0, neboť součet členů v předchozím vztahu se rovná nule. Odtud ale plyne x0 - f(x0 ) f(x0) = x1 . To znamená, že x1 < x0 . Nyní za předpokladu, že platí xk < xk-1 < . . . < x0 se stejným způsobem ukáže, že xk+1 < xk < . . . < x0 . § 2.4. Newtonova metoda 45 Posloupnost xk k=0 konverguje monotonně k bodu . 2 V předchozím příkladu jsme zvolili počáteční aproximaci v souladu s těmito podmínkami. Poznámka 6. Nevhodná volba počáteční aproximace pro Newtonovu metodu může vést ke zcela chybným výsledkům, jak ukazuje následující příklad. Příklad 2.9. Nechť je dáno číslo a > 0. Je třeba vypočítat převrácenou hodnotu tohoto čísla bez použití dělení. Najděte vhodnou funkci f a použijte Newtonovu metodu. Řešení. Vhodná funkce f je tvaru f(x) = 1/x - a. Newtonova funkce je totiž v tomto případě tvaru xk+1 = xk - 1 xk - a - 1 (xk)2 = 2xk - a(xk )2 = xk (2 - axk ). Zabývejme se nyní konkrétní úlohou a zvolme a = 10. Separujme kořen rovnice f(x) = 1/x - 10. Je zřejmě f(0,01) > 0, f(1) < 0. Kořen leží v intervalu [0,01; 1]. Protože f (x) = -1/x2 < 0 pro x [0,01; 1], je tento kořen jediný. Dále f (x) = 2/x3 > 0, x [0,01; 1]. Vhodná počáteční aproximace je tedy x0 = 0,01. Výpočet probíhá takto: x0 = 0,01 x2 = 0,03439 x7 = 0,099882 x1 = 0,019 x3 = 0,08147 Pro tuto počáteční aproximaci posloupnost {xk } konverguje monotonně k bodu = 0,1. Zvolme nyní počáteční aproximaci x0 = 1. Jednotlivé iterace jsou: x0 = 1 x2 = -656 x1 = -8 x3 = -4304672 Počáteční aproximace x0 = 1 je špatnou počáteční aproximací. Doporučujeme čtenáři, aby sestrojil graf funkce f(x) = 1/x-10, příslušné tečny a jejich průsečíky s osou x! Následující příklad rovněž ilustruje ,,zajímavé chování iterační posloupnosti pro různé počáteční aproximace. 46 2. ŘEŠENí NELINEÁRNíCH ROVNIC Příklad 2.10. Řešme rovnici arctg x = 0. Je zřejmé, že kořen [a, b], a < 0, b > 0, neboť arctg a < 0, arctg b > 0. Dále f (x) = 1 1 + x2 , f (x) = - 2x (1 + x2)2 . Víme, že kořen = 0, ale vyšetřme tento případ podrobněji. První derivace je stále kladná, druhá derivace mění znaménko v bodě 0. Iterační funkce pro Newtonovu metodu je tvaru g(x) = x - (1 + x2 ) arctg x a Newtonova iterační metoda xk+1 = xk - 1 + (xk )2 arctg xk . Zvolme počáteční aproximaci x0 = 1,5. Výsledné iterace jsou k xk f(xk ) 1 1,5 0,982793723 2 -1,6940796 -1,037546359 3 2,321126961 1,164002042 4 -5,114087837 -1,377694529 Zřejmě tato posloupnost nekonverguje ke kořenu = 0. Tuto skutečnost lze objasnit takto (viz obr. 2.15): Je g (x) = -2x arctg x. Na intervalu [-1,5; 1,5] není splněna podmínka |g (x)| q < 1, a tedy není zaručena konvergence posloupnosti {xk }. Uvažujme nyní interval [-0,75; 0,75]. Funkce g zobrazuje tento interval do sebe a |g (x)| q < 1 na tomto intervalu. Podle věty 2.5 posloupnost určená iterační metodou bude konvergovat pro každou počáteční aproximaci x0 [-0,75; 0,75]. Zvolme tedy x0 = 0,75. Posloupnost iterací k xk f(xk ) 1 0,75 0,643501109 2 -0,255470482 -0,250120688 3 0,010974374 0,010973934 4 -8,81125.10-7 -8,81125.10-7 konverguje k bodu = 0 (viz obr. 2.16). § 2.5. Metoda sečen Výpočet iterací xk k=0 pomocí Newtonovy metody požaduje na každém kroku výpočet f (xk ). Někdy může být tento výpočet náročný a z tohoto důvodu aproximujeme první derivaci diferencí f (xk ) f(xk ) - f(xk-1 ) xk - xk-1 , k = 1, 2, . . . § 2.5. Metoda sečen 47 -3 -2 -1 0 1 2 3 -1.5 -1 -0.5 0 0.5 1 1.5 x y x0 x 1 x2 Obr. 2.15: Newtonova metoda pro f(x) = arctg (x), x0 = 1,5 -1 -0.5 0 0.5 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 x y x0 x 1 x2 Obr. 2.16: Newtonova metoda pro f(x) = arctg (x), x0 = 0,75 48 2. ŘEŠENí NELINEÁRNíCH ROVNIC Výsledná iterační metoda xk+1 = xk - xk - xk-1 f(xk) - f(xk-1) f(xk ), k = 0, 1, . . . (2.20) se nazývá metoda sečen. Patří mezi tzv. quasi-Newtonovy metody. Je to metoda dvoukroková, neboť pro výpočet xk+1 potřebujeme dvě předchozí aproximace xk , xk-1 , a tedy i dvě počáteční aproximace. Geometrický význam metody (2.20) je zřejmý z obrázku 2.17. Aproximace xk+1 je průsečík sečny vedené body [xk-1 , f(xk-1 )], [xk , f(xk )] s osou x. Tabulka udává aproximace získané metodou sečen pro funkci f(x) = x3 - x - 1. k xk f(xk ) 0 2 5 1 1 -1 2 1,16 -0,57870370 3 1,39560440 0,32263052 4 1,313656 -0,04668748 5 1,32401612 -0,00299114 6 1,32472525 0,00003110 7 1,32471795 -2.10-8 1 1.2 1.4 1.6 1.8 2 -1 0 1 2 3 4 5 x y x0 x1 x2 x3 x4 Obr. 2.17: Metoda sečen, f(x) = x3 - x - 1, x0 = 2, x1 = 1 Je |(x7 - x6 )/x7 | 5.10-6 a |f(x7 )| 2.10-8 x7 je dobrou aproximací hledaného kořene. Metoda sečen je metoda dvoukroková a k důkazu konvergence nelze tedy použít věty 2.5. Pojednejme nyní o konvergenci a volbě počátečních aproximací: § 2.5. Metoda sečen 49 Věta 2.11. Nechť rovnice f(x) = 0 má kořen a nechť derivace f , f jsou spojité v okolí bodu , přičemž f () = 0. Posloupnost určená metodou sečen konverguje ke kořenu , pokud zvolíme počáteční aproximace x0 , x1 dostatečně blízko bodu a metoda je řádu (1 + 5)/2 1,618. Důkaz. Odečteme od pravé a levé strany rovnice xk+1 = xk - xk - xk-1 f(xk) - f(xk-1) f(xk ) hodnotu : xk+1 - = xk - - xk - xk-1 f(xk) - f(xk-1) f(xk ). Dále upravíme tento vztah takto: xk+1 - = xk - - xk - xk-1 f(xk) - f(xk-1) f(xk ) - f() xk - xk - = = (xk - ) 1 - f(xk ) - f() xk - f(xk ) - f(xk-1 ) xk - xk-1 (2.21) Označme dále f[xk , ] = f(xk ) - f() xk - , f[xk , xk-1 ] = f(xk ) - f(xk-1 ) xk - xk-1 (2.22) f[xk-1 , xk , ] = f[xk , xk-1 ] - f[xk , ] xk-1 - (2.23) Vztahy (2.22) a (2.23) se nazývají poměrné diference 1. resp. 2. řádu a pojednáme o nich později v kapitole 6. Lze snadno ukázat pomocí věty o střední hodnotě a Taylorova vzorce (viz též kapitola 6), že f[xk , xk-1 ] = f (k ), kde k leží v intervalu určeném body xk , xk-1 , f[xk-1 , xk , ] = 1 2 f (k ), kde k leží v intervalu určeném body xk-1 , xk , . Vztah (2.21) můžeme nyní psát ve tvaru xk+1 - = (xk - ) 1 - f[xk , ] f[xk, xk-1] = = (xk - ) f[xk , xk-1 ] - f[xk , ] f[xk, xk-1] = = (xk - )(xk-1 - ) f[xk-1 , xk , ] f[xk, xk-1] xk+1 - = (xk - )(xk-1 - ) f (k ) 2f(k) . (2.24) 50 2. ŘEŠENí NELINEÁRNíCH ROVNIC Předpokládáme, že kořen je jednoduchý. Z toho plyne, že f (x) = 0 v okolí bodu . Existuje tedy číslo M a interval J = {x | |x - | } tak, že f (k ) 2f(k) M, k , k J. Položme ek = M|xk - | a e0, e1 , < min{1, M}. Pak lze snadno indukcí dokázat, že ek+1 ekek-1, k = 1, 2, . . . , (2.25) ek min{1, M}. (2.26) Ukážeme nyní opět indukcí, že platí ek Kqk , k = 0, 1, 2, . . ., (2.27) kde K = max e0, q e1 < 1 a q je kladný kořen rovnice q2 = q+1, q = (1+ 5)/2. Je zřejmé, že pro k = 0, 1 vztah platí. Předpokládejme nyní, že (2.27) platí pro k a dokážeme, že platí pro k + 1. Ze vztahu (2.25) plyne ek+1 ekek-1 Kqk Kqk-1 = Kqk-1 (q+1) = Kqk+1 , neboť q + 1 = q2 . Vztah (2.27) tedy platí pro všechna k. Ze vztahu (2.27) rovněž plyne, že metoda sečen konverguje alespoň tak jako metoda řádu q = (1 + 5)/2. 2 Poznámka 7. Jeden krok metody sečen požaduje pouze výpočet jedné funkční hodnoty. Dva kroky metody sečen jsou nejvýše tak ,,drahé jako jeden krok metody Newtonovy. Jelikož Kqk+2 = Kqk q2 = Kqk q+1 , představují dva kroky metody sečen metodu řádu q2 = q + 1 2,618. Lze tedy říci, že metoda sečen lokálně konverguje rychleji než metoda Newtonova. § 2.6. Metoda regula falsi Jak jsme viděli, konvergence Newtonovy metody i metody sečen závisí na vhodné volbě počáteční aproximace nebo dvou počátečních aproximací. Pro získání počátečních aproximací lze použít metodu bisekce, ale další vhodnou metodou je metoda regula falsi. Popíšeme nyní tuto metodu. Předpokládejme, že f(a)f(b) < 0, f C[a, b]. Metoda bisekce užívá středu intervalu [a, b], ale lepší aproximaci získáme, jestliže najdeme bod c (a, b), ve kterém přímka vedená body [a, f(a)], [b, f(b)] protíná osu x. Další postup aplikujeme na ten z intervalů [a, c], [c, b], v jehož koncových bodech má funkce f opačná § 2.6. Metoda regula falsi 51 znaménka. (Může samozřejmě také nastat případ f(c) = 0, a tedy c = je kořen.) Obecně lze tuto metodu, která se nazývá metoda regula falsi, zapsat takto: xk+1 = xk - xk - xs f(xk) - f(xs) f(xk ), k = 0, 1, . . ., (2.28) kde s = s(k) je největší index takový, že f(xk )f(xs ) < 0. Předpokládáme, že počáteční aproximace x0 , x1 jsou vybrány tak, že f(x0 )f(x1 ) < 0 (tj. např. x0 = a, x1 = b). Věta 2.12. Nechť f C[a, b], f(a)f(b) < 0 a nechť je jediný kořen v [a, b]. Pak posloupnost xk k=0 určená metodou regula falsi konverguje pro libovolné počáteční aproximace x0 , x1 [a, b], f(x0 )f(x1 ) < 0, ke kořenu (a, b) funkce f a je to metoda prvního řádu. Důkaz je obecném případě značně obsáhlý (viz [5]). Na tomto místě se budeme zabývat případem, kdy f C[a, b] a f nemění znaménko na [a, b] a popíšeme situaci z geometrického hlediska. Předpokládejme, že f [a, b], f(a) < 0, f(b) > 0, f má jediný kořen v intervalu [a, b], f (x) > 0, f (x) 0, x [a, b]. Položme a = x0 , b = x1 . Z předpokladů plyne, že pro bod x2 = x1 - x1 - x0 f(x1) - f(x0) f(x1 ) platí x0 < x2 < x1 . Funkce f je na intervalu [x0 , x1 ] konkávní a to znamená, že sečna určená body [x0 , f(x0 )], [x1 , f(x1 )] leží pod grafem funkce y = f(x), a tedy průsečík x2 této sečny s osou x leží napravo od bodu : < x2 < x1 . To však znamená, že f(x2 ) > 0 a metodu regula falsi aplikujeme na interval [x0 , x2 ]: x3 = x2 - x2 - x0 f(x2) - f(x0) f(x2 ) Indukcí plyne obecný vztah xk+1 = xk - xk - x0 f(xk) - f(x0) f(xk ), f(xk )f(x0 ) < 0, k = 1, 2, . . . To znamená, že bod x0 je v jistém smyslu ,,pevný . Všechny sečny vycházejí z tohoto bodu. Posloupnost {xk } v tomto případě zřejmě monotonně konverguje k bodu x = : xk < xk-1 < . . . < x1 , limk xk = . Obdobné úvahy lze provést i v dalších případech. Výsledek lze formulovat takto: Nechť f C[a, b], f(a)f(b) < 0, a nechť f nemění znaménko na intervalu [a, b]. Pak ,,pevný je ten koncový bod intervalu, v němž znaménko funkce je stejné jako znaménko f na intervalu [a, b] a posloupnost {xk } konverguje monotonně ke kořenu x = . Podrobný důkaz lze provést užitím Taylorova vzorce. 52 2. ŘEŠENí NELINEÁRNíCH ROVNIC k xk f(xk ) 0 1 -1 1 2 5 2 1,16 -0,57870370 3 1,25311203 -0,28536303 4 1,29343740 -0,12954209 5 1,31128102 -0,05658849 6 1,31898850 -0,02430375 7 1,32228272 -0,01036185 8 1,32368429 -0,00440395 1 1.2 1.4 1.6 1.8 2 -1 0 1 2 3 4 5 x y x 0 x1 x 2 x 3 x 4 Obr. 2.18: Metoda regula falsi, f(x) = x3 - x - 1, x0 = 1, x1 = 2 Metoda regula falsi pro funkci f(x) = x3 - x - 1 je ilustrována na obr. 2.18. Jelikož f (x) = 3x2 - 1 a f (x) > 0 pro x [1, 2], je bod b = 2 ,,pevný . Tabulka udává aproximace získané metodou regula falsi pro danou funkci. Užijeme kriterií (2.4), (2.5) pro odhad chyby. Je |(x8 - x7 )/x7 | 0,0014 a f(x8 ) 0,0044. Můžeme tedy říci, že iterace x8 aproximuje kořen s chybou menší než 5.10-3 . § 2.7. Quasi Newtonova metoda Hlavní myšlenkou této metody je nahrazení tečny použité v Newtonově metodě sečnou procházející bodem (xk , f(xk )) a bodem (xk +f(xk ), f(xk +f(xk ))), respektive bodem (xk - f(xk ), f(xk - f(xk ))). Přitom pokud je bod xk blízko hledaného kořene , pak hodnota f(xk ) je blízká nule a sečna procházející uvedenými body je § 2.7. Quasi Newtonova metoda 53 blízká tečně vedené bodem xk . Jedná se tedy o metodu blízkou metodě Newtonově, zde má také původ název této metody. Nahrazením f (xk ) ve vztahu pro Newtonovu metodu (2.16) přibližnou hod- notou f(xk ) - f(xk f(xk )) xk - (xk f(xk)) = f(xk ) - f(xk f(xk )) f(xk) dostáváme iterační vztah xk+1 = xk - f(xk ) f(xk ) f(xk) - f(xk f(xk)) = xk f2 (xk ) f(xk) - f(xk f(xk)) (2.29) a iterační funkce má tedy tvar g(x) = x f2 (x) f(x) - f(x f(x)) . (2.30) Věta 2.13. Nechť f C1 [a, b], [a, b] nechť je řešením rovnice f(x) = 0 a f () = 0. Pak existuje > 0 tak, že posloupnost xk k=0 generovaná quasi Newtonovou metodou konverguje k bodu pro každou počáteční aproximaci x0 [ - , + ] [a, b]. Pokud má funkce f v okolí bodu spojitou druhou derivaci, je řád metody alespoň 2. Důkaz. Důkaz provedeme pro (a, b). V případě, že je jedním z krajních bodů intervalu, úvahy jsou obdobné při použití jednostranných intervalů. Nechť je takové, že [ -, +] [a, b]. Pak existuje 0, že pro x [ -0, +0] platí |f(x)| /2. Položme 1 = min{0, /2}. Potom pro x [ - 1, + 1] dostáváme | - (x f(x))| | - x| + |f(x)| /2 + /2 = takže bod xf(x) leží v intervalu [-, +] [a, b] a je tedy definována hodnota f(x f(x)). Dále pomocí l'Hospitalova pravidla spočítáme limitu lim x f(x) f(x) - f(x f(x)) = lim x f (x) f(x) - f(x f(x))(1 f(x)) = = lim x f (x) f(x) - f(x)(1 f(x)) = lim x f (x) f(x) - f(x) (f(x))2 = 1 f() , protože f(x) 0 pro x . Odtud dostáváme g() = lim x g(x) = - f() lim x f(x) f(x) - f(x f(x)) = - f() f() = , takže je pevným bodem funkce g. Navíc g () = lim x g(x) - g() x - = lim x 1 x - x - f(x) f(x) f(x) - f(x f(x)) - = 54 2. ŘEŠENí NELINEÁRNíCH ROVNIC = lim x x - x - - lim x f(x) x - f(x) f(x) - f(x f(x)) = = 1 - lim x f(x) - f() x - lim x f(x) f(x) - f(x f(x)) = 1 - f (x) 1 f(x) = 0 . Protože f má spojitou derivaci v , má v tomto bodě spojitou derivaci i funkce g, a proto existuje > 0 takové, že [ -, +] [ -1, +1] a pro x [ -, +] je |g(x)| q < 1. Interval [ - , + ] funkce g zobrazuje do sebe, neboť jestliže x [ - , + ], pak |g(x) - | = |g(x) - g()| q|x - | < |x - | . Podle věty 2.5 konverguje metoda pro libovolnou počáteční aproximaci x0 [ - , + ]. Pokud má f v okolí bodu spojitou druhou derivaci, má zde spojitou druhou derivaci i funkce g, a jelikož platí g () = 0, podle věty 2.4 je quasi Newtonova metoda řádu alespoň 2. 2 Příklad 2.11. Použijeme quasi Newtonovou metodou na stejnou úlohu jako v příkladě 2.8, tj. pro nalezení kořene funkce f(x) = x3 - x - 1 ležící v intervalu [1, 2]. Řešení. Quasi Newtonova metoda (varianta +) dává iterační vztah xk+1 = xk + f(xk )2 f(xk) - f(xk + f(xk)) . Je samozřejmě možné výraz upravit dosazením dané funkce, výsledný vztah je ovšem poměrně komplikovaný. Při vlastním výpočtu je lepší použít např. substituci yk = f(xk ) a pak použít vztah xk+1 = xk + (yk )2 yk - f(xk + yk) . Za počáteční aproximaci zvolme x0 = 2. V tabulce jsou uvedeny jednotlivé aproximace a funkční hodnoty k xk f(xk ) 0 1,4 0,344000000 1 1,346609850 0,095276011 2 1,326900496 0,009326670 3 1,324741149 0,000098908 4 1,324717960 0,000000011 5 1,324717957 2,220410-16 Vidíme, že je potřeba poměrně velmi přesnou počáteční iteraci, aby hodnota x0 + f(x0 ) ležela v daném intervalu, ale nemusíme počítat derivace. Poznámka 8. Dosud probrané metody patří mezi nejužívanější metody k řešení nelineárních rovnic. Z nich metoda bisekce a regula falsi patří mezi vždy konvergentní metody, neboť posloupnost aproximací generovaná těmito metodami vždy § 2.8. Iterační metody pro násobné kořeny 55 konverguje k hledanému kořenu spojité funkce na daném intervalu. Jejich nevýhodou je pomalá konvergence, lze jich ale s výhodou použít pro nalezení dobré počáteční aproximace pro některou jinou metodu, která konverguje rychleji. § 2.8. Iterační metody pro násobné kořeny Doposud jsme předpokládali, že kořen je jednoduchým kořenem rovnice f(x) = 0. Dá se ukázat, viz např. [5], [13], že uvedené iterační metody konvergují lineárně, má-li hledaný kořen násobnost M větší než 1. Ale známe-li násobnost kořene, můžeme modifikovat Newtonovu metodu tak, že konvergence bude opět kvadratická. Věta 2.14. Nechť kořen má násobnost M > 1. Pak modifikovaná Newtonova metoda xk+1 = xk - M f(xk ) f(xk) (2.31) je metoda druhého řádu. Důkaz. Nechť xk+1 = xk - M f(xk ) f(xk) . Pak - xk+1 = - xk + M f(xk ) f(xk) (2.32) a odtud ( - xk+1 )f (xk ) = (xk ), (2.33) (x) = ( - x)f (x) + Mf(x). Derivováním dostaneme (j) (x) = Mf(j) (x) + ( - x)f(j+1) (x) - jf(j) (x). Bod je M-násobným kořenem funkce f (f(j) () = 0, j = 0, 1, . . ., M - 1, f(M) () = 0) a tedy (j) () = 0, j = 0, 1, . . ., M, (M+1) () = 0. Aplikací Taylorova vzorce pro funkci odtud plyne (x) = (x - )M+1 (M + 1)! (M+1) (1). (2.34) Na druhé straně (opět z Taylorova vzorce) f (x) = (x - )M-1 (M - 1)! f(M) (2). (2.35) 56 2. ŘEŠENí NELINEÁRNíCH ROVNIC Dosazením vztahů (2.34) a (2.35) do (2.33) dostaneme ( - xk+1 ) (xk - )M-1 (M - 1)! f(M) (k 2 ) = (xk - )M+1 (M + 1)! (M+1) (k 1 ) a odtud - xk+1 = - xk 2 M(M + 1) (M+1) (k 1 ) f(M)(k 2) . Metoda je tedy řádu 2, neboť f(M) (x) m > 0 v okolí bodu x = a (M+1) () = 0. 2 Poznámka 9. ,,Klasická Newtonova metoda konverguje pro násobný kořen line- árně. Následující tabulka ukazuje srovnání rychlostí konvergence pro jednotlivé metody. Zde ek = xk - . Metoda Speciální případy Posloupnost chybových členů Bisekce ek+1 1 2 ek Regula falsi ek+1 CR ek Metoda sečen násobný kořen ek+1 CSN ek Newtonova metoda násobný kořen ek+1 CNN ek Metoda sečen jednoduchý kořen ek+1 CS e1,618 k Newtonova metoda jednoduchý kořen ek+1 CN e2 k quasi Newtonova metoda jednoduchý kořen ek+1 CQ e2 k Modifikovaná Newtonova metoda násobný kořen ek+1 CMN e2 k Poznámka 10. Obvykle násobnost kořene předem neznáme. Víme ale, že funkce u(x) = f(x)/f (x) má v bodě x = jednoduchý kořen bez ohledu na násobnost kořene původní funkce. Místo rovnice f(x) = 0 uvažujme tedy rovnici u(x) = 0, jejíž kořeny jsou totožné s kořeny dané rovnice a jsou všechny jednoduché. Nyní můžeme aplikovat výše uvedené metody na tuto funkci a řád konvergence metody se nezmění. § 2.9. Urychlení konvergence 57 § 2.9. Urychlení konvergence Nyní vyložíme techniku nazývanou Aitkenovou 2 -metodou, která může být použita k urychlení konvergence libovolné lineárně konvergentní posloupnosti nezávisle na tom, jak je tato posloupnost generována. Věta 2.15. (Aitkenova 2 -metoda). Nechť je dána posloupnost {xk } k=0, xk = , k = 0, 1, 2, . . ., limk xk = , a nechť tato posloupnost splňuje podmínky xk+1 - = (C + k)(xk - ), k = 0, 1, 2, . . . |C| < 1, lim k k = 0. Pak posloupnost ^xk = xk - (xk+1 - xk )2 xk+2 - 2xk+1 + xk (2.36) je definována pro všechna dostatečně velká k a platí lim k ^xk - xk - = 0, tj. posloupnost {^xk } konverguje k limitě rychleji než posloupnost {xk }. Důkaz. Ověříme, zda posloupnost {^xk } je definována pro dostatečně velká k. Počítejme xk+2 - 2xk+1 + xk = (xk+2 - ) - 2(xk+1 - ) + (xk - ) = = (xk+1 - )(C + k+1) - 2(xk - )(C + k) + (xk - ) = = (xk - )(C + k)(C + k+1) - 2(xk - )(C + k) + (xk - ) = = (xk - )(C2 - 2C + 1 + k) = (xk - ) (C - 1)2 + k , kde lim k k = 0. Pro dostatečně velká k je xk+2 - 2xk+1 + xk = 0 a posloupnost {^xk } je defino- vána. Nyní ^xk - = xk - - (xk+1 - xk )2 xk+2 - 2xk+1 + xk = (xk - ) - xk+1 - - (xk - ) 2 (xk - ) ((C - 1)2 + k) = = (xk - ) - (xk - )2 (C - 1 + k)2 (xk - ) ((C - 1)2 + k) = (xk - ) 1 (C - 1 + k)2 (C - 1)2 + k a odtud lim k ^xk - xk - = lim k 1 (C - 1 + k)2 (C - 1)2 + k = 0. 2 Poznámka 11. Výraz ve jmenovateli xk+2 - 2xk+1 + xk se nazývá někdy druhá centrální diference a označuje se 2 xk . Odtud název Aitkenova 2 -metoda. 58 2. ŘEŠENí NELINEÁRNíCH ROVNIC Uvedená metoda má zajímavý geometrický význam. Definujme funkci chyby takto: (xk ) = xk - xk+1 , (xk+1 ) = xk+1 - xk+2 Chceme sestrojit takovou posloupnost, která by konvergovala rychleji k bodu . Body o souřadnicích xk , (xk ) , xk+1 , (xk+1 ) vedeme přímku a její průsečík s osou x vezmeme za další aproximaci bodu , tj. provedeme ,,extrapolaci (viz obr. 2.19). -0.05 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 -0.05 0 0.05 0.1 0.15 0.2 0.25 x 2 x 3 x 4 x 5x^2 Obr. 2.19: Aitkenova metoda, xn = 1/(2n - 1) Rovnice přímky je tvaru y - (xk ) = (xk ) - (xk+1 ) xk - xk+1 (x - xk ) Odtud je zřejmé, že průsečík s osou x (y = 0) je právě hodnota ^xk ^xk = xk - (xk )(xk - xk+1 ) (xk) - (xk+1) = xk - (xk+1 - xk )2 xk+2 - 2xk+1 + xk . § 2.10. Steffensenova metoda Vraťme se nyní k iterační metodě xk+1 = g(xk ). Můžeme užít Aitkenovy 2 metody ke konstrukci posloupnosti {^xk }, která konverguje rychleji než původní posloupnost {xk }. Je vhodné sestrojit novou posloupnost takto: Položme yk = g(xk ), zk = g(yk ), § 2.10. Steffensenova metoda 59 xk+1 = xk - (yk - xk )2 zk - 2yk + xk . (2.37) V tomto případě je tedy (xk ) = xk - yk , (yk ) = yk - zk . Posloupnost (2.37) je posloupnost sestrojená Aitkenovou 2 -metodou. Tato iterační metoda se nazývá Steffensenova a může být popsána iterační funkcí : xk+1 = (xk ), (2.38) kde (x) = xg(g(x)) - g2 (x) g(g(x)) - 2g(x) + x , g2 (x) = (g(x))2 . (2.39) Snadno lze ověřit, že iterační proces (2.38) generuje posloupnost danou vztahem (2.37). Počítejme hodnotu (xk ): (xk ) = xk g(g(xk )) - g2 (xk ) g(g(xk)) - 2g(xk) + xk = xk g(yk ) - (yk )2 g(yk) - 2yk + xk = = xk zk - (yk )2 zk - 2yk + xk = xk (zk - 2yk + xk ) - (yk - xk )2 zk - 2yk + xk = xk - (yk - xk )2 zk - 2yk + xk Pro pevné body funkcí , g platí následující věta. Věta 2.16. 1. () = implikuje g() = . 2. Jestliže g() = , g () existuje a g () = 1, pak () = . Důkaz. 1. Z definice funkce dané vztahem (2.39) plyne ( - ())(g(g()) - 2g() + ) = ( - g())2 . Tedy () = implikuje g() = . 2. Předpokládejme nyní, že = g(), g je diferencovatelná pro x = a g () = 1. Pro výpočet hodnoty () použijeme l'Hospitalova pravidla: () = g(g()) + g (g())g () - 2g()g () g(g())g() - 2g() + 1 = + g2 () - 2g () 1 + g2() - 2g() = 2 Věta 2.17. Nechť funkce g má spojité derivace až do řádu p + 1 včetně v okolí bodu x = . Nechť iterační metoda xk+1 = g(xk ) je řádu p pro bod . Pak pro p > 1 je iterační metoda xk+1 = (xk ) řádu 2p - 1. Pro p = 1 je tato metoda řádu alespoň 2 za předpokladu g () = 1. Důkaz lze nalézt v [5]. 60 2. ŘEŠENí NELINEÁRNíCH ROVNIC Poznamenejme, že funkce je iterační funkcí pro metodu druhého řádu, tj. metoda je lokálně kvadraticky konvergentní i v případě, že |g ()| > 1 a metoda xk+1 = g(xk ) diverguje jako posloupnost. Příklad 2.12. Iterační funkce g(x) = x2 má dv pevné body 1 = 0, 2 = 1. -0.2 0 0.2 0.4 0.6 0.8 1 1.2 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 Je g (x) = 2x, g (x) = 2, g (1) = 0, g (2) = 2. 1 je přitahujícím pevným bodem, a protože g (1) = 0, je pro tento bod metoda řádu druhého. o znamená, že pro každou počáteční iteraci x0 [-1/4, 1/4] bude posloupnost xk+1 = (xk ) 2 konvergovat kvadraticky k bodu 1 = 0. Bod 2 je odpuzujícím pevným bodem a posloupnost xk+1 = (xk ) 2 nekonverguje k bodu 2 (pro |x0 | < 1 posloupnost konverguje k bodu 1, pro |x0 | > 1 diverguje). Protože g (i) = 1, i = 1, 2, můžeme sestrojit iterační funkci pro Steffensenovu metodu a tato iterační funkce bude mít stejné pevné body jako funkce g. Je (x) = x g(g(x)) - g2 (x) g(g(x)) - 2g(x) + x = x5 - x4 x4 - 2x2 + x = = x4 (x - 1) x(x - 1)(x2 + x - 1) = x3 x2 + x - 1 = x3 (x - 1)(x - 2) , kde 1,2 = (-1 5)/2. Tato iterační funkce je vhodná pro oba pevné body 1, 2 a platí (1) = 0, (1) = 0 metoda je řádu 3 pro bod 1 = 0, (2) = 0, (2) = 0 metoda je řádu 2 pro bod 2 = 1. -0.2 0 0.2 0.4 0.6 0.8 1 1.2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 Graf funkce . § 2.10. Steffensenova metoda 61 Jednotlivé iterace pro 1: x0 = 1 4 , x1 = - 1 44 , x2 = 1 87076 . = 0, 00001484. Jednotlivé iterace pro 2: x0 = 2, x1 = 1, 6, x2 . = 1, 2962, x3 . = 1, 1019. Příklad 2.13. Aplikujme Steffensenovu metodu na iterační funkci g(x) = sin 2 x+ 2, jejíž pevný bod = 2. Metoda je znázorněna na obr. 2.20. k xk yk zk 0 0,50000000000000 2,70710678118655 1,10398106407319 1 1,77848375282432 2,34097786767556 1,48963705888740 2 2,00227199284588 1,99643116955900 2,00560587638570 3 1,99999999735784 2,00000000415030 1,99999999348073 4 2,00000000000000 2,00000000000000 2,00000000000000 0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3 y=x x y x 0 y 0 z 0 x 1 y 1 z 1 x 2 Obr. 2.20: Steffensenova metoda (pro iterační metodu), x = sin ( 2 x) + 2 Poznámka 12. Hledáme-li řešení rovnice f(x) = 0 a iterační funkci g definujeme vztahem g(x) = x + f(x) nebo g(x) = x - f(x), dostaneme pomocí Steffensenovy metody yk = g(xk ) = xk f(xk ), zk = g(yk ) = yk f(yk ) = xk f(xk )f(xk f(xk )), xk+1 = xk - (yk - xk )2 zk - 2yk + xk = = xk - (xk f(xk ) - xk )2 xk f(xk) f(xk f(xk)) - 2xk 2f(xk) + xk = = xk - f2 (xk ) f(xk f(xk)) f(xk) = 62 2. ŘEŠENí NELINEÁRNíCH ROVNIC = xk - f2 (xk ) [f(xk) - f(xk f(xk))] = = xk f2 (xk ) f(xk) - f(xk f(xk)) . V tomto případě se tedy jedná o quasi Newtonovu metodu (viz odstavec 2.7). § 2.11. Müllerova metoda Na závěr této kapitoly se zmíníme ještě o Müllerově metodě. Tato metoda byla navržena v roce 1956 D. M. Müllerem. Je vhodná pro hledání kořenů libovolné funkce, ale především je užitečná zejména pro určení kořenů polynomu. Müllerova metoda je zobecněním metody sečen. Metoda sečen v podstatě znamená, že pro dané aproximace xk , xk-1 bodu aproximujeme funkci f přímkou procházející body xk-1 , f(xk-1 ) , xk , f(xk ) a za další aproximaci bodu vezmeme průsečík této přímky s osou x. Müllerova metoda užívá tři aproximace xk-2 , xk-1 , xk a křivku y = f(x) aproximujeme parabolou určenou těmito body. Průsečík této paraboly s osou x, který je nejbližší k xk , vezmeme za další aproximaci xk+1 . Touto metodou lze najít i násobné a komplexní kořeny. Lze ji popsat následujícím způsobem. Nechť xk-2 , xk-1 , xk jsou již vypočtené aproximace. Sestrojme polynom P(x) = a(x - xk )2 + b(x - xk ) + c procházející body xk-2 , f(xk-2 ) , xk-1 , f(xk-1 ) , xk , f(xk ) , t.j. splňující podmínky P(xi ) = f(xi ), i = k - 2, k - 1, k. Z nich plyne c = f(xk ) b = (xk-2 - xk )2 f(xk-1 ) - f(xk ) - (xk-1 - xk )2 f(xk-2 ) - f(xk ) (xk-2 - xk)(xk-1 - xk)(xk-2 - xk-1) a = (xk-2 - xk ) f(xk-1 ) - f(xk ) - (xk-1 - xk ) f(xk-2 ) - f(xk ) (xk-2 - xk)(xk-1 - xk)(xk-1 - xk-2) Kořeny kvadratické rovnice P(x) = 0 je vhodné vyjádřit (vzhledem k zaokrouhlovacím chybám) ve tvaru xk+1 - xk = -2c b b2 - 4ac . Znaménko u odmocniny vybereme tak, aby bylo shodné se znaménkem b. Tato volba znamená, že jmenovatel zlomku bude v absolutní hodnotě největší a tedy výsledná hodnota xk+1 bude nejbližší xk . Je tedy xk+1 = xk - 2c b + (sign b) b2 - 4ac . § 2.12. Iterační metody pro systémy nelineárních rovnic 63 Další postup opakujeme s aproximacemi xk-1 , xk , xk+1 atd. Při řešení kvadratické rovnice musíme užívat komplexní aritmetiky, neboť výraz b2 - 4ac může být záporný. Příklad 2.14. Aplikujme Müllerovu metodu na řešení rovnice x3 - x - 1 = 0. Výpočet je uveden v tabulce a graficky zobrazen na obr. 2.21. Funkce f(x) = x3 - x - 1 má jediný reálný kořen a proto lze v tomto případě vzít za počáteční aproximace x0 , x1 , x2 (z důvodu vhodnějšího grafického vyjádření) body x0 = -1, x1 = 0, x2 = 2. k xk f(xk ) 0 -1,00000000 -1,00000000 1 0,00000000 -1,00000000 2 2,00000000 5,00000000 3 0,61803399 -1,38196601 4 1,17827569 -0,54243597 5 1,30978731 -0,06279113 6 1,32509032 0,00158855 7 1,32471777 -0,00000081 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 -1 0 1 2 3 4 5 x y x0 x1 x2 x3 x4 Obr. 2.21: Müllerova metoda, f(x) = x3 - x - 1 Lze ukázat [5], že Müllerova metoda je řádu alespoň q = 1,84 . . ., kde q je největší kořen rovnice q3 - q2 - q - 1 = 0. § 2.12. Iterační metody pro systémy nelineárních rovnic Zabývejme se nyní řešením systému nelineárních rovnic. Je dáno m nelineárních 64 2. ŘEŠENí NELINEÁRNíCH ROVNIC rovnic o m neznámých f1(x1, . . . , xm) = 0 ... fm(x1, . . . , xm) = 0 (2.40) Kořenem systému (2.40) rozumíme každou uspořádanou m-tici reálných čísel (1, . . . , m), která tomuto systému vyhovuje. Systém (2.40) lze také zapsat ve vektorovém tvaru F(x) = o, x Rm , o = (0, . . . , 0)T Rm . (2.41) Kořen této rovnice budeme nyní značit = (1, . . . , m)T . Dále budeme postupovat obdobně jako při řešení jedné rovnice, tzn. rovnici (2.41) převedeme na rovnici ekvivalentní x = G(x), x Rm (2.42) a budeme hledat pevný bod zobrazení G : Rm Rm . Systém (2.42) lze samozřejmě rozepsat takto: x1 = g1(x1, . . . , xm) ... xm = gm(x1, . . . , xm) (2.43) Definujme nyní v prostoru Rm metriku vztahem (x, y) = max 1i m |xi - yi|. (2.44) Prostor Rm s takto definovanou metrikou je úplným metrickým prostorem. Nyní lze pro vyšetřování konvergence iteračního procesu xk+1 = G(xk ), k = 0, 1, 2, . . . užít Banachovy věty o pevném bodě. Věta 2.18. Nechť zobrazení G : Rm Rm je kontrakce na Rm , (G(x), G(y)) q(x, y), 0 q < 1. Pak pro každou počáteční aproximaci x0 Rm je posloupnost xk k=0 , k = 0, 1, 2, . . ., xk = G(xk-1 ), konvergentní v Rm a limk xk = , kde je jediný pevný bod zobrazení G. Důkaz plyne ihned aplikací Banachovy věty o pevném bodě. Užitečnější výsledek získáme, budeme-li předpokládat existenci kořene . Dokážeme tuto větu: Věta 2.19. Nechť Rm je pevný bod rovnice x = G(x). Nechť funkce gi, i = 1, . . . , m, mají spojité parciální derivace pro všechna x (, r), (, r) = {x|(x, ) r}. Nechť dále platí gi(x) xj q m , i, j = 1, . . . , m, (2.45) § 2.12. Iterační metody pro systémy nelineárních rovnic 65 0 q < 1 a nechť x0 (, r). Pak všechny iterace xk k=0 určené vztahem xk+1 = G(xk ) leží v množině (, r) a lim k xk = . Důkaz. Množina (, r) je uzavřenou omezenou podmnožinou úplného metrického prostoru Rm a je tedy rovněž úplným metrickým prostorem. Nyní je třeba ověřit, zda jsou na množině (, r) splněny předpoklady Banachovy věty. Pro libovolné dva body x, y (, r) platí podle Taylorovy věty pro funkce více proměnných: gi(x) - gi(y) = m j=1 gi(i) xj (xj - yj), i = 1, . . . , m, kde i (, r), neboť i leží na úsečce spojující body x a y a množina (, r) je konvexní. Pomocí vztahu (2.45) odhadneme nyní absolutní hodnotu rozdílu gi(x)-gi(y): |gi(x) - gi(y)| m j=1 gi(i) xj |xj - yj| max 1jm |xj - yj| m j=1 gi(i) xj q(x, y), i = 1, . . . , m. Jelikož tato nerovnost platí pro všechna i = 1, . . . , m, je také max 1i m |gi(x) - gi(y)| = (G(x), G(y)) q(x, y). Zobrazení G je tedy kontrakce na (, r). Nechť nyní x (, r), pak také G(x) (, r), neboť (G(x), ) = (G(x), G()) q(x, ) < r. Odtud plyne, že pro zobrazení G platí G : (, r) (, r). Tedy zobrazení G splňuje na úplném metrickém prostoru (, r) předpoklady věty 2.18 a odtud plyne tvrzení věty. 2 Poznámka 13. Je zřejmé, že předpoklad (2.45) lze nahradit předpokladem max 1i m m j=1 gi(x) xj q < 1. (2.46) Příklad 2.15. Řešte systém nelineárních rovnic x2 1 - 2x1 - x2 + 0, 5 = 0 x2 1 + 4x2 2 - 4 = 0 66 2. ŘEŠENí NELINEÁRNíCH ROVNIC Řešení: První rovnici lze upravit následujícím způsobem: x2 1 - 2x1 - x2 + 0, 5 = 0 x2 = x2 1 - 2x1 + 0, 5 x2 = (x1 - 1)2 - 0, 5 , jedná se tedy o rovnici paraboly. Druhá rovnice je rovnice elipsy x2 1 4 + x2 2 = 1 . Hledáme tedy průsečíky paraboly s elipsou. Průsečík 1 leží ve druhém kvadranru, průsečík 2 v prvním kvadrantu (viz obrázek 2.22). Budeme hledat aproximaci průsečíku 1. Rovnice převedeme na tvar -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 -1.5 -1 -0.5 0 0.5 1 1.5 x0 1 2 Obr. 2.22: Průsečíky elipsy x2 1 4 + x2 2 = 1 s parabolou x2 = (x1 - 1)2 - 0, 5 x1 = g1(x1, x2) = x2 1 - x2 + 0, 5 2 x2 = g2(x1, x2) = -x2 1 - 4x2 2 + 8x2 + 4 8 Ve druhé rovnici byl na každou stranu přidán člen -8x2 a rovnice pak vydělena -8. Jedná se o poněkud umělý krok, který ovšem zajistí dostatečné podmínky pro konvergenci. Jako počáteční iteraci zvolíme bod (x0 1, x0 2) = (0; 1), který leží blízko 1.V okolí hledaného průsečíku jsou zřejmě splněny podmínky (2.45). Postupně dostaneme x1 1 = g1(x0 1, x0 2) = -0, 25, x1 2 = g2(x0 1, x0 2) = 1 x2 1 = g1(x1 1, x1 2) = -0, 21875, x2 2 = g2(x1 1, x1 2) = 0, 9921875 ... x8 1 = g1(x7 1, x7 2) . = -0, 2222145, x8 2 = g2(x7 1, x7 2) . = 0, 9938084 x9 1 = g1(x8 1, x8 2) . = -0, 2222146, x9 2 = g2(x8 1, x8 2) . = 0, 9938084 § 2.13. Newtonova metoda pro systémy nelineárních rovnic 67 Pokud bychom chtěli najít druhý průsečík, museli bychom změnit iterační funkce, abychom zajistili konvergenci. Možná volba je např. x1 = g1(x1, x2) = -x2 1 + 4x1 + x2 - 0, 5 2 x2 = g2(x1, x2) = -x2 1 - 4x2 2 + 11x2 + 4 11 . Navrhneme nyní modifikaci iterační metody xk+1 = G(xk ). Tato modifikace spočívá v tom, že pro výpočet xk+1 i použijeme již vypočtených hodnot xk+1 1 , . . . , xk+1 i-1 , tj. xk+1 1 = g1(xk 1, xk 2, . . . , xk m) xk+1 2 = g2(xk+1 1 , xk 2, . . . , xk m) xk+1 3 = g3(xk+1 1 , xk+1 2 , . . . , xk m) ... xk+1 m = gm(xk+1 1 , . . . , xk+1 m-1, xk m). Tato modifikace se nazývá Seidelova metoda. Otázkami konvergence této metody se zabývá monografie [17]. § 2.13. Newtonova metoda pro systémy nelineárních rovnic Rovnici F(x) = o lze převést na rovnici x = G(x) různými způsoby. Pojednáme podrobněji o tvaru Newtonovy metody pro systémy nelineárních rovnic. Položme G(x) = x - J-1 F (x)F(x), kde JF (x) = f1(x) x1 f1(x) xm ... ... ... fm(x) x1 fm(x) xm Matici JF (x) nazýváme Jacobiovou maticí funkce F. Nechť JF (x) je regulární matice se spojitými prvky v okolí bodu . Iterační metodu xk+1 = xk - J-1 F (xk )F(xk ), k = 0, 1, 2, . . . (2.47) nazýváme Newtonovou iterační metodou pro systém F(x) = o. 68 2. ŘEŠENí NELINEÁRNíCH ROVNIC Otázky konvergence a volby počáteční aproximace pro metodu (2.47) jsou mnohem komplikovanější než v případě jedné rovnice. Tato problematika je podrobně studována v [5] nebo v [17]. Zde uvedeme bez důkazu jednu ze základních vět. Věta 2.20. Nechť je kořenem rovnice F(x) = o. Nechť JF (x) je regulární matice se spojitými prvky v okolí O() bodu , přičemž J-1 F (x) K, K = konst., pro všechna x z tohoto okolí. Nechť funkce fi, i = 1, . . . , m, mají spojité druhé parciální derivace v O(). Posloupnost xk k=0 určená Newtonovou metodou konverguje ke kořenu za předpokladu, že počáteční aproximace x0 leží dostatečně blízko . Řád metody je roven dvěma. Důkaz viz [2], [5]. Tato věta předpokládá existenci ,,dobré počáteční aproximace. Ovšem pro systém nelineárních rovnic není snadné určit ,,dobrou počáteční aproximaci. Pro systém F(x) = o neexistují jednoduché, vždy konvergentní metody, které by umožnily vhodnou volbu počáteční aproximace. Lze sice formulovat podmínky pro počáteční aproximaci, pro kterou bude iterační proces konvergovat, ale ověření těchto podmínek je značně náročné a pro praktické výpočty nepoužitelné. V případě dvou rovnic lze v některých případech určit počáteční aproximaci geometricky. Poznámka 14. Problém řešení systému nelineárních rovnic lze převést na problém minimalizace funkce více proměnných, viz např. [5], [17]. Vraťme se nyní ke vztahu (2.47). Zde je třeba na každém kroku vypočítat inverzní matici J-1 F (x). Tento vztah však můžeme zapsat i takto: JF (xk )(xk+1 - xk ) = -F(xk ). (2.48) Položíme-li nyní k = xk+1 - xk , tj. xk+1 = xk + k , k = 0, 1, 2, . . ., dostaneme JF (xk )k = -F(xk ); k = (k 1 , . . . , k m)T . (2.49) (2.49) je nyní systém lineárních rovnic pro neznámé k 1 , . . . , k m. Řešení tohoto systému, vektor k je vektor ,,oprav pro aproximaci xk . Příklad 2.16. Použijte Newtonovu metodu k nalezení průsečíku 2 paraboly a elipsy z příkladu 2.15 Řešení: Položme F(x1, x2) = x2 1 - 2x1 - x2 + 0, 5 x2 1 + 4x2 2 - 4 , pak JF (x1, x2) = 2x1 - 2 -1 2x1 8x2 . Zvolme počáteční aproximaci (x0 1, x0 2) = (2; 0, 25), takže F(2; 0, 25) = 0, 25 0, 25 , JF (2; 0, 25) = 2, 0 -1, 0 4, 0 2, 0 . Cvičení ke kapitole 2 69 Řešíme tedy systém 2, 0 -1, 0 4, 0 2, 0 1 2 = - 0, 25 0, 25 Řešení je 1 = -0.09375, 2 = 0.0625, tj. x1 = 2, 0 - 0.09375 0, 25 + 0.0625 = 1.90625 0, 3125 . Dalším postupem dostaneme x2 . = 1.900691 0.311213 , x3 . = 1.900677 0.311219 , x4 . = 1.900677 0.311219 . Poznámka 15. Jako kritérium pro dosažení dostatečně malé chyby aproximace a zastavení výpočtu můžeme použít např. odhad xk+1 -xk xk , kde je předem daná přesnost výpočtu. Cvičení ke kapitole 2 1. Funkce f(x) = x3 + 4x2 - 10 má jediný kořen v intervalu [1; 1,5]. Uvažujte tyto iterační funkce pro nalezení kořene ( 1,365230013): g1(x) = x - x3 - 4x2 + 10 g4(x) = 10 4 + x 1 2 g2(x) = 10 x - 4x 1 2 g5(x) = x - x3 + 4x2 - 10 3x2 + 8x g3(x) = 1 2 (10 - x3 ) 1 2 Nechť počáteční aproximace x0 = 1,5. Ukažte, že funkce g3, g4, g5 jsou vhodné iterační funkce (tj. posloupnost iterací konverguje ke kořenu ). Dále ukažte, že volba funkce g1 vede na divergentní posloupnost a posloupnost {xk }, xk = g2(xk-1 ), x0 = 1,5, není definována (v oboru reálných čísel). 2. Ukažte, že funkce g(x) = 2-x má jediný pevný bod v intervalu [1 3 ; 1]. Najděte tento pevný bod s chybou menší než 10-4 . Kolik iterací je třeba k dosažení této přesnosti? (Řešení: x0 = 1, x12 = 0,6412053. Podle důsledku věty 2.5 je třeba 15 iterací.) 3. Je dána rovnice 3x2 - ex = 0. Určete interval, ve kterém leží kladný kořen této rovnice. Najděte vhodnou iterační funkci g, pro kterou iterační metoda xk+1 = g(xk ) bude konvergovat k tomuto kladnému kořenu. 70 2. ŘEŠENí NELINEÁRNíCH ROVNIC 4. Je dána rovnice 3x3 -x-1 = 0. Určete interval, ve kterém leží kladný kořen této rovnice. Najděte vhodnou iterační funkci g, pro kterou iterační metoda xk+1 = g(xk ) bude konvergovat k tomuto kladnému kořenu. 5. Je dána rovnice x = g(x), g(x) = (6 + x)1/2 . Pevný bod je = (3, 3). Znázorněte geometricky příslušný iterační proces xk+1 = g(xk ), x0 = 7. Bude tento iterační proces konvergovat? 6. Ukažte, že iterační funkce g(x) = 1 2 x + 2 x splňuje podmínky pro výpočet 2. Jaký tvar má funkce g pro výpočet a, a > 0? 7. Užitím Newtonovy metody vypočtěte 13. Zvolte vhodnou funkci a počáteční aproximaci. 8. Newtonovou metodou nalezněte kořen funkce f(x) = x - cos x. (Řešení: x0 = 4 , x3 = 0,7390851332.) 9. Užitím Newtonovy metody s počáteční aproximací x0 = 10 vypočtěte 91. (Řešení: xk+1 = (xk + 91/xk )/2, x3 = 9,539392015.) 10. Na parabole y = x2 najděte užitím Newtonovy metody bod nejbližší bodu (1, 3). Návod: 1. Určete druhou mocninu vzdálenosti d2 (x) bodu X = (x, x2 ) ležícího na parabole a bodu (1, 3). 2. Řešte rovnici (d2 (x)) = f(x) = 0. Za počáteční aproximaci zvolte x0 = 1, 0. (x4 . = 1, 28962390) 11. Užijte a) Newtonovy metody, b) metody sečen, c) metody regula falsi k nalezení kořenů funkcí 1) x3 - 2x2 - 5 = 0, [1, 4], 2) x - 0,8 - 0,2 sinx = 0, [0, 2 ], 3) 3x2 - ex = 0, [0, 2]. 12. Je dána rovnice 4x-7 x-2 = 0. (a) Jaké jsou vhodné počáteční aproximace pro metodu regula falsi? (b) Je x0 = 3 vhodná počáteční aproximace pro použití Newtonovy me- tody? 13. Metodou regula falsi najděte kladný kořen rovnice x2 - 7 = 0. Cvičení ke kapitole 2 71 14. Řešte rovnici x = 2-x pro kořen v intervalu [0, 1] Steffensenovou metodou a porovnejte s výsledkem cvičení 2. 15. Vypočtěte 3 s počáteční aproximací x0 = 2 Steffensenovou metodou a porovnejte výsledky s použitím metody Newtonovy, metody sečen a metody regula falsi. 16. Užijte Müllerovy metody k nalezení kořenů rovnice x3 + 3x2 - 1 = 0. (Řešení: 0,532089, -0,652703, -2,87938.) 17. Je dán systém nelineárních rovnic x2 1 - x2 - 0,2 = 0, x2 2 - x1 - 0,3 = 0. Užitím Newtonovy metody nalezněte kořen ležící v 1. kvadrantu. Počáteční aproximaci určete graficky. (x0 = (1,2; 1,2)T , x2 = (1,192309; 1,221601)T .) 18. Uvažujme systém nelineárních rovnic x1 = 2x1 - x2 1 + x2 2 (parabola), x2 = 2x1 - x2 1 + 8 9 + 4x2 - x2 2 4 (elipsa). Zvolte x0 = (1,4; 2,0)T a vypočtěte 2 iterace a) iterační metodou xk = G(xk-1 ), b) Seidelovou metodou. Výsledky porovnejte s přesným řešením = (1,4076401; 1,9814506)T . 19. Je dána funkce soustava nelineárních rovnic x1 = 7x3 1 - x2 - 1 10 g1(x1, x2) x2 = 8x3 2 + x1 - 1 11 g2(x1, x2) Tato soustava má 9 pevných bodů. Ověřte, že v okolí bodu (0,0) splňuje tato soustava podmínku pro konvergenci iteračního procesu xk+1 1 = g1(xk 1, xk 2) xk+1 2 = g2(xk 1, xk 2) . Bude tato podmínka splněna v okolí bodu (1,1)? 72 2. ŘEŠENí NELINEÁRNíCH ROVNIC Kontrolní otázky ke kapitole 2 1. Je možné použít prostou iterační metodu v případě, že funkce g zobrazuje interval I = [a, b] do sebe a platí |g (x)| 1, přičemž rovnost nastává pouze v některém z krajních bodů intervalu I? Proč? 2. Je dána funkce f(x) = cos x. Newtonovou metodou chceme najít kořen = 3 2 . Můžeme použít počáteční aproximaci x0 = 3? Proč? Můžeme použít počáteční aproximaci x0 = 5? Proč? 3. Je dána funkce f(x) = (x - 3)1/2 . Můžeme užít Newtonovu metodu pro nalezení kořene s počáteční aproximací x0 = 4? Proč? 4. Co se stane, když použijeme Müllerovu metodu pro nalezení kořene polynomu 2. stupně? 5. Co se stane při použití Newtonovy metody pro systém nelineárních rovnic na řešení soustavy rovnic lineárních? 6. Aplikujte Aitkenovou 2 -metodou na posloupnost částečných součtů geometrické řady. Co nastane a proč? Kapitola 3 Polynomy Nechť n je třída polynomů stupně nejvýše n s reálnými koeficienty. Polynom P n budeme zapisovat ve tvaru P(x) = a0xn + . . . + an. (3.1) Označme 1, 2, . . . , n kořeny (reálné i komplexní) polynomu P. V této kapitole se budeme zabývat numerickými metodami pro určení těchto kořenů. § 3.1. Hranice kořenů Pro volbu počáteční aproximace pro aplikaci numerické metody je vhodné znát hranice těchto kořenů: Věta 3.1. Nechť A = max (|a1|, . . . , |an|) , B = max (|a0|, . . . , |an-1|) , kde ak, k = 0, 1, . . ., n, a0an = 0, jsou koeficienty polynomu P n, Pak pro všechny kořeny k, k = 0, 1, . . . , n, polynomu P platí 1 1 + B |an| |k| 1 + A |a0| . (3.2) Důkaz. Bez újmy na obecnosti předpokládejme |x| > 1. Pak |P(x)| |a0xn | - a1xn-1 + . . . + |an| |a0||x|n - A |x|n-1 + . . . + 1 = = |a0||x|n - A |x|n - 1 |x| - 1 > |a0| - A |x| - 1 |x|n . 74 3. POLYNOMY Jestliže |a0|-A/(|x|-1) > 0, pak je |P(x)| > 0 a to znamená, že pro |x| > 1+A/|a0| nemá P kořen. Odtud plyne, že všechny kořeny polynomu P splňují nerovnost |k| 1 + A |a0| , k = 1, . . . , n. Položme nyní x = 1/y. Užitím této substituce dostaneme: P(x) = P( 1 y ) = 1 yn (a0 + . . . + anyn ) = 1 yn Q(y). Určíme horní hranici kořenů 1, . . . , n polynomu Q n. Podle předchozího je |k| 1 + B |an| , k = 1, . . . , n. Jelikož k = 1/k, k = 1, . . . , n, plyne odtud požadovaná nerovnost (3.2). 2 Příklad 3.1. Určete hranice reálných kořenů polynomu P(x) = x6 - 2x5 + 8x4 + 3x3 - x2 + x - 10. Řešení. A = max(2, 8, 3, 1, 1, 10) = 10 B = max(1, 2, 8, 3, 1, 1) = 8 Odtud 5 9 = 1 1 + 8 10 |k| 1 + 10 1 = 11. Některé další hranice pro kořeny polynomu jsou uvedeny v následující větě: Věta 3.2. Pro všechny kořeny k, k = 0, 1, . . . , n, polynomu P n platí |k| max 1, n j=1 aj a0 |k| 2 max a1 a0 , a2 a0 , 3 a3 a0 , . . . , n an a0 |k| max an a0 , 1 + an-1 a0 , . . . , 1 + a1 a0 . Důkaz lze najít např. v [5]. § 3.2. Počet reálných kořenů polynomu Zabývejme se nyní otázkou počtu reálných kořenů polynomu. § 3.2. Počet reálných kořenů polynomu 75 Úmluva. Nechť c1, . . . , cm je posloupnost reálných čísel různých od nuly. Řekneme, že pro dvojici ck, ck+1 nastává znaménková změna, jestliže ckck+1 < 0. Řekneme, že dvojice ck, ck+1 zachovává znaménko, jestliže ckck+1 > 0. Dále ukážeme, že počet reálných kořenů polynomu lze určit pomocí posloupnosti polynomů klesajících stupňů. Vhodnou posloupností je tzv. Sturmova po- sloupnost: Definice 3.1. Posloupnost reálných polynomů P = P0, P1, . . . , Pm se nazývá Sturmovou posloupností příslušnou polynomu P, jestliže (a) Všechny reálné kořeny polynomu P0 jsou jednoduché. (b) Je-li reálný kořen polynomu P0, pak sign P1() = -sign P 0(). (c) Pro i = 1, 2, . . . , m - 1, Pi+1()Pi-1() < 0, jestliže je reálný kořen polynomu Pi. (d) Poslední polynom Pm nemá reálné kořeny. Poznámka 1. Jestliže polynom P má násobné kořeny, pak dělením polynomu P největším společným dělitelem P a P dostaneme polynom, který má tytéž kořeny, ale všechny jednoduché. Uveďme nyní jednoduchý postup pro konstrukci Sturmovy posloupnosti příslušné polynomu P za předpokladu, že všechny reálné kořeny polynomu P jsou jednoduché. Položme P0(x) = P(x), P1(x) = -P 0(x) (3.3) a sestrojme další polynomy Pi+1 rekurentně dělením polynomu Pi-1 polynomem Pi: Pi-1(x) = Qi(x)Pi(x) - ciPi+1(x), i = 1, 2, . . ., (3.4) kde stupeň Pi > stupeň Pi+1 a konstanty ci jsou kladné, ale jinak libovolné. Lze říci, že Pi+1 je záporně vzatý zbytek při dělení Pi-1/Pi. Tato rekurze je známý Euklidův algoritmus. Protože stupně polynomů klesají, musí algoritmus končit po m n krocích: Pm-1(x) = Qm(x)Pm(x), Pm(x) 0. 76 3. POLYNOMY Poslední polynom Pm je největší společný dělitel polynomů P a P1 = -P . Jestliže všechny reálné kořeny polynomu P jsou jednoduché, pak P a P nemají žádné společné reálné kořeny. Tedy Pm nemá reálné kořeny. Jestliže Pi() = 0, tak z (3.4) plyne Pi-1() = -ciPi+1(). Jestliže bychom předpokládali, že Pi+1() = 0, pak z (3.4) by plynulo Pi+1() = . . . = Pm() = 0, což by byl spor, neboť Pm() = 0. Odtud tedy plyne Pi-1()Pi+1() < 0, je-li Pi() = 0. Výše zkonstruovaná posloupnost zřejmě také splňuje podmínku 2 z definice Sturmovy posloupnosti a je tedy Sturmovou posloupností příslušnou polynomu P. Věta 3.3. (Sturm). Počet reálných kořenů polynomu P v intervalu a x < b je roven W(b) - W(a), kde W(x) je počet znaménkových změn ve Sturmově posloupnosti P0(x), . . . , Pm(x) v bodě x (z níž jsou vyškrtnuty nuly). Důkaz. Nejdříve ukážeme, jaký vliv má malá změna hodnoty a na počet znaménkových změn W(a) v posloupnosti P0(a), P1(a), . . . , Pm(a). (3.5) Nechť nejdříve a není kořenem žádného z polynomů Pi, i = 0, . . . , m. Pak samozřejmě malá změna čísla a nemá žádný vliv na počet znaménkových změn v posloupnosti (3.5). Nechť nyní a je kořenem některého z polynomů Pi, i = 0, 1, . . ., m - 1. Předpokládejme nejdříve, že 1 i m - 1. Nechť polynom Pi mění znaménko v bodě a. Pro dostatečně malé h > 0 zachycují chování polynomů Pi-1, Pi, Pi+1 v bodech a - h, a, a + h následující tabulky. a - h a a + h Pi-1 - - Pi - 0 + Pi+1 + + + W(x) 1 1 1 a - h a a + h Pi-1 + + + Pi - 0 + Pi+1 - - W(x) 1 1 1 a - h a a + h Pi-1 - - Pi + 0 Pi+1 + + + W(x) 1 1 1 a - h a a + h Pi-1 + + + Pi + 0 Pi+1 - - W(x) 1 1 1 Ve všech těchto případech W(a - h) = W(a) = W(a + h), což znamená, že při přechodu přes bod a, který je kořenem některého z polynomů Pi, i = 1, . . . , m - 1, § 3.2. Počet reálných kořenů polynomu 77 počet znaménkových změn ve Sturmově posloupnosti se nemění. Totéž platí i v případě, že Pi nemění znaménko v bodě a. Nechť nyní a je kořenem polynomu P0. Znaménka polynomů P0, P1 v okolí bodu a ukazují následující tabulky. a - h a a + h P0 - 0 + P1 - - W(x) 0 0 1 a - h a a + h P0 + 0 P1 + + + W(x) 0 0 1 V obou případech W(a + h) - W(a - h) = 1. Odtud plyne: Je-li a kořenem polynomu P0, pak při přechodu přes bod a získáme jednu znaménkovou změnu. Pro a < b a dostatečně malé h > 0 číslo W(b) - W(a) = W(b - h) - W(a - h) udává počet kořenů polynomu P v intervalu a-h < x < b-h. Protože číslo h > 0 je libovolně malé, udává tento rozdíl rovněž počet kořenů v intervalu a x < b. 2 Příklad 3.2. Určete počet reálných kořenů polynomu P(x) = x3 - 3x + 1. Řešení. Sestrojíme Sturmovu posloupnost příslušnou polynomu P(x). Je P0(x) = x3 - 3x + 1, P 0(x) = 3x2 - 3, P1(x) = -x2 + 1. Polynom P2 je záporně vzatý zbytek při dělení polynomu P0 polynomem P1, tj. P2(x) = 2x - 1 a dále P3(x) = -3/4. Sestavíme tabulku pro určení počtu reálných kořenů. x P0(x) P1(x) P2(x) P3(x) W(x) - - - - - 0 + + - + - 3 0 + + - - 1 -1 + 0 - - 1 -2 - - - - 0 1 - 0 + - 2 2 + - + - 3 Odtud plyne: W() - W(-) = 3 3 reálné kořeny W() - W(0) = 2 2 kladné kořeny W(-1) - W(-2) = 1 1 kořen v intervalu [-2, -1] W(1) - W(0) = 1 1 kořen v intervalu [0, 1] W(2) - W(1) = 1 1 kořen v intervalu [1, 2] 78 3. POLYNOMY I když z teoretického hlediska vypadá konstrukce Sturmovy posloupnosti velmi jednoduše, mohou být konkrétní výpočty poněkud těžkopádné, neboť koeficienty polynomů Pi mohou být řádově dosti velké. Pro rychlý odhad počtu kladných kořenů daného polynomu je vhodná následující Descartesova věta. Věta 3.4. (Descartes). Počet kladných kořenů polynomu P (počítáno s násobností) je roven počtu znaménkových změn v posloupnosti koeficientů a0, . . . , an nebo o sudé číslo menší. Jsou-li všechny koeficienty a0, . . . , an různé od nuly, pak počet záporných kořenů je roven počtu zachování znamének v této posloupnosti nebo o sudé číslo menší. Důkaz viz [2]. Příklad 3.3. Odhadněte počet kladných a záporných kořenů polynomu P(x) = x6 - 2x5 + 8x4 + 3x3 - x2 + x - 10 Posloupnost koeficientů: 1, -2, 8, 3, -1, 1, -10 Počet kladných kořenů: 5 nebo 3 nebo 1 Počet záporných kořenů: 1 § 3.3. Newtonova metoda a její modifikace Pro určení kořenů polynomu P lze použít kterékoliv z metod uvedených v předchozí kapitole. Pro polynomy jsou vhodné zejména metoda Newtonova a Müllerova. Připomeňme, že Newtonova metoda je tvaru xk+1 = xk - P(xk ) P(xk) , k = 0, 1, . . . Hodnoty P(xk ), P (xk ) lze snadno spočítat Hornerovým schematem. Hornerovo schema. Nechť je reálné číslo. Vydělíme polynom P(x) lineárním polynomem x - : P(x) = (x - )Q(x) + bn, kde Q(x) = b0xn-1 + . . . + bn-1 . Koeficienty bi, i = 0, . . . , n určíme z rekurentních vztahů: b0 = a0 bk = ak + bk-1, k = 1, . . . , n . Pak je zřejmě P() = bn. § 3.3. Newtonova metoda a její modifikace 79 Poznámka 2. Nechť 1 je přibližný kořen polynomu P. Polynom P dělíme lineárním polynomem (x - 1), tj. P(x) = (x - 1)Q(x) + bn. Koeficienty b0,. . . ,bn-1 polynomu Q lze získat Hornerovým schématem. V případě, že 1 je přesný kořen polynomu P, je bn = P(1) = 0. Je-li 1 aproximací kořene 1, je P(1) = bn = 0. Hornerova schematu lze použít i pro výpočet hodnoty derivace polynomu P v bodě . Derivací vztahu P(x) = (x - )Q(x) + bn dostaneme P (x) = Q(x) + (x - )Q (x) a tedy P () = Q(). Q(x) = (x - )R(x) + cn-1 R(x) = c0xn-2 + . . . cn-2 a Q() = cn-1. Výpočet lze vhodně uspořádat do tabulky a0 a1 a2 . . . an-1 an b0 b1 . . . bn-2 bn-1 b0 b1 b2 . . . bn-1 bn = P() c0 c1 . . . cn-2 c0 c1 c2 . . . cn-1 = Q() = P () Obdobným způsobem lze vypočítat hodnoty P(j) () pro libovolné j 1. Položme Q(0) (x) = Q(x) = b (0) 0 xn-1 + . . . + b (0) n-1 takže P(x) = (x - )Q(0) (x) + b(0) n Dále Q(0) (x) = (x - )Q(1) (x) + b (1) n-1 pro Q(1) (x) = b (1) 0 xn-1 + . . . + b (1) n-2, a tedy P(x) = Q(1) (x)(x - )2 + b (1) n-1(x - ) + b(0) n . Dalším postupem bychom dostali vyjádření P(x) = b (n) 0 (x - )n + b (n-1) 1 (x - )n-1 + . . . + b (1) n-1(x - ) + b(0) n , (3.6) kde koeficienty b (n-i) i , i = 0, . . . , n dostaneme postupným použitím Hornerova schematu podle následující tabulky 80 3. POLYNOMY a0 a1 a2 . . . an-2 an-1 an b (0) 0 b (0) 1 . . . b (0) n-3 b (0) n-2 b (0) n-1 b (0) 0 b (0) 1 b (0) 2 . . . b (0) n-2 b (0) n-1 b (0) n b (1) 0 b (1) 1 . . . b (1) n-3 b (1) n-2 b (1) 0 b (1) 1 b (1) 2 . . . b (1) n-2 b (1) n-1 b (2) 0 b (2) 1 . . . b (2) n-3 b (2) 0 b (2) 1 b (2) 2 . . . b (2) n-2 ... b (n-2) 0 b (n-2) 1 b (n-2) 2 b (n-1) 0 b (n-1) 0 b (n-1) 1 b (n) 0 Přitom je z (3.6) zřejmé, že P(j) () = j! b (j) n-j. Jak víme z předchozí kapitoly, pro konvergenci Newtonovy metody je třeba znát dostatečně dobrou počáteční aproximaci. Avšak neexistuje žádné pravidlo, které by zaručovalo dobrou počáteční aproximaci pro libovolný polynom. Na druhé straně takové pravidlo platí pro speciální případ, kdy všechny kořeny i, i = 1, . . . , n jsou reálné a platí 1 2 . . . n. Toto pravidlo je v podstatě obdobou věty 2.10 a zní takto: Věta 3.5. Nechť P n je polynom stupně n 2. Nechť všechny kořeny i, 1 2 . . . n, jsou reálné. Pak posloupnost xk k=0 určená Newtonovou metodou je konvergentní klesající posloupnost pro každou počáteční aproximaci x0 > 1, 1 = lim k xk . Důkaz. Bez újmy na obecnosti lze předpokládat, že P(x0 ) > 0. Protože P nemění znaménko pro x > 1, máme P(x) > 0 pro x > 1 a tedy a0 > 0. Derivace P má n - 1 reálných kořenů i s vlastností (v důsledku Rolleovy věty): 1 1 2 2 . . . n-1 n. Protože P je polynom stupně nejvýše n-1, jsou toto všechny jeho kořeny a P (x) > 0 pro x > 1, neboť a0 > 0. Opětovnou aplikací Rolleovy věty dostaneme P (x) > 0 pro x > 1 (n 2), P (x) 0 pro x 1. § 3.3. Newtonova metoda a její modifikace 81 Tedy P a P jsou konvexní funkce pro x 1. Nyní na intervalu [1, x0 ] lze aplikovat větu (2.9). Znaménko polynomu P v bodě x0 je stejné jako znaménko P na intervalu [1, x0 ] a tedy pro počáteční aproximaci x0 > 1 posloupnost xk k=0 určená Newtonovou metodou konverguje monotonně ke kořenu 1. 2 Poznámka 3. Pro volbu počáteční aproximace lze užít odhadů uvedených ve větách 3.1, 3.2. Newtonova metoda konverguje kvadraticky, ale tato konvergence nemusí vždy znamenat rychlou konvergenci. Jestliže počáteční aproximace x0 leží daleko od kořene, pak posloupnost xk k=0 určená Newtonovou metodou může konvergovat pomalu, neboť pro xk velké xk+1 = xk - (xk )n + . . . n(xk)n-1 + . . . xk 1 - 1 n , odkud je vidět, že je malý rozdíl mezi xk , xk+1 . Z tohoto důvodu se budeme zabývat následující zdvojenou metodou. xk+1 = xk - 2 P(xk ) P(xk) , k = 0, 1, 2, . . . (3.7) místo přímé Newtonovy metody. Věta 3.6. Nechť P n, n 2, a nechť všechny kořeny i, i = 1, . . . , n polynomu P jsou reálné a 1 2 . . . n. Nechť 1 je největší kořen P : 1 1 2. Pro n = 2 předpokládejme 1 > 2. Pak pro každé z > 1 jsou čísla z = z - P(z) P(z) , y = z - 2 P(z) P(z) , y = y - P(y) P(y) (3.8) definována a platí 1 < y, 1 y z . (3.9) Důkaz lze najít v [5]. Obrázek 3.1 ilustruje geometrický význam této metody. Metoda (3.7) není z geometrického hlediska založena na průsečíku tečny s osou x, ale na průsečíku sečny, která má směrnici P (x)/2, s osou x. To znamená, že při použití této metody můžeme ,,přestřelit bod 1, tj. pro bod y ve vztahu (3.8) může platit y < 1. Ale z věty 3.6 plyne, že tento bod splňuje rovněž nerovnost (3.9) a použitím klasické Newtonovy metody dostaneme bod y , který je lepší aproximací 1 než bod z . Praktický význam věty 3.6 je následující: 82 3. POLYNOMY 1.8 2 2.2 2.4 2.6 2.8 3 -2 0 2 4 6 8 10 12 14 x0 x 1 x2 x 3 Obr. 3.1: Zdvojená Newtonova metoda, P (x) = x3 + x2 - 10x + 8, x0 = 3 Začneme s počáteční aproximací x0 > 1. Pro posloupnost xk k=0 generovanou zdvojenou metodou xk+1 = xk - 2 P(xk ) P(xk) , k = 0, 1, . . . mohou nastat dva případy: (a) P(x0 )P(xk ) > 0 pro všechna k. V tomto případě x0 > x1 > . . . > xk > . . . 1, lim k xk = 1 a konvergence je rychlejší než konvergence přímé Newtonovy metody. (b) Existuje xk0 tak, že P(xk0 )P(x0 ) < 0, P(xk )P(x0 ) > 0 pro 0 k < k0. V tomto případě tedy došlo k ,,přestřelení bodu 1 a platí x0 > x1 > . . . > xk0-1 > 1 > y = xk0 > 1 > 2. Položme y0 = xk0 a pokračujme dále klasickou Newtonovou metodou s touto počáteční aproximací: yk+1 = yk - P(yk ) P(yk) , k = 0, 1, 2, . . . Dostaneme opět monotonní posloupnost y1 > y2 > . . . > yk > . . . 1, lim k yk = 1. § 3.3. Newtonova metoda a její modifikace 83 Příklad 3.4. Ukážeme si rozdíl mezi rychlostí konvergence přímé a zdvojené Newtonovy metody. Položme P(x) = 8 i=1 (x - i), tedy 1 = 8, 2 = 7,. . . ,8 = 1. Počáteční aproximaci zvolme x0 = 20. Jednotlivé iterace dává následující tabulka: Newtonova metoda zdvojená Newtonova metoda x0 20,0 20,0 x1 18,105567 16,211133 x2 16,454192 13,398883 x3 15,016438 11,329903 x4 13,766710 9,834383 x5 12,682811 8,794966 x6 11,745573 8,148323 x7 10,938548 7,929357 x8 10,247782 8,016696 x9 9,661673 8,000686 x1 0 9,170955 8,000001 U zdvojené Newtonovy metody došlo k ,,přestřelení kořene 1 u aproximace x7 , pro následující iterace už je použita přímá Newtonova metoda. Výše uvedeným postupem nalezneme aproximaci ~1 největšího kořene 1 polynomu P. Pro určení dalších kořenů se nabízí jednoduchá myšlenka: známe aproximaci ~1, vydělíme polynom P dvojčlenem (x - ~1) a výsledný polynom P1(x) = P(x) x - ~1 je polynom stupně n - 1 s největším kořenem 2. Tato metoda se nazývá metoda snižování stupně . Takto bychom mohli teoreticky najít všechny kořeny polynomu P. Ale praktická realizace tohoto procesu není bez problémů. Kořen 1 je znám přibližně a vzhledem k zaokrouhlovacím chybám nelze přesně určit polynom P1 (viz poznámka 2). Polynom, který získáme uvedeným dělením bude mít tedy kořeny odlišné od 2, . . . , n. Při dalším opakování tohoto postupu mohou být poslední kořeny polynomu P určeny zcela nepřesně. Z těchto důvodů byly navrženy různé modifikace metody snižování stupně ([5]). Metodu, která se vyhýbá přímému snižování stupně, navrhl v roce 1954 Maehly ([5]). Základní myšlenka této metody spočívá ve vhodném vyjádření derivace polynomu nižšího stupně: P 1(x) = P (x) x - ~1 - P(x) (x - ~1)2 , (3.10) 84 3. POLYNOMY Dosazením tohoto vyjádření do vzorce pro Newtonovu metodu pro polynom P1 dostaneme: xk+1 = xk - P1(xk ) P 1(xk) = xk - P(xk ) P(xk) - P(xk ) xk - ~1 (3.11) Obecně, jestliže jsme již nalezli aproximace kořenů ~1, . . . , ~j, postupujeme obdobně a sestrojíme polynom Pj(x) = P(x) (x - ~1) . . . (x - ~j) , P j(x) = P (x) (x - ~1) . . . (x - ~j) - P(x) (x - ~1) . . . (x - ~j) j i=1 1 x - ~i Newtonova metoda pro nalezení kořene j+1 je tvaru xk+1 = j(xk ), j(x) = x - P(x) P(x) - j i=1 P(x) x - ~i . (3.12) Přednost této metody spočívá ve skutečnosti, že posloupnost {xk } generovaná metodou (3.12) konverguje kvadraticky ke kořenu j+1 i v případě, že ~1, . . . , ~j nejsou kořeny P (konvergence je pouze lokální v tomto případě). Tedy výpočet j+1 není citlivý na chyby při výpočtu předchozích kořenů. Můžeme také vhodně aplikovat zdvojenou Newtonovu metodu. Příklad 3.5. Užitím zdvojené Newtonovy­Maehlyovy metody nalezněte kořeny polynomu P(x) = x3 + x2 - 10x + 8. Řešení. Nechť x0 = 3, tj. počáteční aproximace kořene 1 je 0 1 = 3. Aproximace kořene 1: 1 1 = 1,782608695652 2 1 = 2,10014059474224 3 1 = 2,00971540717739 4 1 = 2,0001079735567 5 1 = 2,00000001359833 Hned první aproximace 1 1 ,,přestřelila hledaný kořen 1 = 2, tj. 0 1 > 1, 1 1 < 1, pro výpočet dalších aproximací je tedy použita klasická Newtonova metoda. Dále, položme 0 2 = 1,9 (což je počáteční aproximace pro kořen 2). Je 1 2 = 0,33823529411765 2 2 = 1,11911764705882 3 2 = 1,00270873930706 4 2 = 1,00000146586547 5 2 = 1,00000000000043 § 3.3. Newtonova metoda a její modifikace 85 Opět první aproximace 1 1 je menší než hledaný kořen 2 = 1, takže pro výpočet dalších aproximací použijeme klasickou Newtonovu metodu. Za počáteční aproximace kořene 3 zvolíme 0 3 = 0,9. Další aproximace jsou 1 3 = -8,899999999935 2 3 = -4,000000000 . . . 2 3 = 3 3 = 4 3 Pro srovnání: přesné kořeny jsou 1 = 2, 2 = 1, 3 = -4. Tvar polynomu zachycuje obrázek 5. Pro srovnání uveďme výsledky, které bychom dostali metodou -5 -4 -3 -2 -1 0 1 2 3 -30 -20 -10 0 10 20 30 Obr. 3.2: Průběh polynomu P (x) = x3 + x2 - 10x + 8. snižování stupně. Výpočet 1 by samozřejmě probíhal stejným způsobem. Pokud 5 1 = 2,00000001359833 považujeme za dostatečně přesnou aproximaci 1, dostaneme polynom P1(x) = P(x)/(x - 5 1) ve tvaru P1(x) = x2 + 3.00000001359833 x- 3.99999993200835 a následným použitím zdvojené Newtonovy metody vyjde 5 2 = 0.99999998368243. Dalším snížením stupně polynomu dostaneme P2(x) = x+3.99999999728076, takže nelze dostat přesnější aproximaci kořene 3 než hodnotu -3.99999999728076. Význam Maehlyovy metody se projevuje zejména u polynomů vyšších stupňů, jak dokládá následující příklad. Příklad 3.6. Položme P(x) = 15 i=1 (x-i). V uvedené tabulce vidíme rozdíl mezi metodou snižování stupně a Maehlyovou metodou. V tabulce nejsou uvedeny všechny výsledky, jen aproximace nejmenších kořenů, kde je chyba největší. 86 3. POLYNOMY snižování řádu Maehlyova metoda 1 15,0000037 15,0000037 ... 13 2,92420696801 2,999999999978 14 2,01522846251 2,000000000007 15 0,99878713149 1,000000000000 § 3.4. Bairstowova metoda Doposud jsme se zabývali výpočtem reálných kořenů polynomu. Pokud jde o výpočet komplexních kořenů, lze užít některých z předcházejících metod, např. Newtonovy metody s komplexní počáteční aproximací, nebo některých speciálních metod: Lehmerovy-Schurovy metody, Graeffovy metody, Bernoulliovy metody nebo Bairstowovy metody. Pojednáme zde podrobněji o Bairstowově metodě. Ostatní zmíněné metody jsou uvedeny např. v [19]. Podstatou Bairstowovy metody je myšlenka nalezení kvadratického trojčlenu, který je dělitelem daného polynomu: Nechť P(x) = a0xn + a1xn-1 + . . . + an. Označme z, z, z = u+iv, dvojici komplexně sdružených kořenů polynomu P. Čísla z, z lze považovat za kořeny kvadratického trojčlenu D(x) = x2 +px+q, p = -2u, q = u2 + v2 . Naším úkolem je najít čísla p, q tak, aby polynom D dělil polynom P beze zbytku. Budeme-li znát čísla p, q, pak snadno určíme komplexní kořeny z, z polynomu P. Tuto myšlenku lze formálně zapsat takto: P(x) = D(x)Q(x) + Ax + B, (3.13) kde D(x) = x2 + px + q, Q(x) = Q(x, p, q) je polynom stupně n - 2, A = A(p, q), B = B(p, q). Je třeba určit p, q tak, aby A(p, q) = 0, B(p, q) = 0. (3.14) Systém (3.14) je systém nelineárních rovnic a budeme ho řešit Newtonovou metodou pro systémy nelineárních rovnic (2.47). § 3.4. Bairstowova metoda 87 Považujeme-li kvadratický trojčlen D(x) = x2 + px + q za aproximaci dělitele, dostaneme další aproximaci D1(x) = x2 +p1x+q1, p1 = p+h, q1 = q +k, řešením soustavy A p A q B p B q h k = A(p, q) B(p, q) neboli, označíme-li A p = A p, A q = A q, B p = B p, B q = B q, A(p, q) + A p(p, q)h + A q(p, q)k = 0, B(p, q) + B p(p, q)h + B q(p, q)k = 0. (3.15) Veličiny A(p, q), B(p, q) lze získat zobecněným Hornerovým schematem (viz strana 88) při dělení polynomu P trojčlenem D. Derivujeme vztah (3.13) podle p a q: 0 = xQ(x) + Q p(x)D(x) + A px + B p 0 = Q(x) + Q q(x)D(x) + A qx + B q Odtud (a) xQ(x) = -Q p(x)D(x) - A px - B p, (b) Q(x) = -Q q(x)D(x) - A qx - B q. (3.16) Je zřejmé, že -A p, -B p resp. -A q, -B q jsou koeficienty lineárních zbytků při dělení polynomu xQ(x) polynomem D(x), resp. Q(x) polynomem D(x). Položme a = -A q, b = -B q. Tato čísla lze opět získat zobecněným Hornerovým algoritmem pro dělení polynomů Q(x)/D(x). Vypočteme nyní A p, B p. Vynásobme (3.16b) číslem x: xQ(x) = -xQ q(x)D(x) + ax2 + bx a po úpravě můžeme tento vztah zapsat ve tvaru xQ(x) = a(x2 + px + q) + bx - xQ q(x)D(x) - apx - q, a tedy xQ(x) = a - xQ q(x) D(x) + (b - ap)x - aq. (3.17) Porovnáním (3.17) a (3.16a) dostaneme A p = ap - b, B p = aq. 88 3. POLYNOMY Soustavu (3.15) můžeme nyní zapsat takto: (ap - b)h - ak + A = 0, aqh - bk + B = 0. (3.18) Vyřešením této soustavy získáme čísla h, k a kvadratický trojčlen D1(x) = x2 + (p + h)x + q + k, jehož kořeny jsou aproximací kořenů z, z polynomu P. Postup opakujeme. Jako kriterium pro zastavení výpočtu lze zvolit: |h| < |p|, |k| < |q|, > 0 zadaná přesnost. Na závěr této kapitoly uvedeme zobecněné Hornerovo schéma pro výpočet hodnot A, B, a, b. Zobecněné Hornerovo schema. Je dán polynom P(x) = a0xn + . . . + an a aproximace kvadratického trojčlenu D(x) = x2 + px + q. Hodnoty A, B, a, b vypočítáme zobecněným Hornerovým schematem. Výpočet lze uspořádat do tabulky: a0 a1 a2 . . . an-3 an-2 an-1 an -p -pb0 -pb1 . . . -pbn-4 -pbn-3 -pbn-2 -q -qb0 . . . -qbn-5 -qbn-4 -qbn-3 -qbn-2 b0 b1 b2 . . . bn-3 bn-2 A B -p -pc0 -pc1 . . . -pcn-4 -q -qc0 . . . -qcn-5 -qcn-4 c0 c1 c2 a b Zde Q(x) = b0xn-2 + . . . + bn-2, bj = aj - pbj-1 - qbj-2, j = 2, . . . , n - 2 b0 = a0 b1 = a1 - pb0 A = an-1 - pbn-2 - qbn-3 B = an - qbn-2 Dále Q(x) = D(x)R(x) + ax + b, kde R(x) = c0xn-4 + . . . + cn-4. Koeficienty cj, a, b jsou určeny obdobným způsobem jako koeficienty bj, A, B, a to: a = -pcn-4 - qcn-5 + bn-3, b = -qcn-4 + bn-2, cj = bj - pcj-1 - qcj-2, j = 2, . . . , n - 4 . Příklad 3.7. Užitím Bairstowovy metody nalezněte dvojici komplexně sdružených kořenů polynomu P(x) = x4 - 3x2 + 4x - 1. § 3.4. Bairstowova metoda 89 Řešení. Ze Sturmovy věty plyne, že polynom má 2 reálné a 2 komplexně sdružené kořeny. Za počáteční aproximaci kvadratického trojčlenu zvolme D0(x) = x2 + x + 1, tj. p = 1, q = 1. Aplikujme nyní zobecněné Hornerovo schema: 1 0 -3 4 -1 -1 -1 1 3 -1 -1 1 3 1 -1 -3 8 2 -1 -1 -1 -1 1 -2 -4 Odtud plyne, že A = 8, B = 2, a = -2, b = -4. Odpovídající systém rovnic (3.18) je tvaru 2h + 2k + 8 = 0 -2h + 4k + 2 = 0. Odtud h = -7/3, k = -5/3 a tedy nový kvadratický trojčlen je tvaru D1(x) = x2 + 1 - 7 3 x + 1 - 5 3 = x2 - 4 3 x - 2 3 . Nyní výpočet opakujeme s tímto kvadratickým trojčlenem. Koeficienty kvadratických trojčlenů jsou uvedeny v následující tabulce. pk qk k = 0 1 1 k = 1 -4/3 -2/3 k = 2 -2,283000949 2,1946816134 k = 3 -2,03645296288 1,53678222972 ... k = 8 -1,90640113643838 1,3662797903433 k = 9 -1,90640113643838 1,3662797903433 Aproximace 8, 9 ukazují, že výpočet je stabilizován, neboť absolutní hodnota rozdílu dvou po sobě jdoucích aproximací je zanedbatelná. Za aproximaci dvojčlenu lze vzít D(x) x2 - 1,90640113643838x + 1,3662797903433. Kořeny tohoto dvojčlenu jsou 1,2 = 0,95320056821919 0,67652677240516i. 90 3. POLYNOMY Cvičení ke kapitole 3 1. Pomocí Hornerova schematu vypočtěte hodnotu P(), P () a P () pro polynom P(x) = 2x5 - x4 + 3x2 + x - 5 a = 2. 2. Užitím zobecněného Hornerova algoritmu vypočtěte hodnotu polynomu z příkladu 1 v bodě z = 1 + i. (Řešení: P(1 + i) = -8 - i.) 3. Je dána rovnice 3x3 -x-1 = 0. Určete interval, ve kterém leží kladný kořen této rovnice. 4. Užitím Sturmovy věty určete počet reálných kořenů polynomů a) P(x) = x4 - 4x + 1 (2 reálné kořeny: 1 [0, 1], 2 [1, 2]), b) P(x) = x3 + 3x2 - 1 (3 reálné kořeny: 1 [0, 1], 2 [-1, 0], 3 [-3, -2]). 5. Sestrojte Sturmovu posloupnost pro polynom P(x) = x3 + 3x2 - 1 a určete počet reálných kořenů tohoto polynomu. Ukažte, že všechny reálné kořeny leží v intervalu [-3, 1] a najděte intervaly, ve kterých leží vždy právě jeden kořen. 6. Pomocí Sturmovy věty určete počet reálných kořenů polynomu P(x) = x4 - x2 + 3. 7. Užitím zdvojené Newtonovy-Maehlyovy metody nalezněte kořeny polynomu P(x) = x3 + 3x2 - 1. (Řešení: 1 = 0,532089, 2 = -0,652706, 3 = -2,87938.) 8. Určete reálné a komplexní kořeny polynomu P(x) = x4 + 2x2 - x - 3. (Řešení: 1 = 1,2412, 2 = -0,876053, 3,4 = -0,124035 1,74096i.) 9. Užitím Bairstowovy metody nalezněte komplexní kořeny polynomu P(x) = x4 + 4x2 - 3x - 1. (Řešení: 1,2 = -0,3111 2,1231i.) Kontrolní otázky ke kapitole 3 91 Kontrolní otázky ke kapitole 3 1. Platí věta 3.1 i pro polynomy s komplexními koeficienty? 2. Bylo by možné použít zdvojenou Newtonovu metodu v případě n = 2 a 1 = 2 (viz předpoklady věty 3.6)? 3. Co by se mohlo stát, pokud by při použití zdvojené Newtonovy metody nebyl splněn předpoklad, že všechny kořeny jsou reálné? 4. Lze použít Maehlyovu metodu pro polynom s vícenásobnými kořeny? 5. Jak se dá použít princip Maehlyovy metody v případě, že polynom má komplexní kořeny? 92 3. POLYNOMY Kapitola 4 Přímé metody řešení systémů lineárních rovnic Nyní se budeme zabývat metodami pro řešení systému lineárních rovnic Ax = b, A = a11 a1n ... ... an1 ann , b = x1 ... xn . (4.1) Předpokládáme, že A je reálná čtvercová matice řádu n (A Mn), b je reálný vektor. Je-li matice A regulární, má systém (4.1) jediné řešení x : x = A-1 b (4.2) V této kapitole se budeme zabývat přímými metodami řešení systému (4.1), tj. metodami, jejichž aplikací získáme přesné řešení x po konečném počtu kroků za předpokladu, že všechny aritmetické operace provádíme přesně a vstupní údaje jsou dány přesně. Při vyšetřování těchto metod se budeme také zabývat otázkou, kolik aritmetických operací je třeba pro realizaci výpočtu užitím dané metody. Jelikož výpočty provádíme v důsledku zápisů čísel v počítači pouze s přibližnými čísly a zaokrouhlujeme během výpočtu, budeme věnovat také pozornost přesnosti nalezeného řešení užitím dané metody -- to jsou tzv. a priori odhady. § 4.1. Systémy lineárních rovnic Připomeňme nyní základní poznatky z lineární algebry. Matici tvaru (A | b) = a11 a1n b1 a21 a2n b2 ... ... ... an1 ann bn (4.3) 94 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC nazýváme rozšířenou maticí systému (4.1). Definice 4.1. Systém (4.1) se nazývá řešitelný (resp. neřešitelný), jestliže existuje alespoň jedno (resp. neexistuje žádné) řešení. Věta 4.1. (Frobenius). Systém lineárních rovnic (4.1) je řešitelný právě tehdy, když hodnost matice A je rovna hodnosti rozšířené matice systému (A | b). Definice 4.2. Matice R Mn, R = (rij ), se nazývá horní trojúhelníková matice, jestliže rij = 0 pro i > j. Matice R Mn, R = (rij ), se nazývá dolní trojúhelníková matice, jestliže rij = 0 pro i < j. Definice 4.3. Matice A Mn se nazývá pásová, jestliže existují přirozená čísla p, q, 1 < p, q < n taková, že aij = 0, jestliže i + p j nebo j + q i. Šířka pásu w = p + q - 1. Poznámka 1. Pro p = q = 2 se pásová matice nazývá třídiagonální a je tvaru A = a11 a12 0 0 a21 a22 a23 ... 0 a32 a33 ... ... ... 0 ... an-1,n-1 an-1,n 0 0 an,n-1 ann . Definice 4.4. Matice A Mn se nazývá ryze řádkově diagonálně dominantní, jestliže |aii| > n j=1 j=i |aij|, i = 1, . . . , n. (4.4) Věta 4.2. Jestliže A Mn je ryze řádkově diagonálně dominantní, je regulární. Důkaz. Předpokládejme, že A není regulární. Pak systém Ax = o má netriviální řešení ~x = (x1, . . . , xn)T . Nechť |xk| = max 1i n |xi|. Podle předpokladu je xk = 0. Nyní, i-tá rovnice systému Ax = o je tvaru n j=1 aijxj = 0 a k-tá rovnice může být zapsána ve tvaru akkxk + n j=1 j=k akjxj = 0, § 4.2. Gaussova eliminační metoda 95 tj. akk = - n j=1 j=k akj xj xk . Přechodem k absolutním hodnotám dostaneme |akk| n j=1 j=k |akj| |xj| |xk| n j=1 j=k |akj|, což je spor s předpokladem (4.4). Matice A musí tedy být regulární. 2 Definice 4.5. Symetrická matice A Mn se nazývá pozitivně definitní, jestliže xT Ax > 0 pro každý nenulový vektor x Rn . Věta 4.3. Pozitivně definitní matice je regulární. Důkaz. Předpokládejme, že A je singulární, tzn. že systém Ax = o má netriviální řešení x = o, Ax = o. Pro tento vektor x platí xT Ax = 0, což je spor s pozitivní definitností matice A a tedy A je regulární. 2 Většina výpočetních algoritmů numerické lineární algebry má společnou základní strukturu, kterou lze popsat takto: 1. Daný problém se převede na ,,redukovaný problém. 2. Řeší se tento redukovaný problém při využití jeho speciální struktury. 3. Řešení původního problému se zpětně získá z řešení redukovaného problému. Úmluva. V celé této kapitole budeme předpokládat, že A Mn. Tuto skutečnost nebudeme zdůrazňovat, pokud nemůže dojít k nedorozumění. § 4.2. Gaussova eliminační metoda Nejznámější přímou metodou pro řešení systému lineárních rovnic je Gaussova eliminační metoda ,,GEM , kterou lze rovněž zahrnout do výše uvedené třídy algoritmů. Hlavní myšlenka této metody spočívá v převedení daného systému Ax = b vhodnými ekvivalentními úpravami na systém Rx = c s horní trojúhelníkovou maticí R, tj. problém se převede na redukovaný problém. Této etapě říkáme přímý chod. Tento systém má stejné řešení jako původní systém Ax = b a jeho řešení lze snadno získat zpětnou substitucí (za předpokladu rii = 0, i = 1, . . . , n): xi = ci - n k=i+1 rikxk rii , i = n, n - 1, . . . , 1. (4.5) Jelikož systém Rx = c řešíme od poslední rovnice, říká se této etapě zpětný chod. 96 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC V prvém kroku algoritmu se vhodný násobek první rovnice odečítá od zbývajících n-1 rovnic tak, aby koeficienty u x1 ve zbývajících rovnicích byly rovny nule; tedy x1 zůstává pouze v první rovnici. Tento postup je možný pouze za předpokladu, že a11 = 0. Splnění tohoto předpokladu lze dosáhnout vhodnou výměnou rovnic, tj. nalezením alespoň jednoho prvku ai1 = 0. Uvedený postup lze vhodně zapsat pomocí maticových operací aplikovaných na matici (A | b) = a11 a1n b1 a21 a2n b2 ... ... ... an1 ann bn . První krok GEM vede na matici A | b tvaru A | b = a 11 a 12 a 1n b 1 0 a 22 a 2n b 2 ... ... ... ... 0 a n2 a nn b n a tento krok můžeme formálně popsat takto: (a) Urči prvek ar1 = 0, r = 1, 2, . . . , n, a pokračuj krokem (b); jestliže žádné takové r neexistuje, nelze pokračovat. (b) Vyměň první a r-tý řádek matice (A | b). Výsledkem je matice ( A | b). (c) Pro i = 2, 3, . . . , n, odečti násobek li1 = ai1 a11 prvního řádku od i-tého řádku matice ( A | b). Výsledkem je matice (A | b ). (4.6) Čísla li1 se nazývají multiplikátory. Prvek ar1 se nazývá hlavním prvkem nebo také pivotem. Zapišme tento postup užitím maticového násobení: ( A | b) = P1(A | b), (A | b ) = G1( A, b) = G1P1 (A, b) , (4.7) § 4.2. Gaussova eliminační metoda 97 kde P1 je permutační matice a G1 je dolní trojúhelníková matice (P1, G1 Mn): P1 = 0 1 ... 1 ... ... 1 0 1 ... 1 , G1 = 1 0 -l21 1 ... ... ... -ln1 0 1 . Při násobení permutační maticí P1 se vymění první a r-tý řádek matice A. Prvky permutační matice P1 jsou dány vztahy pii = 1, i = 1, r, p1r = 1, pr1 = 1, p11 = 0, prr = 0, pij = 0 pro ostatní i, j. Matice G1 se nazývá Frobeniova matice. Matice P1, G1 jsou regulární a platí P-1 1 = P1, G-1 1 = 1 0 l21 ... ... ... ln1 0 1 . Je zřejmé, že systémy Ax = b, A x = b mají stejné řešení. Je totiž: Ax = b G1P1Ax = A x = b = G1P1b a A x = b P-1 1 G-1 1 A x = Ax = b = P-1 1 G-1 1 b x = x . Po prvním eliminačním kroku je výsledná matice A | b tvaru (A | b ) = a 11 aT b 1 0 ~A ~b , kde ~A je čtvercová matice řádu n - 1. Nyní aplikujeme výše uvedený algoritmus (4.6) na systém ( ~A | ~b) a postup pak opět opakujeme. Označíme-li (A(1) | b(1) ) = (A | b), (A | b ) = (A(2) | b(2) ) atd., lze uvedenou proceduru zapsat takto: (A | b) = (A(1) | b(1) ) (A(2) | b(2) ) . . . (A(n) | b(n) ) = (R | c), (4.8) kde R je požadovaná horní trojúhelníková matice. Matice (A(k) | b(k) ) v této 98 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC posloupnosti je tvaru (A(k) | b(k) ) = × × × × × 0 × × × × × ... ... ... ... ... ... 0 × × × × 0 0 × × × ... ... ... ... ... ... ... ... ... ... 0 0 × × × = = A (k) 11 A (k) 12 b (k) 1 O A (k) 22 b (k) 2 . (4.9) Matice A (k) 11 je horní trojúhelníková matice řádu (k - 1), (k 2). Přechod (A(k) | b(k) ) (A(k+1) | b(k+1) ) spočívá v aplikaci algoritmu (4.6) na matici (A (k) 22 | b (k) 2 ), což je matice typu (n - k + 1) × (n - k + 2). Prvky matic A (k) 11 , A (k) 12 a vektoru b (k) 1 se při této transformaci nemění. Stejně jako v prvním kroku lze tuto transformaci vyjádřit maticově (A(k) | b(k) ) = GkPk(A(k-1) | b(k-1) ) (4.10) (R, c) = Gn-1Pn-1 . . . G1P1(A | b) (4.11) s odpovídajícími permutačními maticemi Pk a Frobeniovými maticemi Gk tvaru Gk = 1 0 ... ... 1 -lk+1,k ... ... ... 0 -ln,k 1 . Zde opět čísla lik, i = k + 1, . . . , n se nazývají multiplikátory. GEM rovněž dává velmi důležitý výsledek: Věta 4.4. Jestliže GEM lze provést bez výměny řádků, pak matici A lze rozložit na součin dolní a horní trojúhelníkové matice A = LR, (4.12) kde matice R = (rij ), L = (lij) jsou definovány takto: rij = a (i) ij , i = 1, . . . , j 0, i = j + 1, j + 2, . . . , n (4.13) § 4.2. Gaussova eliminační metoda 99 a lij = 0, i = 1, 2, . . ., j - 1, j 2 1, i = j, j = 1, . . . , n a (j) ij /a (j) ii , i = j + 1, . . . , n, (4.14) lij jsou příslušné multiplikátory dané algoritmem (4.6). Důkaz. Jestliže neměníme pořadí řádků, je P1 = P2 = . . . = Pn-1 = E. Nyní z (4.10) a (4.11) plyne, že R = Gn-1 . . . G1A, a tedy G-1 1 G-1 2 . . . G-1 n-1R = A. (4.15) Dále G-1 j = 1 0 ... ... 1 lj+1,j ... ... ... 0 lnj 1 . Odtud je zřejmé, že G-1 1 . . . G-1 n-1 = 1 0 l21 ... ... ... ... ... ln1 ln,n-1 1 . Z algoritmu (4.6) plyne, že prvky matice R jsou dány vztahy (4.13). Položíme-li nyní L = G-1 1 . . . G-1 n-1, plyne ze (4.15) tvrzení věty. 2 Poznámka 2. Jestliže GEM nelze provést bez výměny řádků, definuje tento algoritmus rozklad matice PA: PA = LR, (4.16) kde P = Pn-1Pn-2 . . . P1. Při praktickém výpočtu ovšem nevíme předem, které řádky budeme muset vyměnit, takže není možné určit součin PA a pak provést rozklad. Rozklad je ovšem možné provést pomocí následující úvahy: Nechť například je třeba při výpočtu vyměnit k-tý a j-tý řádek, k < j. Pokud bychom to věděli předem a provedli výměnu před začátkem vlastní GEM, pak v matici A(j) , by byly oproti současnému stavu vyměněny celé řádky k-tý a j-tý, v matici obsahující mezivýsledek pro výpočet L by byly vyměněny jen spočítané části obou řádků, tedy sloupce 1, . . . , k-1. Můžeme tedy provést příslušné výměny a zaznamenat si, které řádky byly vyměněny. 100 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Pro toto zaznamenání není potřeba pracovat s celými permutačními maticemi, ale stačí tzv. permutační vektor p. Na začátku výpočtu položíme p = (1, . . . , n)T a při výměně řádků vyměníme stejné řádky i ve vektoru p. Pak jeho i-tá složka pi udává původní číslo řádku matice A v matici PA. Tj. jestliže například po ukončení výpočtu je p = (3, 5, 1, 4, 2)T , pak matice PA v (4.16) je postupně tvořena třetím, pátým, prvním, čtvrtým a druhým řádkem matice A. Trojúhelníkový rozklad (4.12) resp. (4.16) má velký význam pro řešení systémů lineárních rovnic. Jestliže známe rozklad (4.16), pak systém Ax = b lze ihned řešit pro libovolný vektor b. Je totiž PAx = LRx = Pb. Řešení x nyní najdeme řešením dvou systémů s trojúhelníkovými maticemi: Lu = Pb, Rx = u za předpokladu rii = 0, i = 1, . . . , n. První systém má dolní trojúhelníkovou matici a řešíme jej tedy od první rovnice, druhý systém má horní trojúhelníkovou matici a řešíme jej od poslední rovnice. Podívejme se na počet násobení a dělení pro přímý chod GEM. Podle algoritmu (4.6) je v prvním kroku zapotřebí vypočítat (n - 1) multiplikátorů, což znamená (n-1) dělení. Každý prvek první rovnice včetně pravé strany musí být násoben každým multiplikátorem, tzn. že v prvním kroku je zapotřebí celkem n - 1 + n(n - 1) = (n - 1)(n + 1) násobení a dělení (násobicích operací). Na j-tém kroku se pak požaduje (n - j) + (n - j + 1)(n - j) násobicích operací. Připomeňme nyní, že m j=1 1 = m, m j=1 j = m(m + 1) 2 , m j=1 j2 = m(m + 1)(2m + 1) 6 . Pak celkový počet násobicích operací pro přímý chod je roven n-1 j=1 (n - j)(n - j + 2) = 2n3 + 3n2 - 5n 6 . Podobně lze ukázat, že pro zpětný chod, tj. pro řešení systému Rx = c je zapotřebí 1 + n-1 j=1 ((n - j) + 1) = n2 + n 2 násobicích operací. Celkový počet násobicích operací pro GEM je roven 2n3 + 3n2 - 5n 6 + n2 + n 2 = n3 + 3n2 - n 3 n3 3 . § 4.2. Gaussova eliminační metoda 101 Obdobným způsobem lze spočítat počet sčítání a odčítání. Počet těchto operací pro GEM je: 2n3 + 3n2 - 5n 6 n3 3 . Je zřejmé, že počet aritmetických operací velmi rychle roste s rostoucím n. Tento fakt ukazuje pro některá n následující tabulka ([4]): n násobení/dělení sčítání/odčítání 3 17 11 5 65 50 10 430 375 50 44150 42875 100 343300 338250 Zmíníme se nyní o problémech s výběrem pivotů. Viděli jsme, že GEM selhává, jestliže hlavní prvek je roven nule. V tomto případě lze vyměnit pořadí rovnic. Ale problematická situace nastává, jestliže některý z pivotů je blízký nule: v tomto případě lze výpočet provést, ale získané výsledky mohou být zcela chybné. Ilustrujme tuto skutečnost na známém příkladu Forsytha a Molera (viz [6]): Příklad 4.1. Aplikujme GEM na matici A = 0, 0001 1 1 1 . Multiplikátor l21 = 1/10-4 = 104 . Matice G = 1 0 -104 1 a A (2) 2 = R = 0, 0001 1 0 -104 , L = 1 0 104 1 , neboť 1-104 -104 . GEM definuje rozklad matice A na součin matic L a R, což je ale v tomto případě L R = 0, 0001 1 1 0 , tedy tato matice se nerovná matici A. Výsledek lze vysvětlit faktem, že prvek a (1) 11 = 0, 0001 je velmi malý, což má za následek velký multiplikátor a při jeho použití se prakticky vyloučí malé vstupní prvky (1-104 -104 ). Tomuto problému se můžeme vyhnout výměnou řádků matice A. Uvažujme tedy matici P1A = 0 1 1 0 0, 0001 1 1 1 = 1 1 0, 0001 1 102 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC a aplikujeme GEM na matici P1A. Nyní l21 = 10-4 . R = G1P1A = 1 0 -10-4 1 1 1 -10-4 1 = 1 1 0 1 , (1 - 10-4 1), L = 1 0 -10-4 1 LR = 1 1 -10-4 1 = P1A. Tomuto postupu obecně říkáme Gaussova eliminace s částečným výběrem hlavniho prvku (pivota). Tento postup spočívá v tom, že v každém kroku vybíráme v příslušném sloupci prvek maximální v absolutní hodnotě, tj. určíme p tak, aby |a (k) pk | = max kin |a (k) ik | a vyměníme p-tou a k-tou rovnici. Další vhodnou modifikací GEM je úplný výběr pivota. Tato procedura znamená, že na j-tém kroku vybíráme prvek maximální v absolutní hodnotě ze submatice A (k) 22 , tj. a(k) rs = max i,j=k,...,n a (k) ij . Pak vyloučíme neznámou xs pomocí r-té rovnice ze zbývajících (n-j) rovnic. Pro provedení 1. kroku této procedury je třeba n2 - 1 porovnání absolutních hodnot koeficientů. Druhý krok vyžaduje (n-1)2 -1 porovnání a celkový počet porovnání je roven n k=2 (k2 - 1) = n(n - 1)(2n + 5) 6 . Poznámka 3. Výměnu řádků u GEM s částečným výběrem pivota resp. řádků a sloupců u GEM s úplným výběrem pivota lze realizovat opět prostřednictvím permutačních matic. Příklad 4.2. Systém 2x1 + 4x2 - x3 = -5 x1 + x2 - 3x3 = -9 4x1 + x2 + 2x3 = 9 řešte 1) GEM bez výběru pivota, 2) GEM s částečným výběrem pivota. Řešení. § 4.2. Gaussova eliminační metoda 103 1) GEM bez výběru pivota: (A | b) = (A(1) | b(1) ) = 2 4 -1 -5 1 1 -3 -9 4 1 2 9 Prvek a11 = 2 l21 = 1 2 , l31 = 2. (A(2) | b(2) ) = 2 4 -1 -5 0 -1 -5 2 -13 2 0 -7 4 19 Prvek a (2) 22 = -1 l31 = 7. (A(3) | b(3) ) = 2 4 -1 -5 0 -1 -5 2 -13 2 0 0 43 2 129 2 Nyní řešíme systém A(3) x = b(3) , tj. 2x1 + 4x2 - x3 = -5 -x2 - 5 2 x3 = - 13 2 43 2 x3 = 129 2 Řešíme od poslední rovnice (zpětný chod): x3 = 3, x2 = -1, x1 = 1. Matice L je v tomto případě tvaru: L = 1 0 0 1 2 1 0 2 7 1 a matice R = A(3) R = 2 4 -1 0 -1 -5 2 0 0 43 2 . Snadno se ověří, že A = LR. 104 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 2) GEM s částečným výběrem pivota: (A | b) = (A(1) | b(1) ) = 2 4 -1 -5 1 1 -3 -9 4 1 2 9 Je |a31| = max 1i 3 |ai1| vyměníme 1. a 3. rovnici: ( A | b) = 4 1 2 9 1 1 -3 -9 2 4 -1 -5 ; permutační matice P1 = 0 0 1 0 1 0 1 0 0 . Hlavní prvek a11 = 4 l21 = 1 4 , l31 = 1 2 . Odtud (A(2) | b(2) ) = 4 1 2 9 0 3 4 -7 2 -45 4 0 7 2 -2 -19 2 . Jelikož |a (2) 32 | = max(|a (2) 22 |, |a (2) 32 |), vyměníme 2. a 3. řádek, tj. matici A(2) vynásobíme permutační maticí P2, která je tvaru P2 = 1 0 0 0 0 1 0 1 0 , tj. P2(A(2) | b(2) ) = 4 1 2 9 0 7 2 -2 -19 2 0 3 4 -7 2 -45 4 . Odpovídající multiplikátor l32 = 3 14 a výsledná matice (A(3) | b(3) ) = 4 1 2 9 0 7 2 -2 -19 2 0 0 -43 14 -129 14 § 4.2. Gaussova eliminační metoda 105 Tento systém opět řešíme od poslední rovnice a opět dostaneme: x3 = 3, x2 = -1, x1 = 1. Dále P2P1 = 0 0 1 1 0 0 0 1 0 , P2P1A = 4 1 2 2 4 -1 1 1 -3 . Snadno se ověří, že GEM definuje tento rozklad matice PA, P = P2P1: PA = LR, kde L = P2P1(G2P2G1P1)-1 , a tedy L = 1 0 0 1 2 1 0 1 4 3 14 1 , R = 4 1 2 0 7 2 -2 0 0 -43 14 . Nyní se ještě zmíníme o aplikaci GEM na speciální typy matic (důkazy viz [4], [13]). Věta 4.5. a) Nechť matice A je ryze řádkově diagonálně dominantní. Pak GEM lze provést bez výměny řádků a sloupců. b) Nechť matice A je pozitivně definitní. Pak GEM lze provést bez výměny řádků a sloupců. Za předpokladu, že všechny pivoty a (k) kk , k = 1, . . . , n, jsou různé od nuly, GEM definuje rozklad matice A na součin dolní a horní trojúhelníkové matice A = LR (říkáme, že se jedná o LR rozklad nebo LR faktorizaci). Z algoritmu GEM je zřejmé, že tento přímý rozklad nemusí existovat dokonce i pro velmi jednoduché matice. Zabývejme se nyní otázkou, kdy lze takový přímý rozklad provést. Věta 4.6. Nechť všechny hlavní minory matice A Mn jsou různé od nuly, tj. a11 = 0, a11 a12 a21 a22 = 0, . . . , det A = 0. Pak matici A lze rozložit na součin dolní a horní trojúhelníkové matice. 106 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Důkaz. (indukcí) Je-li n = 1 a prvek a11 = 0, je jasné, že tvrzení věty platí, neboť existují nenulová čísla c11, b11 tak, že a11 = c11b11, tj. A = CB, C = (c11), B = (b11). Nechť nyní podle indukčního předpokladu tvrzení platí pro matici An-1 Mn-1 a dokážeme, že platí i pro matici A Mn. Matici An-1 lze tedy vyjádřit ve tvaru An-1 = Cn-1Bn-1, kde Cn-1 je dolní trojúhelníková matice a Bn-1 je horní trojúhelníková matice. Matici A zapíšeme blokově takto: A = An-1 a1n a2n ... an-1,n an1 an,n-1 ann = An-1 u vT ann , kde vektory u, v jsou vektory dimenze n-1. Hledejme nyní matice C, B, A = CB, rovněž v blokovém tvaru: C = Cn-1 o xT cnn , B = Bn-1 y oT bnn . Zde x, y jsou neznámé vektory řádu n - 1 a bnn, cnn jsou neznámé prvky matic B, C. Podle pravidla o násobení blokově daných matic dostáváme z rovnice A = CB: An-1 u vT ann = Cn-1Bn-1 Cn-1y xT Bn-1 xT y + cnnbnn . (4.17) Podle předpokladu je matice An-1 regulární a tedy jsou regulární i matice Cn-1, Bn-1. Porovnáme-li ve vztahu (4.17) prvky v odpovídajících pozicích, dostaneme: An-1 = Cn-1Bn-1 Cn-1y = u xT Bn-1 = vT xT y + cnnbnn = ann (4.18) Ze vztahů (4.18) lze určit vektory x, y a čísla cnn, bnn, z nichž jedno lze volit libovolně (= 0). To znamená, že existuje dolní trojúhelníková matice C a horní trojúhelníková matice B tak, že A = CB. 2 Poznámka 4. Předepíšeme-li matici C diagonální prvky rovny 1, je rozklad jednoznačný. Na druhé straně, GEM bez výběru pivota rovněž definuje rozklad A = LR. Odtud plyne, že L = C, R = B. Odtud plyne, že neexistence přímého rozkladu matice a selhání GEM bez výběru pivota se dá objasnit stejnými příčinami. Příklad 4.3. Je dána matice A: A = 1 2 3 2 4 1 4 5 2 . § 4.3. Systémy se speciálními maticemi 107 Pokusme se matici A rozložit na součin CB. Porovnáním prvků v pozici (i, j) matice A a prvků v pozici (i, j) matice CB dostaneme (předpokládáme cii = 1, i = 1, . . . , n) 1 = b11 2 = c21b11 c21 = 2 2 = b12 4 = c21b12 + b22 b22 = 0 3 = b13 1 = c21b13 + b23 b23 = -5 4 = c31b11 c31 = 4 5 = c31b12 + c32b22 nelze určit c32, neboť b22 = 0. 2 = c31b13 + c32b23 + b33 Odtud C = 1 0 0 2 1 0 4 ? . B = 1 2 3 0 0 -5 . . . Rozklad není možný, neboť 1 2 2 4 = 0. V příkladě 4.2 v části 1) byl proveden přímý rozklad matice na součin horní a dolní trojúhelníkové matice. Pokud bychom chtěli udělat rozklad 2 4 -1 1 1 -3 4 1 2 = l11 0 0 l21 l22 0 l31 l32 l33 = u11 u12 u13 0 u22 u23 0 0 u33 porovnáním jednotlivých prvků, dostaneme soustavu rovnic: l11u11 = 2 l21u11 = 1 l31u11 = 4 l11u12 = 4 l21u12 + l22u22 = 1 l31u12 + l32u22 = 1 l11u13 = -1 l21u13 + l22u23 = -3 l31u13 + l32u23 + l33u33 = 2 Máme 9 rovnic pro 12 neznámých, řešení tedy není určeno jednoznačně. Rozklad vypočtený v příkladě 4.2 bychom dostali volbou l11 = l22 = l33 = 1. I když GEM definuje rozklad matice na součin trojúhelníkových matic, je někdy vhodné mít k dispozici algoritmus, který tuto faktorizaci provede přímo. Tento postup je vhodný zejména v případech, kdy je třeba řešit více systémů s toutéž maticí A, (viz [4], [13]). § 4.3. Systémy se speciálními maticemi Předchozí věty lze s výhodou užít i v případech, kdy matice A má speciální strukturu a předpokládat speciální tvar rozkladu matice. 108 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Věta 4.7. Nechť matice A Mn je symetrická a splňuje předpoklady předchozí věty. Pak existuje taková horní trojúhelníková matice T Mn, že A = T T T . Důkaz. Podle předchozí věty existuje rozklad A = CB. Nechť cii = 1, i = 1, . . . , n a rozklad je tedy jednoznačný. Nechť D je diagonální matice s prvky dii = bii, i = 1, . . . , n, na diagonále. Položme B = D-1 B. Pak A lze zapsat ve tvaru A = CD B. Zde B je horní trojúhelníková matice s jedničkami na diagonále. Dále platí A = AT = CD B T = BT DCT . BT je dolní trojúhelníková matice s jedničkami na diagonále, DCT je horní trojúhelníková matice. Z jednoznačnosti rozkladu plyne: BT = C, DCT = B. Nyní položíme T = D B, kde D je diagonální matice s prvky dii = bii, i = 1, . . . , n, na diagonále. Nyní T T T = BT D D B = BT D B = A. Dostali jsme požadovaný rozklad matice A. 2 Důsledek. Nechť T je matice uvedená v předchozí větě. Prvky této matice jsou určeny vztahy: t11 = a11 t1j = a1j t11 , j = 2, . . . , n tii = aii - i-1 l=1 t2 li, i = 2, . . . , n tij = 1 tii aij - i-1 l=1 tlitlj pro j > i tij = 0 pro i > j. (4.19) Důkaz plyne ihned porovnáním odpovídajících prvků ve vztahu A = T T T . Uvedená metoda se nazývá metoda Choleského nebo také metoda druhých odmocnin. Poznámka 5. Je-li A pozitivně definitní matice, probíhá výpočet bez komplikací. V tomto případě jsou všechny prvky matice T reálné. Obecně může mít matice T ryze imaginární prvky. Tyto prvky se vyskytují v celém řádku matice a při dalším § 4.3. Systémy se speciálními maticemi 109 výpočtu se imaginární jednotky vyruší. Tento rozklad vede opět na řešení dvou systémů s trojúhelníkovými maticemi: T T z = b, T x = z. Počet násobicích operací Choleského metody je přibližně n3 /6; přitom je třeba ještě vyčíslit n druhých odmocnin. Příklad 4.4. Choleského metodou řešte systém x1 + 2x2 - x3 = 1 2x1 + 2x2 + 4x3 = 3 -x1 + 4x2 + 8x3 = 6. Řešení. Najdeme rozklad matice A ve tvaru T T T = A. Prvky matice T vypočteme ze vztahů (4.19). t11 = 1, t12 = 2, t13 = -1, t22 = a22 - t2 12 = i 2, t23 = 1 t22 (a23 - t13t12) = -i3 2, t33 = a33 - (t2 13 + t2 23) = 5. Matice je tvaru T = 1 2 -1 0 i 2 -i3 2 0 0 5 . Nyní řešíme T T z = b, tj. 1 0 0 2 i 2 0 -1 -i3 2 5 z1 z2 z3 = 1 3 6 . Řešení tohoto systému je vektor z = (1, -i 2/2, 2)T . Nyní řešíme T x = z 1 2 -1 0 i 2 -i3 2 0 0 5 x1 x2 x3 = 1 -i 2/2 2 . Řešení tohoto systému (a tedy i řešení daného systému) je vektor x = (0, 7 10 , 2 5 )T . Přímý rozklad matice na součin trojúhelníkových matic lze také použít pro 110 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC třídiagonální matice. Uvažujme třídiagonální matici A: A = a11 a12 0 0 a21 a22 a23 0 0 ... ... ... ... ... ... ... an-1,n 0 0 an,n-1 ann Hledejme rozklad matice A ve tvaru: A = LU L = l11 0 0 l21 l22 0 0 0 l32 l33 ... ... ... ... 0 0 0 ln,n-1 lnn , U = 1 u12 0 0 0 1 u23 0 ... ... ... ... ... 1 un-1,n 0 0 1 (4.20) Je třeba určit (2n - 1) prvků matice L a (n - 1) prvků matice U, tedy celkem (3n - 2) prvků. Tyto prvky lze určit z následujících rovnic: a11 = l11 ai,i-1 = li,i-1, i = 2, 3, . . . , n aii = li,i-1ui-1,i + lii, i = 2, 3, . . . , n ai,i+1 = liiui,i+1, i = 1, 2, . . . , n - 1. (4.21) Tyto rovnice se snadno získají porovnáním prvků matice A s odpovídajícími prvky součinu LU. Uvedená metoda se nazývá Croutova. Věta 4.8. Nechť A Mn je třídiagonální matice s vlastnostmi: ai,i-1ai,i+1 = 0, i = 2, 3, . . . , n - 1, |a11| > |a12|, |aii| |ai,i-1| + |ai,i+1|, |ann| > |an,n-1|. i = 2, . . . , n - 1, A řádkově diagonálně dominantní Pak matice A je regulární a hodnoty lii, i = 1, . . . , n, vypočtené ze vztahů (4.21) jsou různé od nuly. Důkaz viz [4]. § 4.4. Výpočet inverzní matice a determinantu 111 Důsledek. Jsou-li splněny předpoklady věty 4.8, lze matici A rozložit na součin dolní a horní trojúhelníkové matice tvaru (4.20). Poznámka 6. Počet násobicích operací pro realizaci Croutovy metody je (5n-4), počet sčítacích operací (3n - 3). Jestliže matici A vyjádříme ve tvaru A = LU, pak systém Ax = b lze opět jednoduše řešit takto: Ax = b Ly = b Ux = y. Příklad 4.5. Croutovou metodou řešte systém 2x1 - x2 = 4 x1 + 4x2 + x3 = 5 x2 + 3x3 - 2x4 = -1 2x3 - 3x4 = 7 5 Řešení. Podle vztahů (4.21) určíme prvky matic L a U: i = 1 l11 = a11 = 2, u12 = a12 l11 = -1 2 i = 2 l22 = a22 - l21u12 = 4 - 1(-1 2 ) = 9 2 l21 = a21 = 1 u23 = a23 l22 = 1 9 2 = 2 9 i = 3 l32 = a32 = 1, l33 = a33 - l32u23 = 3 - 1.2 9 = 25 9 u34 = a34 l33 = - 2 25 9 = -18 25 i = 4 l43 = a43 = 2, l44 = a44 - l43u34 = -3 - 2(-18 25 ) = -39 25 Matice L a U jsou tvaru L = 2 0 0 0 1 9 2 0 0 0 1 25 9 0 0 0 2 -39 25 , U = 1 -1 2 0 0 0 1 2 9 0 0 0 1 -18 25 0 0 0 1 . Nyní řešíme systém Ly = b. Řešením je vektor y = (2, 2 3 , -3 5 , -5 3 )T . Nyní řešíme systém Ux = y. Řešením tohoto systému, a tedy i daného systému, je vektor x = (38 15 , 16 15 , -9 5 , -5 3 )T . § 4.4. Výpočet inverzní matice a determinantu S problémem řešení systému Ax = b souvisí také problémy výpočtu inverzní matice a determinantu matice. 112 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Výpočet inverzní matice k matici A je ekvivalentní řešení systému AX = E, kde X = A-1 , E je jednotková matice. Nechť X = (xij). Pak řešit systém AX = E znamená řešit n systémů tvaru A x11 x21 ... xn1 = 1 0 ... 0 , A x12 x22 ... xn2 = 0 1 ... 0 , . . . A x1n x2n ... xnn = 0 0 ... 1 , tj. řešíme n systémů s toutéž maticí A a s různými pravými stranami. K řešení těchto systémů lze užít některé z již uvedených přímých metod (např. GEM). Příklad 4.6. Užitím GEM nalezněte matici inverzní k matici A = 2 -7 4 1 9 -6 -3 8 5 . Řešení. Řešit systém AX = E, kde X = (xij ) je inverzní matice, znamená řešit n systémů vždy s toutéž maticí A. Postup při aplikaci GEM zapíšeme do tabulky: ai1 ai2 ai3 b1 b2 b3 2 -7 4 1 0 0 1 9 -6 0 1 0 -3 8 5 0 0 1 2 -7 4 1 0 0 0 25 2 -8 -1 2 1 0 0 -5 2 11 3 2 0 1 2 -7 4 1 0 0 0 25 2 -8 -1 2 1 0 0 0 47 5 7 5 1 5 1 Prvky inverzní matice X = (xij) získáme řešením systémů rovnic 2 -7 4 0 25 2 -8 0 0 47 5 x11 x21 x31 = 1 -1 2 7 5 , § 4.4. Výpočet inverzní matice a determinantu 113 2 -7 4 0 25 2 -8 0 0 47 5 x12 x22 x32 = 0 1 1 5 , 2 -7 4 0 25 2 -8 0 0 47 5 x13 x23 x33 = 0 0 1 . Výsledná matice je tvaru X = A-1 = 1 235 93 67 6 13 22 16 35 5 25 . Je třeba poznamenat, že výpočet inverzní matice je třikrát ,,dražší než řešení systému Ax = b. Z těchto důvodů je vhodné se ,,vyhnout přímému výpočtu A-1 kdykoliv je to možné. Lineární systém bychom nikdy neměli řešit explicitním výpočtem inverzní matice. Pro zajímavost uvedeme ještě dva užitečné vzorce pro výpočet inverze matice B, která se poněkud liší od matice A ([6]): 1. Shermanův-Morrisonův vzorec. Nechť u, v jsou vektory, A Mn je regulární matice. Pak (A - uvT )-1 = A-1 + (A-1 uvT A-1 ), kde = 1 (1 - vT A-1u) , za předpokladu vT A-1 u = 1. 2. Woodburyho vzorec. Nechť A, U, V Mn, (A - UV T )-1 = A-1 + A-1 U(E - V T A-1 U)-1 V T A-1 , za předpokladu, že E - V T A-1 U je regulární. Poznámka 7. Tyto rovnice ukazují, jak lze vypočítat inverzní matici k matici A - uvT , resp. A - UV T bez explicitního výpočtu této inverzní matice, známe-li matici A-1 . Příklad 4.7. Je dána matice A Mn a matice k ní inverzní A-1 Mn: A = 1 1 1 2 4 5 6 7 8 a A-1 = -3 -1 1 14 2 -3 -10 -1 2 . 114 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Nechť u = v = (1, 0, 0)T . Odtud A - uvT = 0 1 1 2 4 5 6 7 8 . Nyní = 1 1 - vT A-1u = 1 4 a (A-1 + A-1 uvT A-1 ) = (A - uvT )-1 = -3 4 -1 4 -1 4 7 2 -3 2 1 2 -5 2 3 2 -1 2 . Poznámka 8. Víme, že GEM bez výběru hlavního prvku definuje rozklad matice A ve tvaru A = LR, kde L je dolní trojúhelníková matice s 1 na diagonále, R je horní trojúhelníková matice. Z tohoto vztahu plyne ihned vzorec pro výpočet determinantu matice A, neboť det A = det L det R = det U = n i=1 a (i) ii . Výpočet pomocí GEM s částečným výběrem hlavního prvku vede na rozklad PA = LR, kde det P = (-1)r , r je počet výměn řádků během výpočtu. Odtud det PA = (-1)r det A = n i=1 a (i) ii , neboli det A = (-1)r n i=1 a (i) ii . § 4.5. Metody založené na minimalizaci kvadratické formy V tomto odstavci se budeme zabývat metodami, které jsou založeny na minimalizaci kvadratické funkce, jejímž jediným minimem je řešení rovnice Ax = b. Budeme předpokládat, že matice A je symetrická a pozitivně definitní. § 4.5. Metody založené na minimalizaci kvadratické formy 115 Věta 4.9. Jestliže A je pozitivně definitní matice, pak řešení systému Ax = b je ekvivalentní minimalizaci kvadratické funkce Q(x) = 1 2 xT Ax - xT b. (4.22) Tato kvadratická funkce má jediné minimum, kterého nabývá v řešení systému Ax = b, tj. pro x = A-1 b. Důkaz. Jednoznačnost minima plyne z pozitivní definitnosti matice A. Nechť x = A-1 b. Uvažujme rozdíl Q(x + x) - Q(x ), kde x = o. Pro tento rozdíl platí Q(x + x) - Q(x ) = 1 2 (x + x)T A(x + x) - (x + x)T b - - 1 2 xT Ax + xT b = 1 2 xT Ax. Matice A je pozitivně definitní a tudíž xT Ax > 0 pro x = o. To znamená, že Q(x + x) - Q(x ) > 0, tj. Q(x + x) > Q(x ), a tedy x realizuje minimum kvadratické funkce Q. Nechť nyní ^x realizuje minimum kvadratické funkce Q. Nechť dále v Rn je libovolný vektor. Uvažujme vektory tvaru z = ^x + tv, t je reálné číslo. Tyto vektory leží na přímce vycházející z ^x. Vypočtěme hodnotu funkce Q pro z. Je Q(^x + tv) = 1 2 (^x + tv)T A(^x + tv) - (^x + tv)T b = = 1 2 ^xT A^x + 1 2 tvT A^x + 1 2 t^xT Av + + 1 2 t2 vT Av - ^xbT - tvT b. Jelikož A je pozitivně definitní, je ^xT Av = vT A^x. Odtud Q(^x + tv) = 1 2 ^xT A^x + tvT A^x + 1 2 t2 vT Av - ^xT b - tvT b. Funkce Q má minimum v bodě ^x, to znamená, že dQ(^x + tv) dt t=0 = 0, kde dQ(^x + tv) dt = vT A^x + tvT Av - vT b. A odtud vT A^x - vT b = 0 vT (A^x - b) = 0. 116 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Vektor v je libovolný vektor z Rn . Poslední vztah znamená, že vektor A^x - b je ortogonální ke všem vektorům v Rn a odtud plyne, že A^x - b = o. Vektor ^x tedy je řešením systému Ax = b, a protože A je pozitivně definitní, je ^x = x . 2 Důsledek. min Q(x) = Q(x ) = -1 2 bT A-1 b. Důkaz. Q(x ) = 1 2 xT A x - xT b, x je přesným řešením systému Ax = b, a tedy Ax = b, xT = bT A-1 . Dosazením do předchozího vztahu ihned plyne tvrzení. 2 Podívejme se nyní na geometrickou interpretaci hledání minima kvadratického funkcionálu Q (viz [12], [19]). Nechť x je řešení systému Ax = b a nechť x = x + s. Pak Q(x) + 1 2 xT b = 1 2 (x + s)T A (x + s) - (x + s)T b + 1 2 xT b = 1 2 sT As . Plocha S = {s = (s1, . . . , sn)T | 1 2 sT As = konst.} je hyperelipsoid v proměnných s1,. . . ,sn se středem v s = o, tj. v x . Tedy i rovnice Q(x) = konst. představuje hyperelipsoid. Protože A je pozitivně definitní existuje ortogonální matice P taková, že matice PT AP = D je diagonální matice s kladnými vlastními čísly i matice A na diagonále. Provedeme-li transformaci proměnných z = PT s, z = (z1, . . . , zn)T , dostaneme sT A s = zT Dz = n i=1 iz2 i . Odtud plyne, že hyperelipsoid má své osy ve směrech zi a délky těchto os jsou přímo úměrné 1 i , i = 1, . . . , n. Tyto geometrické úvahy budeme nyní ilustrovat na jednoduchém příkladě. Příklad 4.8. Uvažujme systém 2x1 - x2 = 1 -x1 + 2x2 = 1 , jehož přesné řešení je x = (1, 1)T . Q(x) = 1 2 (2x2 1 + 2x2 2 - 2x1x2) - (x1 + x2) a Q(x ) = -1 . § 4.5. Metody založené na minimalizaci kvadratické formy 117 Rovnice elipsy je dána vztahem 1 2 sT As = c, c = konstanta 1 2 (2s2 1 + 2s2 2 - 2s1s2) = c. Obrázek 4.1 ukazuje tvar elipsy pro c = 1. Vlastní čísla matice A jsou 1 = 3, 2 = 1. Tedy rovnice příslušné elipsy je z2 1 3 + z2 2 1 = ~c . -1.5 -1 -0.5 0 0.5 1 1.5 -1.5 -1 -0.5 0 0.5 1 1.5 s1 s 2 z1 z 2 Obr. 4.1: Elipsa 1 2 (2s2 1 + 2s2 2 - 2s1s2) = 1. Vlastní vektor příslušný vlastnímu číslu 1 = 3 je tvaru x(1) = 1 2 (-1, 1)T a vektor příslušný vlastnímu číslu 2 = 1 je x(2) = 1 2 (1, 1)T , takže P = 1 2 1 1 -1 1 . Na obrázku 4.2 vidíme průběh kvadratického funkcionálu Q(x). Obecné schema minimalizace funkce Q bude takové, že vybereme počáteční aproximaci x1 a pak určíme x2 tak, že zvolíme nějaký směr v1 a vzdálenost t1 ve směru v1 . Obecně pak xk+1 = xk + tkvk , i = 1, 2, . . . Vektory vk se nazývají směrové vektory. 118 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 0 0.5 1 1.5 2 0 0.5 1 1.5 2 -1 -0.5 0 0.5 1 1.5 2 Obr. 4.2: Průběh kvadratického funkcionálu Q(x), Q(x) = -1 Popišme nyní jednu z metod tohoto typu, a to metodu největšího spádu. Nechť x1 Rn je počáteční aproximace přesného řešení x a položme r1 = b -Ax1 ; vektor r1 se nazývá reziduový vektor. Našim cílem je najít takový vektor v1 Rn , v1 = Ax1 - b , pro který d dt Q(x1 + tv1 ) t=0 = max, t R . Geometricky lze tuto metodu vysvětlit takto: x = x1 + tv1 , t R, je přímka procházející body x1 a v1 . Kvadratická funkce Q je plocha v Rn a bodům ležícím na uvedené přímce odpovídá křivka na této ploše. Nyní hedáme takový směr, tj. takový vektor v1 , ve kterém má plocha největší spád. Vypočtěme hodnotu funkce Q pro body na přímce x = x1 + tv: Q(x1 + tv) = 1 2 x1T Ax1 + tv1T (Ax1 - b) + 1 2 t2 v1T Av1 - x1T b . Dále dQ(x1 + tv1 ) dt = v1T (Ax1 - b) + tv1T Av1 (4.23) a pro t = 0 dostaneme d dt Q(x1 + tv1 ) t=0 = v1T (Ax1 - b) . Při předepsané normě bude skalární součin maximální v případě, že v1 = Ax1 -b. To znamená, že ve směru v1 = -r1 má plocha Q největší spád. § 4.5. Metody založené na minimalizaci kvadratické formy 119 Nyní musíme v tomto směru najít takový bod x2 , pro který Q nabývá minimální hodnoty. Budeme tedy hledat minimum kvadratické funkce Q(x1 - tr1 ) jedné proměnné t. Ze vztahu dQ(x1 - tr1 )/dt = 0 plyne r1T r1 + tr1T A r1 = 0 tj. t1 = - r1T r1 r1T Ar1 . Funkce Q(x1 - tr1 ) je konvexní vzhledem k proměnné t, neboť d2 Q(x1 - tr1 ) dt2 = v1T Av1 > 0. To znamená, že v bodě t1 se realizuje jediné minimum. Matice A je pozitivně definitní a r1 = o, a tedy r1T Ar1 > 0. Další aproximace je tvaru x2 = x1 + r1T r1 r1T Ar1 r1 . Uvedená metoda se nazývá metoda největšího spádu a její algoritmus má obecně tvar: xk+1 = xk + rkT rk rkT Ark rk . (4.24) Nyní odvodíme důležité vztahy mezi reziduálními vektory rk . Z (4.24) plyne Axk+1 = Axk + rkT rk rkT Ark Ark , rk = b - Axk a Axk+1 - b = Axk - b + rkT rk rkT Ark Ark , rk = b - Axk . Odtud rk+1 = rk - rkT rk rkT Ark Ark , rk = b - Axk neboli rk+1 = rk + tkArk . Dále pro skalární součin vektorů rk+1 a rk platí rk+1T rk = (rk + tkArk )T rk = rkT rk + tkrkT Ark = = rkT rk - rkT rk rkT Ark rkT Ark = 0 , což znamená, že vektory rk+1 a rk jsou ortogonální. 120 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Ukážeme, že pro posloupnost generovanou metodou největšího spádu platí: Q(xk+1 0 < Q(xk ), k = 1, 2 . . . Počítejme rozdíl Q(xk+1 ) - Q(xk ) = Q xk + rkT rk rkT Ark rk - Q(xk ) = = rkT rk rkT Ark rkT Axk - rkT rk rkT Ark rkT b + 1 2 rkT rk rkT Ark 2 rkT Ark = = rkT rk rkT Ark rkT (Axk - b) + 1 2 rkT rk rkT Ark rkT Ark = = rkT rk rkT Ark -rkT rk + 1 2 rkT rk = - 1 2 (rkT rk )2 rkT Ark < 0 Q(xk+1 ) < Q(xk ) . Odtud také plyne konvergence metody největšího spádu (viz [19]). Příklad 4.9. Řešme metodou největšího spádu systém 2x1 - x2 = 1 -x1 + 2x2 = 1 , jehož přesné řešení je x = (1, 1)T . Zvolme počáteční aproximaci x1 = (0, 1)T , je Q(x1 ) = 0. Pak r1 = b - Ax1 = (2, -1)T a r1T r1 = 5, r1T Ar1 = 14 . Další aproximace x2 je tvaru x2 = 0 1 + 5 14 2 -1 = 5/7 9/14 ; Q(x2 ) = - 30 49 . Dále r2 = b - Ax2 = (3/14, 3/7)T , r2T r2 = 45 196 , r2T A r2 = 54 196 , odtud x3 = 5/7 9/14 + 45 54 3/14 3/7 = 25 28 1 . = 0, 89826 1 , Q(x3 ) . = -0, 988518. První tři iterace ukazuje obrázek 4.3 spolu s elipsami o rovnici 1 2 (2s2 1 + 2s2 2 - 2s1s2) = c, na nichž jednotlivé iterace leží. Další metodu patřící do této skupiny je metodu sdružených gradientů. Tato metoda byla navržena v roce 1952 Hestenesem a Stiefelem a nyní se velmi často § 4.6. Stabilita, podmíněnost 121 -1 -0.5 0 0.5 1 1.5 2 2.5 3 -0.5 0 0.5 1 1.5 2 2.5 x1 x2 x3 2x1 -x2 =1 c=0.012 c=0.107 c=1.0-x1 +2x2 =1 Obr. 4.3: Metoda největšího spádu užívá pro řešení velkých a řídkých systémů s pozitivně definitními maticemi. Z hlediska teoretického je tato metoda přímá, ale při praktické realizaci je to metoda iterační. Podrobný pos této metody lze nalézt např. v [19]. Podívejme se nyní na otázky stability algoritmů a vlivu zaokrouhlovacích chyb při řešení systému Ax = b. § 4.6. Stabilita, podmíněnost V úvodní kapitole jsme uvedli definici stability. Nyní podrobně probereme otázky stability při řešení systémů lineárních rovnic. Definice 4.6. Algoritmus pro řešení Ax = b se nazývá stabilní, jestliže vypočtené řešení ^x je takové, že (A + E)^x = b + b, kde E a b jsou malé; E se nazývá chybová matice. Poznámka 9. ,,Malost matice nebo vektoru lze ,,měřit buď na základě jejich prvků nebo výpočtem normy. Podívejme se nyní na GEM bez výběru pivota. Lze ukázat ([6]), že vypočtené řešení ^x vyhovuje systému (A + E)^x = b, přičemž E cn3 A + O(2 ), 122 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC kde A(k) = (a (k) ij ), A(1) = A, jsou redukované matice v eliminačním procesu, je strojová přesnost ( = 10-6 pro jednoduchou přesnost, = 10-16 pro dvojnásobnou přesnost), c je konstanta a se nazývá růstový faktor a je dán vztahem = max k max i,j a (k) ij max i,j a (1) ij . Jestliže 1 = max i,j |a (1) i,j |, k = max i,j |a (k) i,j |, pak lze vyjádřit takto: = max (1, 2, . . . , n) 1 . Pro libovolnou matici mohou prvky matic A(k) růst libovolně a tedy i faktor může být velký (podrobněji viz [6]). Ilustrujme tento fakt na příkladu: Příklad 4.10. A = A(1) = 10-10 1 1 2 A(2) = 10-10 1 0 -1010 Růstový faktor = max (1, 2) 1 = max 2, 1010 2 = 1010 2 . Řešíme-li lineární systém s touto maticí, nemůžeme očekávat malou chybovou matici E. Řešme např. systém 10-10 x1 + x2 = 1 x1 + 2x2 = 3 Užitím A(2) vypočteme x1 = 0, x2 = 1, zatímco přesné řešení je x1 = 1, x2 = 1 (při zaokrouhlování na 9 cifer). Při GEM je vektor b = b(1) modifikován na vektor b(2) : b(2) = (1, 3 -1010 )T = (1, -1010 )T . Tento fakt ukazuje, že GEM bez výběru pivota je obecně nestabilní procedura. Ale na druhé straně může být tato procedura stabilní pro některé speciální typy matice. Následující tabulky ukazují srovnání různých metod z hlediska stability ([6]). § 4.6. Stabilita, podmíněnost 123 I. Matice systému je libovolná Metoda Počet nás. operací Stabilita GEM bez výběru pivota n3 3 nestabilní GEM s částečným výběrem pivota n3 3 + O(n2 ) porovnání stabilní GEM s úplným výběrem pivota n3 3 + O(n3 ) porovnání stabilní II. Speciální typy matic Matice Metoda Počet nás. operací Stabilita Symetrická GEM bez výběru pivota n3 3 stabilní Symetrická Choleského n3 6 + n druhých odmocnin stabilní Diagonálně dominantní GEM bez výběru pivota n3 3 stabilní Třídiagonální Croutova O(n) stabilní Z předchozích úvah bychom neměli nabýt dojmu, že stabilita algoritmu zaručuje, že vypočtené řešení bude přesné. Vlastnost, která se nazývá podmíněnost, ale také přispívá k přesnosti nebo nepřesnosti vypočteného výsledku. Podmíněnost problému je vlastnost problému samotného. Jak jsme již uvedli v úvodu, podmíněnost se týká toho, jak se řešení změní, jestliže se změní vstupní data. Tento problém nastává při praktických aplikacích, kdy vstupní data získaná měřením nebo pozorováním jsou zatížena chybami. Ve skutečnosti tedy musíme řešit problém, který není zadán původními daty, ale daty s ,,poruchami . Otázkou tedy je, jaký vliv mají tyto poruchy na řešení. Ilustrujme tento fakt na příkladě. Příklad 4.11. Předpokládejme, že v nějakém podniku jsou dvě oddělení. V prvním oddělení pracuje 101 žena a 10 mužů, v druhém oddělení 10 žen a 1 muž. Nechť první oddělení dostane za časovou jednotku 111 Kč, druhé oddělení 11 Kč. Ptáme se, jaká je mzda ženy a muže za časovou jednotku? Označíme-li x1 mzdu ženy a x2 mzdu muže, vede úloha na systém rovnic 101x1 + 10x2 = 111 10x1 + x2 = 11 124 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Je zřejmé, že řešení tohoto systému je: x1 = 1, x2 = 1. Ale vedoucí se rozhodl druhému oddělení přidat, aby posílil ,,pozici jediného muže a zvýšil částku na 11,10 Kč. Systém rovnic je tvaru 101x1 + 10x2 = 111 10x1 + x2 = 11,1 Ovšem řešení tohoto systému je ~x1 = 0, ~x2 = 11,1. To znamená, že malá změna na vstupu (pravé strany) má za následek velkou změnu na výstupu. Spočítejme číslo podmíněnosti podle vztahu uvedeného v úvodu. Cp = relativní chyba na výstupu relativní chyba na vstupu . K vyjádření tohoto čísla použijeme norem vektorů. Nechť x = x1 x2 x 1 = |x1| + |x2| = 2; ~x = ~x1 ~x2 ~x 1 = 11,1 b = 111 11 b 1 = 122, ~b = 111 11,1 ~b 1 = 122,1 Nyní Cp = x - ~x 1 x 1 b - ~b 1 b 1 = 11,1 2 0,1 122 6770. Jedná se o špatně podmíněnou úlohu. Pro vyšetřování podmíněnosti systémů lineárních rovnic je vhodné definovat číslo podmíněnosti matice. Definice 4.7. Pro libovolnou přidruženou maticovou normu definujeme číslo podmíněnosti matice A vztahem k(A) = A A-1 . Řekneme, že matice A je dobře podmíněna, jestliže k(A) 1 a špatně podmíněna, jestliže k(A) je podstatně větší než 1. Je jasné, že k(A) 1, neboť 1 = E = AA-1 A A-1 = k(A). Vypočtěme číslo podmíněnosti matice A z předchozího příkladu: A = 101 10 10 1 A 1 = 111 A-1 = 1 -10 -10 101 A-1 1 = 111 § 4.7. Analýza chyb 125 Tedy k(A) = 1112 = 12321, což opět znamená, že A je špatně podmíněna. § 4.7. Analýza chyb Nechť nyní matice A je dána s poruchou A a vektor b s poruchou b. Tedy místo systému Ax = b řešíme systém (A + A)(x + x) = b + b. Věta 4.10. Nechť A je regulární matice a nechť pro nějakou přidruženou maticovou normu platí: A < 1 A-1 . Řešení ~x = x + x systému (A + A)(x + x) = b + b aproximuje řešení x systému Ax = b s chybou x x k(A) 1 - k(A) A A b b + A A . (4.25) Důkaz. Z předpokladu A < 1/ A-1 plyne A-1 A A-1 A < 1 , a tedy podle věty 1.5 je matice (E + A-1 A) regulární a platí (E + A-1 A)-1 1 1 - A-1A 1 1 - A-1 A . (4.26) Upravíme systém (A + A)(x + x ) = b + b následujícím způsobem: A-1 (A + A)(x + x ) = A-1 (b + b) (E + A-1 A)(x + x ) = A-1 (b + b) x + x = (E + A-1 A)-1 A-1 (b + b). Na druhé straně je x = (E + A-1 A)-1 (E + A-1 A)x a odtud x + x - x = (E + A-1 A)-1 A-1 (b + b) - x - A-1 Ax , tj. x = (E + A-1 A)-1 A-1 (b - Ax ). 126 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Přechodem k normě dostaneme x (E + A-1 A)-1 A-1 ( b + A x ) , neboť přidružená maticová norma je souhlasná s danou vektorovou normou. V dalších úpravách užijeme vztahu (4.26): x x A-1 1 - A-1 A b x + A Jelikož Ax = b , je b A x , a tedy x b / A . Odtud x x A-1 A 1 - A-1 A b b + A A . Užijme nyní vyjádření pro číslo podmíněnosti k(A) = A . A-1 a dostaneme požadovaný odhad (4.25). 2 Poznámka 10. Jestliže b = o, ukazuje předchozí věta vliv poruchy matice A na relativní chybu řešení. V tomto případě x x k(A) 1 - k(A) A A A A . Jmenovatel zlomku na pravé straně této nerovnosti je menší než 1. Tedy, dokonce i za předpokladu, že A / A je malé číslo, chyba řešení může být značná, jestliže k(A) je velké číslo. Stejný závěr platí i v případě existence poruch A i b. Číslo podmíněnosti k(A) má tedy zásadní význam pokud jde o citlivost řešení vzhledem ke vstupním datům. Předpokládejme nyní, že matice A je dána přesně, ale vektor b je dán s poruchami. Tedy místo systému Ax = b řešíme systém A(x + x) = b + b. Věta 4.11. Nechť A je regulární matice a vektor b = o. Jestliže b resp. x jsou poruchy vektoru b resp. x, pak b k(A) b x x k(A) b b . Důkaz pravé nerovnosti je důsledkem věty 4.10 a důkaz nerovnosti vlevo lze nalézt v [6]. Zde uvedeme interpretaci věty. Tato věta říká, že relativní chyba řešení může být tak velká jako číslo podmíněnosti matice A násobené relativní chybou vektoru b. Jestliže číslo podmíněnosti není příliš velké, potom malé změny vektoru b mají za následek malé změny řešení. Vraťme se k předchozímu příkladu. Zde je x 1 x 1 1112 . 0,1 122 10,1, x = (x1, x2)T . § 4.7. Analýza chyb 127 Skutečná relativní chyba je 11,2/2 = 5,6. Je třeba poznamenat, že horní hranice chyby je podstatně vyšší. Tento fakt vyplývá z celkové koncepce odhadu chyb v numerické matematice, kdy vždy uvažujeme horní odhad chyb, tj. nejhorší možný případ. Příklad 4.12. Velmi známým příkladem špatně podmíněné matice je Hilbertova matice: A = 1 1 2 1 3 1 n 1 2 1 3 1 4 1 n+1 ... ... ... ... 1 n 1 n+1 1 n+2 1 2n-1 . Pro n = 10 vzhledem k normě . 1 je k(A) = 3,5353.1013 . Je vhodné si povšimnout, že determinant této matice je velmi malý. Objasníme nyní praktický význam věty 4.10. Předpokládejme, že výpočet v pohyblivé řádové čárce se zaokrouhlováním na t desetinných míst může zapříčinit relativní chyby dané v normách vztahy: A A 5.10-t , b b 5.10-t . Za předpokladu, že k(A) 10 a 5.10-t 1, dostaneme z odhadu ve větě 4.10: x x 10-t+1 . Tato skutečnost vede k následujícímu závěru: Jestliže řešíme systém Ax = b v pohyblivé řádové čárce se zaokrouhlováním na t desetinných míst a k(A) 10 , pak vypočtené řešení ~x je správné na (t - - 1) desetinných míst. Nechť nyní ~x je vypočtené řešení (jakoukoliv metodou). Uvažujme reziduový vektor r = b - A~x. Zdálo by se logické, že když r je malé číslo, je ~x dobrou aproximací přesného řešení. Ale následující příklad ukazuje, že tomu tak být ne- musí. Příklad 4.13. Uvažujme systém 1 2 1,0001 2 x1 x2 = 3 3,0001 . Tento systém má jediné řešení x = (1, 1)T . Pro aproximaci ~x = (3, 0)T je reziduový vektor tvaru r = b - A~x = 3 3,0001 - 1 2 1,0001 2 3 0 = 0 0,0002 . 128 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Tedy r = 0,0002, ale x - ~x = 2. Z geometrického hlediska lze tuto situaci vysvětlit takto: Řešení systému je průsečík přímek l1 : x1 + 2x2 = 3, l2 : 1,0001x1 + 2x2 = 3,0001. Bod ~x = (3, 0) leží na přímce l1 a přímky l1 a l2 jsou téměř rovnoběžné, což implikuje, že bod (3, 0) leží blízko přímky l2, i když se podstatně liší od průsečíku přímek v bodě (1, 1). Matematicky lze tento jev objasnit následující větou. Věta 4.12. Nechť ~x je aproximace řešení systému Ax = b s regulární maticí A. Pak pro přidruženou maticovou normu platí: x - ~x r A-1 , (4.27) x - ~x x k(A) r b , za předpokladu b = o. (4.28) Důkaz. Je r = b - A~x = Ax - A~x x - ~x = A-1 r, neboť A je regulární matice. Z vlastností přidružené normy plyne: x - ~x = A-1 r A-1 r Dále b = Ax a tedy b A x , tj. x b / A . Použitím vztahu (4.27) nyní dostaneme x - ~x x A-1 A b r = k(A) r b . 2 Tato věta říká, že relativní chyba aproximace ~x závisí nejen na reziduovém vektoru, ale také na čísle podmíněnosti matice A. Vypočtené řešení tedy bude dostatečně přesné pouze v případě, že součin čísla podmíněnosti a relativního rezidua r / b je malé číslo. Vraťme se nyní k předchozímu příkladu a vypočtěme číslo podmíněnosti matice A vzhledem k . . Je A-1 = -10000 10000 5000,5 -5000 , A = 3,0001, A-1 = 20000, tzn. k(A) = 60002. Číslo podmíněnosti je velmi velké, což znamená, že i v případě, že norma reziduového vektoru je malé číslo, chyba aproximace může být velká. Cvičení ke kapitole 4 129 Poznámka 11. Nechť A je pozitivně definitní matice. Uvažujme spektrální normu A 2 = (AT A). Protože je A pozitivně definitní, platí A 2 = max 1in i a A-1 2 = ( min 1in i)-1 . Číslo podmíněnosti k(A) je v tomto případě tvaru k(A) = max i min i . Vrátíme-li se ke geometrické interpretaci hledání minima kvadratické funkce v odstavci 4.5, je rovnice sT As = c rovnicí hyperelipsoidu, jehož kanonický tvar je n i=1 iz2 i = ~c . Je-li tedy matice A dobře podmíněna, k(A) 1, jsou hyperelipsoidy blízké kulovým nadplochám a naopak pro k(A) 1 jsou hyperelipsoidy protáhlé. Cvičení ke kapitole 4 1. Řešte systém GEM a) bez výběru hlavního prvku, b) s částečným výběrem hlavního prvku, c) s úplným výběrem hlavního prvku: x1 - x2 + 2x3 - x4 = -8 2x1 - 2x2 + 3x3 - 3x4 = -20 x1 + x2 + x3 = -2 x1 - x2 + 4x3 + 3x4 = 4 (Řešení: x1 = -7, x2 = 3, x3 = 2, x4 = 2.) 2. Užijte Gaussovy eliminační metody s částečným výběrem hlavního prvku pro řešení soustavy x2 + x3 = 0 2x1 + 2x2 + 3x3 = 1 x1 + 2x2 + x3 = 5 . 3. Ukažte že matici A nelze rozložit na součin horní a dolní trojúhelníkové matice: A = 1 1 1 1 1 1 0 2 2 2 3 0 -1 -1 -2 2 . Řešte nyní systémy Ax = b1, Ax = b2, kde b1 = (7, 8, 10, 0)T , b2 = (7, 5, 10, 0)T . Užijte GEM a ukažte, že systém Ax = b1 má nekonečně mnoho řešení a systém Ax = b2 nemá žádné řešení. 130 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 4. Choleského metodou řešte soustavu x1 + x2 + x3 = 3 x1 + 5x2 + 5x3 = 11 x1 + 5x2 + 14x3 = 20 . 5. Řešte systém Hx = b s Hilbertovou maticí H: a) H = 1 1 2 1 3 1 4 1 5 1 2 1 3 1 4 1 5 1 6 1 3 1 4 1 5 1 6 1 7 1 4 1 5 1 6 1 7 1 8 1 5 1 6 1 7 1 8 1 9 b = 1 0 0 0 0 . b) Dále řešte tento systém s maticí ~H = H + H a porovnejte výsledky H + H = 1,0 0,5 0,33333 0,25 0,2 0,5 0,33333 0,25 0,2 0,16667 0,33333 0,25 0,2 0,16667 0,14286 0,25 0,2 0,16667 0,14286 0,125 0,2 0,16667 0,14286 0,125 0,11111 b = 1 0 0 0 0 . ( a) Řešení s maticí H: x = (25, -300, 1050, -1400, 630)T . b) Řešení s maticí ~H: ~x = (28,02304; -348,5887; 1239,781; -1666,785; 753,5564)T .) 6. Přesné řešení systému 1,133x1 + 5,281x2 = 6,414 24,14x1 - 1,210x2 = 22,93 je x = (1, 1)T . Řešte tento systém se zaokrouhlováním na 4 cifry a) GEM bez výběru hlavního prvku, b) GEM s částečným výběrem hlavního prvku. Cvičení ke kapitole 4 131 ( a) x1 = 0,9956, x2 = 1,001; b) x1 = 1,000, x2 = 1,000.) 7. Uvažujme systém x1 + 2x2 = 2 2x1 + 3x2 = 3,4 , jehož přesné řešení je x = (0,8; 0,6)T . Vypočtěte reziduový vektor pro aproximaci ~x = (1,00; 0,48)T a vektor skutečné chyby řešení. Výsledky vysvětlete graficky. 8. Vypočtěte matici inverzní k matici A = 1 -2 3 -2 4 -5 1 -5 3 (správnost výsledků zkontrolujte výpočtem AA-1 ). 9. Najděte přímý rozklad A = LU (lii = 1, i = 1, 2, 3) A = -5 2 -1 1 0 3 3 1 6 (Řešení: L = 1 0 0 -0,2 1 0 -0,6 5,5 1 , U = -5 2 -1 0 0,4 2,8 0 0 -10 ) 10. Choleského metodou řešte soustavu x1 + x2 + x3 = 2 x1 + 5x2 + 5x3 = 5 x1 + 5x2 + 14x3 = 8 11. Choleského metodou řešte systém x1 + 3x2 - 2x3 - 2x5 = 0,5 3x1 + 4x2 - 5x3 + x4 - 3x5 = 5,4 -2x1 - 5x2 + 3x3 - 2x4 + 2x5 = 5,0 x2 - 2x3 + 5x4 + 3x5 = 7,5 -2x1 - 3x2 + 2x3 + 3x4 + 4x5 = 3,3. (Řešení: x = (-0,60978; -2,2016; -6,8011; -0,8996; 0,1995)T .) 12. Croutovou metodou řešte systém 4x1 + 3x2 = 24 3x1 + 4x2 - x3 = 30 -x2 + 4x3 = -24. (Řešení: x = (3, 4, -5)T .) 132 4. PŘíMÉ METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 13. Nechť A je pozitivně definitní matice. Ukažte, že a) aii > 0, i = 1, 2, . . . , n, b) max 1in aii = max i,j |aij|. Kontrolní otázky ke kapitole 4 1. Je možné provést rozklad A = LR, respektive PA = LR pro singulární matici A? 2. Popište, jak byste pomocí GEM řešili tuto úlohu: Je dáno m systémů lineárních rovnic vždy s toutéž maticí A. Tato úloha může být zapsána ve tvaru AX = B , A Mn, B = (b1, . . . , bm), X = (x1, . . . , xm) jsou matice typu n × m, bi, bi, xi, i = 1, . . . , m jsou vektory. 3. Lze užít elementární matici E1 definovanou vztahem (A11 = 0) E1 = 1 -a21 a11 ... 0 ... 1 ... 0 ... -an1 a11 1 pro transformaci matice A = A(1) na matici A(2) v Gaussově eliminační metodě? 4. Lze použít Choleského metodu pro řešení systému s maticí A = 0 1 1 0 ? 5. Je možné rozložit matici A = 3 3 2 -1 -1 4 2 8 -2 na součin dolní a horní trojúhelníkové matice? Kapitola 5 Iterační metody řešení systémů lineárních rovnic Uvažujme systém lineárních rovnic Ax = b (5.1) s regulární maticí A Mn. Označme, stejně jako v předchozí kapitole, x přesné řešení tohoto systému, x = A-1 b. (5.2) Přímé metody založené na rozkladu matice A nejsou vhodné vzhledem k době výpočtu a nárokům na paměť počítače v případě, že matice A je dosti velká. V praxi se s takovými maticemi setkáváme např. při numerickém řešení parciálních diferenciálních rovnic, kdy se často vyskytují matice řádu n > 10000. V těchto případech je použití Gaussovy eliminační metody velmi náročné. Na druhé straně tyto matice jsou často řídké, tj. mají velké procento nulových prvků, ale tato vlastnost se ,,ztrácí užitím metod předchozí kapitoly. Pro řešení takových úloh lze užít třídy metod, které se nazývají iterační metody. Tyto metody nemění strukturu matice A a požadují uchování pouze několika vektorů řádu n. § 5.1. Princip iteračních metod Základní myšlenka iteračních metod spočívá nejdříve ve vyjádření systému Ax = b v ekvivalentním tvaru x = T x + g, T Mn, (5.3) x je řešení systému (5.1) právě tehdy, když x je řešením systému (5.3), x = (E - T ) -1 g za předpokladu, že E - T je regulární. 134 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Nechť x0 Rn je libovolná počáteční aproximace. Posloupnost xk k=0 určená rekurentně vztahem xk+1 = T xk + g, k = 0, 1, . . . (5.4) se nazývá iterační posloupnost a matice T se nazývá iterační matice. Budeme se nyní zabývat dvěma problémy: (a) Jak zvolit iterační matici T, tj. jakým způsobem převést systém (5.1) na systém (5.3)? (b) Za jakých předpokladů posloupnost xk k=0 konverguje pro libovolnou počáteční aproximaci k přesnému řešení x ? Všimněme si, že vztah (5.4) může být také zapsán jiným způsobem: Je x1 = T x0 + g, x2 = T x1 + g = T (T x0 + g) + g = T 2 x0 + (T + E)g, ... xk+1 = T k+1 x0 + (T k + T k-1 + . . . + E)g. (5.5) Mocniny matice T budou hrát zřejmě důležitou úlohu v našich dalších úvahách. Podívejme se na posloupnosti mocnin matic obecně. Definice 5.1. Řekneme, že matice H Mn je konvergentní, jestliže lim k Hk = lim k H . . . H k-krát = O, kde O je nulová matice. Příklad 5.1. Matice H = 1 2 0 1 4 1 2 je konvergentní. Je totiž H2 = 1 4 0 1 4 1 4 , H3 = 1 8 0 3 16 1 8 , . . . , Hk = 1 2 k 0 k 2k+1 1 2 k a odtud je zřejmé, že lim k Hk = O. Věta 5.1. ([8]) Následující tvrzení jsou ekvivalentní: (i) H je konvergentní matice. (ii) lim k Hk = 0 pro nějakou přidruženou maticovou normu. (iii) (H) < 1 ((H) je spektrální poloměr H). (iv) lim k Hk x = o pro libovolný vektor x Rn . § 5.1. Princip iteračních metod 135 Příklad 5.2. Matice H = 1 0 1 4 1 2 není konvergentní, neboť (H) = 1. V našich dalších úvahách budeme používat poznatků o normách vektorů a matic z kapitoly 1. Vraťme se nyní k iteračnímu procesu (5.4). Dříve než dokážeme hlavní větu o konvergenci iteračního procesu, dokážeme toto lemma: Lemma. Nechť (T ) < 1. Pak E - T je regulární a platí (E - T )-1 = E + T + T 2 + . . . (5.6) Důkaz. První část tvrzení plyne z důsledku věty 1.5. Dokážeme platnost (5.6). Nechť Sm = E + T + T 2 + . . . + T m . Pak (E - T )Sm = (E - T )(E + . . . + T m ) = E - T m+1 . Jelikož (T ) < 1, je matice T konvergentní a tudíž lim m T m+1 = O. Odtud lim m (E - T )Sm = E, což znamená, že (E - T )-1 = E + T + T 2 + . . . 2 Hlavní větu o konvergenci iteračního procesu (5.4) lze formulovat takto: Věta 5.2. Posloupnost xk k=0 určená iteračním procesem (5.4) konverguje pro každou počáteční aproximaci x0 Rn právě tehdy, když (T ) < 1, přičemž lim k xk = x , x = T x + g. Důkaz. Nechť x0 Rn je libovolná počáteční aproximace. Podle vztahu (5.5) lze aproximaci xk+1 zapsat ve tvaru: xk+1 = T k+1 x0 + (T k + T k-1 + . . . + T + E)g. Nechť (T ) < 1. Pak podle věty 5.1 je matice T konvergentní a podle lemmatu je (E - T ) regulární. Odtud plyne, že lim k xk+1 = lim k T k+1 x0 + lim k (T k + . . . + T + E)g = o + (E - T )-1 g = x . Nechť nyní iterační proces (5.4) konverguje k limitě x pro každou počáteční aproximaci x0 Rn . Nechť xk = T xk-1 + g, k = 1, 2, . . ., x = T x + g. Pak x - xk = T (x - xk-1 ) = . . . = T k (x - x0 ). (5.7) 136 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Odtud pro libovolný vektor x0 Rn platí lim k (x - xk ) = lim k T k (x - x0 ) = o. Nechť nyní z Rn je libovolný vektor a položme x0 = x - z, pak lim k T k z = lim k T k (x - (x - z)) = o, což implikuje, podle věty 5.1, že (T ) < 1. 2 Poznámka 1. Kriteria pro zastavení výpočtu mohou být např. následující: 1. xk+1 - xk / xk < , kde . je nějaká vektorová norma a > 0 je požadovaná přesnost, 2. rk+1 ( A xk+1 + b ), kde rk+1 = Axk+1 - b, maticová norma je přidružená dané vektorové normě, a > 0 je požadovaná přesnost. Víme, že pro přidruženou maticovou normu platí T (T ). Nutnou a postačující podmínku (T ) < 1 lze pak ve větě 5.2 nahradit podmínkou postačující: T < 1. Tuto skutečnost zformulujme jako důsledek. Důsledek. Nechť pro nějakou přidruženou maticovou normu platí T < 1. Pak posloupnost xk k=0 generovaná iteračním procesem (5.4) konverguje k řešení x = (E - T )-1 g pro každou počáteční aproximaci x0 Rn . Dále platí x - xk T k x - x0 , (5.8) x - xk T k 1 - T x1 - x0 . (5.9) Důkaz. Jak již bylo uvedeno, první část důkazu plyne ze skutečnosti 1 > T (T ) a je tedy důsledkem předchozí věty. Ale důkaz lze rovněž provést aplikací Banachovy věty o pevném bodě: Uvažujme zobrazení F : Rn Rn , Fx = T x + g. Ukážeme, že toto zobrazení je kontrakce v prostoru Rn vzhledem k metrice (x, y) = x - y , Rn je úplný metrický prostor. Je totiž Fx - Fy = T (x - y) T x - y = q x - y . To znamená, že F je kontrakce s koeficientem q = T . Z Banachovy věty o pevném bodě plyne tvrzení a rovněž vztah (5.9). Pokud jde o odhad daný vztahem (5.8), plyne ihned ze vztahu (5.7), neboť x - xk = T k (x - x0 ) T k x - x0 . 2 Připomeňme ještě zajímavý výsledek, týkající se vztahu přidružené normy matice a jejího spektrálního poloměru: Pro každou matici A a libovolné > 0 existuje § 5.2. Jacobiova iterační metoda 137 přidružená maticová norma s vlastností A (A) + . Tedy (A) je infimum všech přidružených norem matice A ([17]). Vraťme se nyní k iteračním procesům. Jelikož vztah (5.8) platí pro každou přidruženou maticovou normu, plyne z předchozího xk - x ((T ))k x0 - x . (5.10) Předpokládejme, že (T ) < 1 a x0 = o je počáteční aproximace. Chceme-li dosáhnout relativní chyby nejvýše 10-t , je podle vztahu (5.10) zapotřebí k iterací, přičemž pro k platí ((T ))k 10-t , tj. k - t log (T ) . (5.11) § 5.2. Jacobiova iterační metoda Volbou iterační matice T lze získat konkrétní iterační metody. Matici A zapišme ve tvaru A = D - L - U, kde D = a11 0 ... 0 ann , L = 0 0 -a21 ... ... ... ... -an1 -an,n-1 0 , U = 0 -a12 -a1n ... ... ... ... -an-1,n 0 0 . D je diagonální matice, L je dolní trojúhelníková matice s nulami na diagonále a U je horní trojúhelníková matice s nulami na diagonále. Rovnici Ax = b zapíšeme ve tvaru (D - L - U)x = b a transformujeme ji na rovnici Dx = (L + U)x + b. 138 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Za předpokladu, že aii = 0, i = 1, . . . , n, je matice D regulární a z předchozí rovnice lze vypočítat x x = D-1 (L + U)x + D-1 b. (5.12) Tento vztah vede na maticový tvar Jacobiovy iterační metody. Označíme-li TJ = D-1 (L + U), je tato metoda tvaru: xk+1 = TJ xk + D-1 b, (5.13) kde TJ = (tij) je Jacobiova iterační matice, tij = - aij aii pro i = j, tii = 0 pro i = 1, . . . , n. Matice TJ má tedy nulové diagonální prvky a je tvaru TJ = 0 - a12 a11 - a1n a11 - a21 a22 0 - a2n a22 ... ... ... - an1 ann - an2 ann 0 . (5.14) Ve složkách vektoru xk lze Jacobiovu iterační metodu zapsat takto: xk+1 i = - n j=1 j=i aij aii xk j + bi aii , i = 1, . . . , n; k 0. (5.15) Pro realizaci výpočtu to znamená, že z první rovnice vypočteme x1, z druhé x2, obecně z k-té rovnice vypočteme xk až z n-té rovnice vypočteme xn a na pravé straně takto získaného systému jsou prvky matice TJ . Z věty 5.2 ihned plyne věta o konvergenci Jacobiovy iterační metody: Věta 5.3. Posloupnost xk k=0 generovaná metodou (5.13) konverguje pro každou počáteční aproximaci x0 Rn právě tehdy, když (TJ ) < 1. Příklad 5.3. Jacobiovou iterační metodou řešte systém 10x1 - 2x2 - 2x3 = 6 - x1 + 10x2 - 2x3 = 7 - x1 - x2 + 10x3 = 8, jehož přesné řešení x = (1, 1, 1)T . Řešení. Jacobiova iterační metoda je tvaru xk+1 1 = 1 10 (6 + 2xk 2 + 2xk 3) xk+1 2 = 1 10 (7 + xk 1 + 2xk 3) xk+1 3 = 1 10 (8 + xk 1 + xk 2) § 5.2. Jacobiova iterační metoda 139 Nechť x0 = (0, 0, 0)T . Pak x1 = 0,6 0,7 0,8 x2 = 0,90 0,92 0,93 x3 = 0,970 0,976 0,982 x4 = 0,9918 0,9934 0,9958 Matice TJ je v tomto případě tvaru TJ = 0 0,2 0,2 0,1 0 0,2 0,1 0,1 0 (TJ ) = 0,285 a TJ = 0,4. Podle věty 5.3 je posloupnost xk konvergentní. Pro odhad chyby platí (viz (5.9)) x - xk TJ k 1 - T x1 - x0 , což v našem případě pro k = 4 x - x4 0,44 0,6 0,8 0,034. Na druhé straně, skutečná chyba x - x4 0,008. Vztah (5.9) udává totiž, jako obvykle v numerických metodách, horní odhad chyby. Pro některé speciální typy matice A je zaručena konvergence Jacobiovy iterační metody. Věta 5.4. a) Silné řádkové sumační kriterium: Nechť matice A je ryze řádkově diagonálně dominantní, tj. |aii| > n j=1 j=i |aij|, i = 1, . . . , n. Pak Jacobiova iterační metoda konverguje pro každou počáteční aproximaci x0 Rn . b) Silné sloupcové sumační kriterium: Nechť matice A je ryze sloupcově diagonálně dominantní, tj. |akk| > n i=1 i =k |aik|, k = 1, . . . , n. Pak Jacobiova iterační metoda konverguje pro každou počáteční aproximaci x0 Rn . 140 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Důkaz. a) Spočítejme normu . matice TJ = D-1 (L + U). Je TJ = max 1i n n j=1 |tij| = max 1i n n j=1 j=i aij aii . Jelikož |aii| > n j=1 j=i |aij|, je n j=1 aij aii < 1, i = 1, . . . , n a odtud TJ < 1. Podle důsledku věty 5.2 je Jacobiova iterační metoda konvergentní. b) Podle předpokladu Jacobiova metoda konverguje pro matici AT . To znamená, že (D-1 (LT + UT )) < 1. Položme X = D-1 (LT + UT ). Tato matice má stejná vlastní čísla jako matice XT = (L + U)D-1 . Dále matice XT má stejná vlastní čísla jako matice s ní podobná D-1 XT D = D-1 (L + U)D-1 D = D-1 (L + U) = TJ a odtud plyne, že (TJ ) < 1 a je splněn předpoklad věty 5.3. 2 Matice A systému příkladu 5.3 je ryze řádkově i sloupcově diagonálně domi- nantní. Geometrický význam Jacobiovy metody budeme ilustrovat na příkladu systému dvou rovnic: Příklad 5.4. Uvažujme systém l1: a11x1 + a12x2 = b1 l2: a21x1 + a22x2 = b2. Tyto rovnice jsou rovnice přímek l1, l2. Jacobiova iterační metoda je tvaru: l1: xk+1 1 = - a12 a11 xk 2 + b1 a11 l2: xk+1 2 = - a21 a22 xk 1 + b2 a22 (5.16) a iterační matice TJ = 0 - a12 a11 - a21 a22 0 § 5.3. Gaussova-Seidelova iterační metoda 141 má charakteristickou rovnici 2 + a12a21/a11a22 = 0. Ze vztahů (5.16) bezprostředně plyne geometrický význam této metody: Bod (xk+1 1 , xk 2 ) leží na přímce l1, bod (xk 1 , xk+1 2 ) leží na přímce l2. Bod (xk+1 1 , xk+1 2 ) je průsečíkem přímek x2 = xk+1 1 a x2 = xk+1 2 . Graficky je tato metoda ilustrována na obr. 5.1. 0 1 2 3 4 5 6 0 1 2 3 4 5 6 x 0 x 1 x 2 x 3 x 4 x 1 x 2 l 1 : 2x 1 -x 2 -1.5=0 l2 : x 1 -2x 2 +1=0 Obr. 5.1: Jacobiova iterační metoda Poznámka 2. Vlastní čísla matice TJ jsou dána vztahem 2 = -a12a21/a11a22. Vyměníme-li pořadí přímek (za předpokladu, že aij = 0, i, j = 1, 2) budou vlastní čísla tohoto systému rovna převráceným hodnotám čísel , což má za následek změnu konvergentního procesu v proces divergentní a naopak. § 5.3. Gaussova-Seidelova iterační metoda Při použití Jacobiovy metody při výpočtu xk+1 musíme uchovávat v paměti počítače celý vektor xk . Jistou modifikací Jacobiovy metody je metoda, která při výpočtu složky xk+1 i , 1 < i n, používá již vypočtené složky xk+1 1 , . . . , xk+1 i-1 . Popišme nyní tuto metodu podrobněji. Uvedeme nejdříve zápis po složkách a poté přejdeme k maticovému zápisu. Uvažovaná metoda může být zapsána takto: a11xk+1 1 + a12xk 2 + . . . + a1nxk n = b1 a21xk+1 1 + a22xk+1 2 + . . . + a2nxk n = b2 ... ... an1xk+1 1 + an2xk+1 2 + . . . + annxk+1 n = bn 142 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC neboli xk+1 i = - i-1 j=1 aij aii xk+1 j - n j=i+1 aij aii xk j + bi aii , i = 1, . . . , n. (5.17) Tato metoda se nazývá Gaussova-Seidelova metoda. Vztah (5.17), který je v podstatě získaný obdobným postupem jako u Jacobiovy metody, je vhodný pro praktické použití. Maticový zápis Gaussovy-Seidelovy metody lze získat takto: Ax = b (D - L - U)x = b (D - L)x = Ux + b. Za předpokladu, že aii = 0, i = 1, . . . , n, je matice D - L regulární a x = (D - L)-1 Ux + (D - L)-1 b. Položíme-li TG = (D - L)-1 U, je Gaussova-Seidelova iterační metoda tvaru xk+1 = TGxk + g, g = (D - L)-1 b. (5.18) Věta 5.5. Posloupnost xk k=0 generovaná Gaussovou-Seidelovou iterační metodou (5.18) konverguje pro každou počáteční aproximaci x0 Rn právě tehdy, když (TG) < 1. Důkaz. Věta je přímým důsledkem věty 5.2. 2 Poznámka 3. Vztah (5.18) umožňuje stanovit kritéria pro konvergenci metody. Věta 5.6. Nechť jsou splněny předpoklady a), b) věty 5.4. Pak Gaussova-Seidelova metoda konverguje pro každou počáteční aproximaci x0 Rn . Důkaz. Důkaz provedeme pouze pro ryze řádkově diagonálně dominantní matice. Nechť je vlastní číslo matice TG = (D - L)-1 U a nechť x = (x1, . . . , xn)T je odpovídající vlastní vektor. Odtud plyne, že TGx = x (D - L)-1 Ux = x Ux = (D - L)x, neboli vyjádřeno ve složkách vektoru x - n j=i+1 aijxj = i j=1 aijxj. Poslední vztah můžeme přepsat takto: aiixi = - i-1 j=1 aijxj - n j=i+1 aijxj, 1 i n. § 5.3. Gaussova-Seidelova iterační metoda 143 Nechť |xk| = max 1i n |xi|. Nyní pro i = k dostaneme z předchozího vztahu |||akk| || k-1 j=1 |akj| + n j=k+1 |akj|, což znamená, že || |akk| - k-1 j=1 |akj| n j=k+1 |akj| neboli || n j=k+1 |akj| |akk| - k-1 j=1 |akj| (5.19) Matice A je ryze řádkově diagonálně dominantní, tj. |akk| > n j=1 j=k |akj|, což také znamená, že |akk| - k-1 j=1 |akj| > n j=k+1 |akj|. (5.20) Nyní z (5.20) a (5.18) plyne, že || < 1 a tedy (TG) < 1 a věta je dokázána. 2 Příklad 5.5. Systém v příkladě 5.3 řešte Gaussovou-Seidelovou iterační metodou. Řešení. Gaussova-Seidelova metoda bude konvergovat pro každou počáteční aproximaci, neboť matice systému je ryze řádkově diagonálně dominantní. Tato metoda je nyní tvaru xk+1 1 = 1 10 (6 + 2xk 2 + 2xk 3) xk+1 2 = 1 10 (7 + xk+1 1 + 2xk 3) xk+1 3 = 1 10 (8 + xk+1 1 + xk+1 2 ) Nechť x0 = (0, 0, 0)T . Pak x1 = 0,6 0,76 0,936 x2 = 0,9392 0,98112 0,99203 x3 = 0,994630 0,997869 0,9992499 Nyní x - x3 0,005. 144 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Iterační matice TG je tvaru TG = 0 0,2 0,2 0 0,02 0,22 0 0,022 0,042 (TG) = 0,101. Podívejme se nyní na geometrický význam Gaussovy-Seidelovy metody. Příklad 5.6. Uvažujme systém dvou rovnic: l1: a11x1 + a12x2 = b1 l2: a21x1 + a22x2 = b2 Gaussova-Seidelova iterační metoda je tvaru l1: xk+1 1 = - a12 a11 xk 2 + b1 a11 l2: xk+1 2 = - a21 a22 xk+1 1 + b2 a22 (5.21) Iterační matici TG lze v tomto případě jednoduše získat dosazením xk+1 1 z první rovnice do druhé rovnice: l1: xk+1 1 = - a12 a11 xk 2 + b1 a11 l2: xk+1 2 = - a12a21 a11a22 xk 2 + b2 a22 - a21b1 a22a11 Iterační matice TG TG = 0 - a12 a11 0 a12a21 a11a22 je singulární. Vlastní čísla této matice vyhovují rovnici - a12a21 a11a22 = 0, tj. 1 = 0, 2 = a12a21/a11a22. Z geometrického hlediska bod o souřadnicích (xk+1 1 , xk 2 ) leží na přímce l1 a bod (xk+1 1 , xk+1 2 ) leží na přímce l2. Tato skutečnost je zřejmá ze vztahů (5.21). Graficky je iterační proces znázorněn na obr. 5.2. I v tomto případě, při změně pořadí rovnic, konvergentní proces se změní na divergentní a naopak. Viděli jsme, že pro ryze řádkově diagonálně dominantní matice Jacobiova i Gaussova-Seidelova metoda konvergují. Přirozeně vzniká otázka, zda toto platí § 5.4. Relaxační metody 145 0 1 2 3 4 5 6 0 1 2 3 4 5 6 x0 x1 x2 x3 x1 x2 l 1 : 2x 1 -x 2 -1.5=0 l 2 : x 1 -2x 2 +1=0 Obr. 5.2: Gaussova-Seidelova iterační metoda i pro jiné typy matic a jestliže ano, která z metod konverguje rychleji. Ale obecně jsou obory konvergence těchto dvou metod různé a jen částečně se překrývají. Porovnat obory konvergence těchto metod lze pouze ve speciálních případech. Věta 5.7. (Stein-Rosenberg). ([5]) Nechť pro prvky matice A platí aij 0 pro všechna i = j a aii > 0, i = 1, . . . , n. Pak platí právě jedno z následujících tvrzení: (a) 0 < (TG) < (TJ ) < 1 (b) 1 < (TJ ) < (TG) (c) (TJ ) = (TG) = 0 (d) (TJ ) = (TG) = 1. To znamená, že konvergují-li obě metody, Gaussova-Seidelova metoda konverguje rychleji. Podle této věty pro systémy v příkladě 5.5 konverguje Gaussova-Seidelova metoda rychleji než Jacobiova, neboť (TG) < (TJ ). Uvedeme ještě jednu větu týkající se Gaussovy-Seidelovy iterační metody. Věta 5.8. Nechť A je pozitivně definitní matice. Pak Gaussova-Seidelova metoda konverguje pro každou počáteční aproximaci. Důkaz viz [5]. § 5.4. Relaxační metody Na základě předchozích výsledků lze vyslovit hypotézu, že existují jednoduché matice T , pro které odpovídající iterační proces konverguje rychleji než v případě 146 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Gaussovy-Seidelovy metody. Uvažujme třídu matic T závisejících na parametru a budeme se snažit vybrat parametr optimálním způsobem, tj. tak, aby číslo (T) bylo co nejmenší. Speciálně uvažujme tuto třídu matic: T = (D - L)-1 [(1 - )D + U] Parametr se nazývá relaxační parametr a odpovídající metody se nazývají relaxační metody. Pro 0 < < 1 se iterační metody nazývají metodami dolní relaxace. Tyto metody jsou vhodné v případě, že Gaussova-Seidelova metoda nekonverguje. Pro = 1 je relaxační metoda totožná s Gaussovou-Seidelovou meto- dou. Pro 1 < se metody nazývají metodami horní relaxace, nebo častěji SOR metodami (SOR = Successive Over-Relaxation). Tyto metody lze užít ke zrychlení konvergence Gaussovy-Seidelovy metody. Relaxační metodu lze maticově zapsat takto xk+1 = (D - L)-1 [(1 - )D + U]xk + (D - L)-1 b (5.22) a zápis v jednotlivých složkách je tvaru xk+1 i = (1 - )xk i + aii bi - i-1 j=1 aijxk+1 j - n j=i+1 aijxk j . (5.23) Je přirozené zabývat se otázkou, pro které hodnoty parametru bude iterační proces (5.22) konvergovat. Další otázkou je optimální volba parametru . Na první otázku obecně neexistuje vyčerpávající odpověď, ale následující výsledek je velmi důležitý. Věta 5.9. (Kahan). Nechť aii = 0, i = 1, . . . , n. Pak (T) | - 1|. Důkaz. Připomeňme, že D - L je dolní trojúhelníková matice tvaru D - L = a11 0 a21 ... ... ... an1 ann § 5.4. Relaxační metody 147 Je zřejmé, že det D = det(D - L) = n i=1 aii. Zabývejme se nyní charakteristickým polynomem () matice T: () = det(T - E) = = det D-1 det(D - L) det(T - E) = = det D-1 det(D - L)(T - E) = = det D-1 (D - L) (D - L)-1 [(1 - )D + U] - E = = det D-1 ((1 - )D + U - (D - L)E) = = det (1 - - )E + D-1 (U + L) . () je charakteristický polynom; jeho hodnota v bodě = 0 je rovna determinantu dané matice T. Z vlastností kořenů charakteristického polynomu a z předchozího vztahu však dále plyne, že (0) = n i=1 i = det (1 - )E + D-1 U , kde i, i = 1, . . . , n, jsou vlastní čísla matice T. Matice (1 - )E + D-1 U je horní trojúhelníková matice s prvky 1 - na diagonále. Odtud plyne, že det (1 - )E + D-1 U = (1 - )n . Nyní z rovnosti n i=1 i = (1 - )n nutně plyne, že (T) = max 1i n |i| |1 - |. 2 Poznámka 4. Z předchozí věty plyne, že má smysl uvažovat pouze (0, 2). Uvažujeme-li nyní stejný systém jako v příkladu 5.4, je příslušná iterační matice T tvaru T = 1 - - a12 a11 - a21 a22 (1 - ) a12a21 a11a22 2 + (1 - ) a vektor g = b1 a11 , b2 a22 - b1a21 a11a22 2 T . Geometricky jsou iterace této metody znázorněny na obr. 5.3 a 5.4. Následující věty udávají postačující podmínky pro konvergenci relaxační metody pro některé typy matic. Věta 5.10. (Ostrowski-Reich). Pro pozitivně definitní matici A platí (T) < 1 pro všechna (0, 2). Důkaz viz [5]. 148 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 0 1 2 3 4 5 6 0 1 2 3 4 5 6 x 0 x 1 x 2 x 3 x4 x5 x 6 x1 x2 l1 : 2x1 -x 2 -1.5=0 l 2 : x 1 -2x 2 +1=0 Obr. 5.3: Relaxační metoda pro = 0,5 0 1 2 3 4 5 6 0 1 2 3 4 5 6 x 0 x 1 x2 x3 x1 x2 l1 : 2x1 -x 2 -1.5=0 l2 : x 1 -2x 2 +1=0 Obr. 5.4: Relaxační metoda pro = 1,4 § 5.4. Relaxační metody 149 Poznámka 5. Z této věty plyne jako důsledek věta 5.8. Pokud jde o optimální hodnotu parametru , tj. hodnotu (0, 2), pro kterou je konvergence relaxační metody nejrychlejší, uvedeme bez důkazu pouze tuto větu ([5]). Věta 5.11. Nechť A je třídiagonální pozitivně definitní matice. Pak (TG) = 2 (TJ ) < 1 a optimální hodnota relaxačního parametru je dána vztahem = opt = 2 1 + 1 - 2(TJ ) . Při této volbě je (T) = |1 - |. Příklad 5.7. Uvažujme systém 2x1 - x3 = 1 - x1 + 2x2 - x3 = 0 - x2 + 2x3 = 1, jehož přesné řešení je x = (1, 1, 1)T . Matice tohoto systému je třídiagonální a pozitivně definitní a jsou tedy splněny předpoklady věty 5.11. Pro spektrální poloměry iteračních matic platí (TG) = (TJ )2 a optimální hodnota relaxačního parametru je dána vztahem opt = 2 1 + 1 - ((TJ ))2 . Spektrální poloměr iterační matice pro relaxační metodu je roven (Topt ) = |1 - opt|. Jacobiova matice je tvaru TJ = 0 0,5 0 0,5 0 0,5 0 0,5 0 . Vlastní čísla této matice jsou 1 = 0, 2,3 = 2/2. Tedy (TJ ) = 2/2, (TG) = 1/2 a opt = 2 1 + 1 - 1/2 1,172. Za optimální hodnotu parametru lze tedy vzít hodnotu 1,17. Pro tuto hodnotu relaxačního parametru je (Topt ) = 0,17. Ze vztahu (5.10) plyne, že pro dosažení relativní chyby řádově 10-3 je třeba provést 5 iterací, zatímco v případě použití Gaussovy-Seidelovy iterační metody je třeba provést 10 iterací. 150 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Pro daný systém a = 1,17 je relaxační metoda tvaru xk+1 1 = -0,17xk 1 + 0,585(1 + xk 2) xk+1 2 = -0,17xk 2 + 0,585(xk+1 1 + xk 3) xk+1 3 = -0,17xk 3 + 0,585(1 + xk+1 2 ) Pro počáteční aproximaci x0 = (0, 0, 0)T dostaneme x1 1 = 0,585 x1 2 = 0,3422 x1 3 = 0,7852 x2 1 = 0,685752 x2 2 = 0,802329 x2 3 = 0,920878 x3 1 = 0,9377849 x3 2 = 0,9509221 x3 3 = 0,9847401 x4 1 = 0,9818660 x4 2 = 0,9888078 x4 3 = 0,9960467 x5 1 = 0,9965353 x5 2 = 0,9975632 x5 3 = 0,9992465. Z výsledků této kapitoly je zřejmé, že pro (T ) < 1 iterační proces konverguje a pro (T ) > 1 určitě diverguje. Povšimněme si nyní chování posloupnosti v případě (T ) = 1. Touto otázkou se nebudeme zabývat podrobně, ale upozorníme na zajímavé geometrické chování některých iteračních posloupností. Definice 5.2. Nechť {xk } k=0 je posloupnost generovaná iterační metodou (5.4) s počáteční aproximací x0 Rn . Řekneme, že vektor x0 generuje cyklus řádu p, p N, p 2, jestliže xp = x0 , přičemž xk = x0 , k = 1, 2, . . ., p - 1. Samozřejmě se předpokládá x0 = x . Dá se ukázat (viz [24]), že pro systém tvaru x1 + kx2 = b1 x1 - kx2 = b2, kde k = 0, nastane pro Jacobiovu metodu cyklus řádu 4 pro každou počáteční aproximaci. V tomto případě (TJ ) = 1. Pro Gaussovu-Seidelovu metodu nastane cyklus řádu 2, ale až od 1. aproximace, tj. vlastně s počáteční aproximací T x0 . Graficky jsou cykly pro tyto metody znázorněny na obr. 5.5, 5.6. Zajímavá situace se objevuje u relaxační metody. Uvažujme systém tvaru x1 + x2 = 1 qx1 + x2 = 1. Odpovídající relaxační matice T a vektor g jsou tvaru T = 1 - -q(1 - ) q2 + (1 - ) , g = (1 - q) . § 5.4. Relaxační metody 151 -10 -8 -6 -4 -2 0 2 4 6 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 x 0 x 1 x 2 x1 x2 x1 +3x2 -3=0 x1 -3x2 +6=0 Obr. 5.5: Gaussova-Seidelova iterační metoda -10 -8 -6 -4 -2 0 2 4 6 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 x0 x1 x 2 x3 x1 x2 x1 +3x2 -3=0 x1 -3x2 +6=0 Obr. 5.6: Jacobiova iterační metoda 152 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC Pro = 2 je matice T2 a vektor g2 tvaru T2 = -1 -2 2q 4q - 1 , g2 = 2 2(1 - 2q) . Charakteristický polynom () = 2 + (2 - 4q) + 1 má kořeny 1,2 = -1 + 2q 2 q(q - 1). Pro q (0, 1) jsou tyto kořeny komplexně sdružené a jejich absolutní hodnota je rovna jedné, tedy (T2) = 1. Vlastní čísla 1, 2 mohou být také vyjádřena v goniometrickém tvaru 1,2 = cos i sin a lze ukázat ([24]), že q = 1 2 (1 + cos ) . V práci [24] je dokázáno, že cyklus řádu p > 2 existuje tehdy a jen tehdy, když = 2l/p, 0 < l < p/2. Vztah q = (1+cos )/2 umožňuje nalézt systém generující cyklus daného řádu p vhodnou volbou p, l. Např.: pro q = 0.5((1 +cos2 4 11 ) . = 0.17257 existuje cyklus řádu 11 (viz obr. 5.7) pro q = 0.5((1+cos2 9 40 ) . = 0.578217 existuje cyklus řádu 40 (viz obr. 5.8). -3 -2 -1 0 1 2 3 -1 -0.5 0 0.5 1 1.5 2 2.5 3 x 0 x 1 x2 Obr. 5.7: Cyklus řádu 11, počáteční aproximace x0 = (0, 0). Cvičení ke kapitole 5 153 -3 -2 -1 0 1 2 3 -1 -0.5 0 0.5 1 1.5 2 2.5 3 x 0 x 1 x2 Obr. 5.8: Cyklus řádu 40, počáteční aproximace x0 = (0, 0). Všechny body cyklu řádu p = l/s leží na elipse, jejíž střed je přesné řešení x . Rovnice elipsy je tvaru x2 1 + x2 2 q + 2x1x2 - 2x2 q - 2x1 = (x0 1)2 + (x0 2)2 q + 2x0 1x0 2 - 2x0 2 q - 2x0 1, kde x0 = (x0 1, x0 2) je počáteční aproximace. Pro různou volbu počátečních aproximací dostáváme množinu soustředných elips. Poznámka 6. Jestliže v iteračním procesu (5.4) nastává cyklus, pak (T) = 1. Ale opak neplatí. Je-li (T) = 1, nemusí v iteračním procesu nastat cyklus. Otázky cyklů iteračních metod jsou podrobně studovány v [24]. Cvičení ke kapitole 5 1. Je matice H = 0, 2 0, 3 -0, 1 0, 7 -0, 15 0, 05 0, 2 0, 0 0, 6 konvergentní? 2. a) Jacobiovou, b) Gaussovou-Seidelovou iterační metodou řešte systémy 10x1 - 2x2 - 2x3 = 6 - x1 + 10x2 - 2x3 = 7 - x1 - x2 + 10x3 = 8 2x1 - x2 + x3 = -1 3x1 + 3x2 + 9x3 = 0 3x1 + 3x2 + 5x3 = 4 . 154 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 3. Ukažte, že pro systém x1 + x2 = 1 2(1 - )x1 + x2 + x3 = 2 x3 + x4 = -1 -(1 - )2 x1 + x4 = 5 (0 < < 0,1) Jacobiova metoda konverguje a Gaussova-Seidelova metoda diverguje. 4. Ukažte, že pro systém 2x2 + 4x3 = 0 x1 - x2 - x3 = 0,375 x1 - x2 + 2x3 = 0 diverguje Jacobiova i Gaussova-Seidelova metoda. 5. Ukažte, že pro systém 4x1 + 3x2 = 24 3x1 + 4x2 - x3 = 30 -x2 + 4x3 = -24 Jacobiova iterační metoda konverguje. Zvolte počáteční aproximaci x0 = (1, 1, 1)T a vypočtěte x1 a x2 . 6. Ukažte, že pro systém 3x1 + 2x2 + 2x3 = 1 2x1 + 3x2 + 2x3 = 0 2x1 + 2x2 + 3x3 = -1 Jacobiova iterační metoda diverguje a Gaussova-Seidelova metoda konver- guje. 7. Dokažte, že pro systém 10x1 - x2 + 2x3 - 3x4 = 0 x1 + 10x2 - x3 + 2x4 = 5 2x1 + 3x2 + 20x3 - x4 = -10 3x1 + 2x2 + x3 + 20x4 = 15 Jacobiova iterační metoda konverguje. Kolik iterací je třeba k nalezení řešení s chybou menší než 10-4 ? (Řešení: k 17.) Cvičení ke kapitole 5 155 8. Ukažte, že pro systém 4x1 + 3x2 + 2x3 = -1 x1 + 5x2 + 4x3 = 2 2x1 - x2 - 7x3 = 4 Jacobiova metoda konverguje. Zvolte počáteční iteraci x0 = (1, 1, 1)T a vypočtěte x1 a x2 . 9. Ukažte, že pro systém 3x1 + x2 + x3 = 2 2x1 + 4x2 + x3 = 4 -x1 - x2 - 3x3 = -1 Gaussova-Seidelova metoda konverguje. Zvolte počáteční iteraci x0 = (0, 0, 0)T a vypočtěte první dvě iterace. 10. Ukažte, že pro systém 2x1 - x2 - x3 = 3 -x1 + 3x2 - 2x3 = 1 -3x1 - x2 + 4x3 = -1 Jacobiova iterační metoda diverguje. 11. Ukažte, že pro systém 6x1 + 3x2 = 10 3x1 + 5x2 - x3 = 5 -x2 + 4x3 = -6 Gaussova­Seidelova iterační metoda konverguje. Zvolte počáteční aproximaci x0 = (1, 1, 1)T a vypočtěte x1 a x2 . 12. Systém 4x1 + 3x2 = 24 3x1 + 4x2 - x3 = 30 - x2 + 4x3 = -24 má přesné řešení x = (3, 4, -5)T . Užijte Gaussovy-Seidelovy iterační metody a relaxační metody s parametrem = 1,25. Porovnejte výsledky po provedení 7 iterací. Vypočtěte optimální hodnotu parametru . (Řešení: (TG) = 0,625, (Topt ) 0,24, opt 1,24.) 156 5. ITERAČNí METODY ŘEŠENí SYSTÉMŮ LINEÁRNíCH ROVNIC 13. Systém 10x1 - x2 = 9 - x1 + 10x2 - 2x3 = 7 - 2x2 + 10x3 = 6 (přesné řešení x = 473 475 , 455 475 , 376 475 T ) řešte relaxační metodou s = 0,5, = 1,1 a vypočtěte optimální hodnotu parametru opt a řešte systém relaxační metodou s tímto parametrem. Kontrolní otázky ke kapitole 5 1. Může být v iteračním procesu xk+1 = T xk +g iterační matice T singulární? 2. V příkladu 6 Jacobiova metoda pro systém 3x1 + 2x2 + 2x3 = 1 2x1 + 3x2 + 2x3 = 0 2x1 + 2x2 + 3x3 = -1 obecně nekonverguje, neboť (TJ ) > 1. Přesto pro počáteční aproximaci x0 = (0, 0, 0)T iterační proces konverguje k řešení (1, 0, -1)T . Proč? 3. Uvažujte systém x1 - x2 = 0 x1 + x2 = 0 . Co znamená fakt, že T 4 J = E? 4. Jestliže matice A není ryze řádkově nebo sloupcově diagonálně dominantní, může Jacobiova iterační metoda konvergovat? Kapitola 6 Interpolace V této kapitole budeme zkoumat problém aproximace funkcí. Tento problém spočívá většinou v nalezení aproximace funkce f pomocí vhodné kombinace funkcí z nějaké třídy funkcí. Uvažujme třídu funkcí jedné proměnné: (x; a0, . . . , an) , kde a0, . . . , an jsou parametry, jejichž hodnoty charakterizují jednotlivé funkce v této třídě. Ústředním problémem aproximace je kriterium pro volbu těchto parametrů. U interpolační aproximace požadujeme, aby parametry byly vybrány tak, že na množině navzájem různých bodů {xi}n i=0 platí (xi; a0, . . . , an) = f(xi), i = 0, . . . , n . V některých případech jsou předepsány i hodnoty derivací v některých bodech. V případě metody nejmenších čtverců se parametry a0, . . . , an vyberou tak, aby veličina (a0, . . . , an) = N j=0 (f(xj) - (xj; a0, . . . , an))2 , n < N, nabývala minimální hodnoty. Dalším typem aproximace je Čebyševova aproximace, kde hledáme takovou aproximaci, která minimalizuje maximální absolutní hodnotu rozdílu funkce f a aproximace : min (a0,...,an) max x[a,b] |f(x) - (x; a0, . . . , an)| V dalším se zaměříme pouze na lineární aproximaci, tj. budeme se zabývat funkcemi tvaru (x; a0, . . . , an) = a00(x) + . . . + ann(x) , kde funkce i, i = 0, . . . , n tvoří bázi lineárního prostoru dimenze n + 1. Do této třídy patří i klasická polynomiální interpolace (x; a0, . . . , an) = a0xn + a1xn-1 + . . . + an 158 6. INTERPOLACE a trigonometrická interpolace (x; a1, . . . , an) = a0 + a1eix + a2e2ix + . . . + anenix , (i2 = -1) Polynomiální interpolace se užívá především k aproximaci funkcí daných tabulkou a je také důležitým základem pro některé typy formulí numerického derivování a integrování. Do třídy lineárních interpolačních problémů také patří splajnová interpolace. Ve speciálním případě kubických splajnů se požaduje, aby funkce byla dvakrát spojitě diferencovatelná pro x [x0, xn] a byla totožná s kubickým polynomem na každém subintervalu [xi, xi+1] daného dělení x0 < x1 < . . . < xn. Splajnové interpolaci je nyní věnována značná pozornost, protože poskytuje vhodný nástroj pro interpolaci empirických křivek a složitých matematických funkcí. Roste také její užití při přibližném řešení diferenciálních rovnic. § 6.1. Polynomiální interpolace Nejjednodušší úlohu lineární interpolace lze formulovat takto: Jsou dány body xi, i = 0, 1, . . . , n, xi = xk pro i = k a hodnoty funkce f v těchto bodech: f(xi) = fi, i = 0, 1, . . . , n. Je třeba najít algebraický polynom Pn stupně nejvýše n takový, že Pn(xi) = fi, i = 0, 1, . . . , n. Úmluva. Body xi, i = 0, 1, . . . , n, xi = xk pro i = k, budeme nazývat uzly, polynom Pn interpolační polynom. Jako dříve označme n množinu všech reálných polynomů stupně nejvýše n tvaru Pn(x) = a0xn + a1xn-1 + . . . + an. Věta 6.1. Pro (n + 1) daných dvojic čísel (xi, fi), i = 0, 1, . . . , n, xi = xk pro i = k, existuje právě jeden polynom Pn n takový, že Pn(xi) = fi, i = 0, 1, . . . , n. (6.1) Důkaz. Jednoznačnost: Předpokládejme, že existují dva interpolační polynomy Pn, Qn n splňující podmínky (6.1), tj. Pn(xi) = Qn(xi) = fi, i = 0, 1, . . . , n. Položme Rn(x) = Pn(x) - Qn(x). Je zřejmé, že Rn n a dále Rn(xi) = 0, i = 0, 1, . . . , n, tzn. Rn má alespoň n + 1 různých kořenů. To je ale spor s předpokladem, že Rn je polynom stupně nejvýše n. Odtud plyne, že polynomy Pn a Qn musí být totožné. Existence: Existenci dokážeme tak, že příslušný polynom sestrojíme. Nejdříve sestrojíme polynomy li, i = 0, 1, . . . , n s těmito vlastnostmi: § 6.1. Polynomiální interpolace 159 (a) li je polynom stupně n, (b) li(xj) = 0 pro i = j 1 pro i = j. Je zřejmé, že li(x) = Ai(x - x0) . . . (x - xi-1)(x - xi+1) . . . (x - xn). Konstantu Ai určíme tak, aby byla splněna podmínka li(xi) = 1, tedy Ai = 1 (xi - x0) . . . (xi - xi-1)(xi - xi+1) . . . (xi - xn) . a odtud li(x) = (x - x0) . . . (x - xi-1)(x - xi+1) . . . (x - xn) (xi - x0) . . . (xi - xi-1)(xi - xi+1) . . . (xi - xn) . (6.2) Definujme nyní polynom Pn vztahem: Pn(x) = l0(x)f0 + l1(x)f1 + . . . + ln(x)fn = n i=0 li(x)fi. (6.3) Snadno se ověří, že tento polynom splňuje interpolační podmínky (6.1), a protože je lineární kombinací polynomů stupně n, je polynomem stupně nejvýše n. 2 Interpolační polynom tvaru (6.3) nazýváme Lagrangeovým interpolačním polynomem nebo přesněji Lagrangeovým tvarem interpolačního polynomu. Úmluva. Polynomy li, i = 0, 1, . . . , n, definované vztahem (6.2) budeme nazývat fundamentální polynomy. Z jednoznačnosti interpolačního polynomu rovněž plyne, že interpolační polynom stupně nejvýše n pro polynom Qn stupně n je tentýž polynom, tj. Pn(x) Qn(x). Položme n+1(x) = (x - x0) . . . (x - xn) = n i=0 (x - xi). Je zřejmé, že n+1(xi) = (xi - x0) . . . (xi - xi-1)(xi - xi+1) . . . (xi - xn) = n k=0 k =i (xi - xk). Použitím těchto vztahů lze fundamentální polynomy zapsat ve tvaru li(x) = n+1(x) (x - xi) n+1(xi) , i = 0, 1, . . ., n. (6.4) 160 6. INTERPOLACE Příklad 6.1. Sestrojte Lagrangeův interpolační polynom, je-li dáno: xi 0 1 2 5 fi 2 3 12 147 Řešení. V tomto případě je n = 3, hledáme tedy polynom P3 3. P3(x) = 2 (x - 1)(x - 2)(x - 5) (-1)(-2)(-5) + 3 (x - 0)(x - 2)(x - 5) (1 - 0)(1 - 2)(1 - 5) + + 12 (x - 0)(x - 1)(x - 5) (2 - 0)(2 - 1)(2 - 5) + 147 (x - 0)(x - 1)(x - 2) (5 - 0)(5 - 1)(5 - 2) = = x3 + x2 - x + 2. Příklad 6.2. Sestrojte interpolační polynom pro funkci f(x) = x + sin x v uzlech x0 = 9, x1 = 3, x2 = 4,5, x3 = 10, x4 = 5,5, x5 = 12,5. Řešení. Jelikož n = 5, hledáme polynom P5 5. Na obr. 6.1 jsou znázorněny fundamentální polynomy li, i = 0, 1, . . .5, na obr. 6.2 je znázorněn čárkovaně polynom P5 a plnou čarou je znázorněn graf dané funkce. Fundamentální polynomy li, i = 0, . . . , n mají zajímavou vlastnost, splňují totiž identitu n i=0 li(x) = 1 x R . Toto tvrzení plyne z faktu, že interpolační polynom Pn n pro funkci f, která je polynomem stupně nejvýše n, platí Pn(x) = f(x), x R. Tedy i pro funkci f(x) 1, která je polynomem nultého stupně, tvrzení platí. Uvedený vztah dále vyjadřuje skutečnost, že polynomy li, i = 0, . . . , n jsou jisté ,,váhy přiřazené hodnotám fi, i = 0, . . . , n. Další zajímavou vlastnost interpolačního polynomu dostaneme pomocí následujícího výpočtu: Platí Pn(x) = n i=0 n+1(x) (x - xi) n+1(xi) f(xi) . Označme wi = ( n+1(xi))-1 , tedy wi závisí pouze na xi a platí Pn(x) = n+1(x) n i=0 f(xi) wi (x - xi) . Dále víme, že n i=0 n+1(x) (x - xi) n+1(xi) = 1 , § 6.1. Polynomiální interpolace 161 2 14 -1.5 -1 -0.5 0 0.5 1 x 0 x 1 x 2 x 3 x 4 x 5 2 14 0 0.2 0.4 0.6 0.8 1 1.2 x 0 x 1 x 2 x 3 x 4 x 5 Fundamentální polynom l0(x) Fundamentální polynom l1(x) 2 14 -2 -1.5 -1 -0.5 0 0.5 1 x0 x1 x2 x3 x4 x5 2 14 -2 -1 0 1 2 x 0 x 1 x 2 x 3 x 4 x 5 Fundamentální polynom l2(x) Fundamentální polynom l3(x) 2 14 -0.5 0 0.5 1 x0 x1 x2 x3 x4 x5 2 14 0 0.2 0.4 0.6 0.8 1 x 0 x 1 x 2 x 3 x 4 x 5 Fundamentální polynom l4(x) Fundamentální polynom l5(x) Obr. 6.1: Fundamentální polynomy li 162 6. INTERPOLACE 2 4 6 8 10 12 14 4 6 8 10 12 14 x y x 0 x 1 x 2 x 3 x 4 x 5 Obr. 6.2: Lagrangeův interpolační polynom pro f(x) = x + sin x v bodech (xi, fi), i = 0, . . . , 5 tj. n+1(x) n i=0 wi (x - xi) = 1 , neboli n+1(x) = 1 n i=0 wi (x-xi) . Odtud Pn(x) = n i=0 f(xi) wi (x-xi) n i=0 wi (x-xi) = n i=0 wi (x-xi) n j=0 wj (x-xj) f(xi) . Hodnoty wi (x-xi) n j=0 wj (x-xj ) tvoří tzv. barycentrické souřadnice bodu (x, Pn(x)) v rovině vzhledem k bodům (xi, f(xi)), i = 0, . . . , n. Tato formule je navíc z výpočetního hlediska velmi efektivní ­ při určených hodnotách wi je výpočet hodnoty Pn(x) lineární vzhledem k n. Problémy mohou ale nastat pro x blízké některému uzlu xi, kde při dělení výrazem x-xi, který je blízký nule, dochází k velké relativní chybě. Poznámka 1. Danou úlohu interpolace lze rovněž řešit metodou neurčitých koeficientů. Tato metoda spočívá v následujícím. Podmínky (6.1) zapíšeme ve tvaru systému lineárních rovnic pro neznámé koeficienty ai, i = 0, 1, 2, . . ., n, a0xn i + a1xn-1 i + . . . + an = 0, i = 0, 1, . . . , n. Jestliže body xi, i = 0, . . . , n, jsou navzájem různé, má tento systém právě jedno řešení. Ale tento postup je příliš těžkopádný a nevhodný pro větší počet uzlů. § 6.1. Polynomiální interpolace 163 Nechť nyní Pn-1 je Lagrangeův interpolační polynom v uzlech x0, . . . , xn-1. Rozdíl f(x) - Pn-1(x) vydělme součinem (x - x0) . . . (x - xn-1). Tento podíl v bodě x = xn vyjádříme ve tvaru f(xn) - Pn-1(xn) n-1 j=0 (xn - xj) = f(xn) - Pn-1(xn) n(xn) = = 1 n(xn) f(xn) - n-1 j=0 f(xj) n(xn) n(xn)(xn - xj) = = n j=0 f(xj) n i=0 i =j (xj - xi) = f[x0, . . . , xn]. (6.5) Definice 6.1. Výraz f[x0, . . . , xn] ve vztahu (6.5) nazýváme poměrnou diferencí řádu n funkce f v bodech x0, . . . , xn. Položme f(x0) = f[x0]. Dále f[x0, x1] = f(x0) x0 - x1 + f(x1) x1 - x0 = f(x0) - f(x1) x0 - x1 , f[x0, x1, x2] = f(x0) (x0 - x1)(x0 - x2) + f(x1) (x1 - x0)(x1 - x2) + f(x2) (x2 - x0)(x2 - x1) . Poznamenejme, že poměrná diference je symetrickou funkcí svých argumentů, tedy hodnota poměrné diference nezávisí na pořadí uzlů xi. Lagrangeův interpolační polynom je po teoretické stránce velmi důležitý. Je základem pro odvození metod numerického derivování a integrování. Ale pro praktické výpočty, zejména pro velký počet uzlů nebo při změně počtu uzlů (kdy je třeba přepočítat všechny polynomy li), je výhodnější použít některé z formulí, které nyní uvedeme. Věta 6.2. Interpolační polynom Pn n pro body (xi, fi), i = 0, 1, . . . , n, může být zapsán ve tvaru Pn(x) = f0 + (x - x0)f[x0, x1] + . . . + (x - x0) . . . (x - xn-1)f[x0, . . . , xn]. (6.6) Důkaz. Budeme postupovat tak, že vhodným způsobem vyjádříme Lagrangeův interpolační polynom a další úpravou dostaneme vyjádření (6.6). Nechť Pn n je Lagrangeův interpolační polynom pro dané body (xi, fi), i = 0, 1, . . ., n. Zapišme tento polynom ve tvaru Pn(x) =P0(x) + [P1(x) - P0(x)] + . . . + [Pj(x) - Pj-1(x)] + . . . . . . + [Pn(x) - Pn-1(x)] , (6.7) 164 6. INTERPOLACE kde Pj j je Lagrangeův interpolační polynom pro body (xi, fi), i = 0, 1, 2, . . ., j. Počítejme rozdíly Pj(x) - Pj-1(x): Pj(x) - Pj-1(x) = j i=0 j+1(x) (x - xi) j+1(xi) fi - j-1 i=0 j(x) (x - xi) j(xi) fi = = j+1(x) (x - xj) j+1(xj) fj + j-1 i=0 fi j+1(x) (x - xi) j+1(xi) - j(x) (x - xi) j(xi) . Pro j+1 a j platí j+1(x) = j i=0 (x - xi), j(x) = j-1 i=0 (x - xi) j+1(x) = (x - xj) j(x). Dále pro derivace funkcí j a j+1 máme j+1(x) = j(x) + (x - xj) j(x) j+1(xi) = (xi - xj) j(xi) pro i = j j(xj) pro i = j. Těchto vztahů nyní užijeme pro výpočet rozdílů Pj(x) - Pj-1(x): Pj(x) - Pj-1(x) = j+1(x) (x - xj) j+1(xj) fj + j-1 i=0 j(x)(x - xj - xi + xj) (x - xi) j+1(xi) fi = = j(x) j+1(xj) fj + j(x) j-1 i=0 fi j+1(xi) = j(x) j i=0 fi j+1(xi) = = j(x)f[x0, . . . , xj] Každý rozdíl Pj(x) - Pj-1(x) pro j = 0, 1, . . ., n můžeme tedy vyjádřit ve tvaru Pj(x) - Pj-1(x) = (x - x0) . . . (x - xj-1)f[x0, . . . , xj]. Odtud a z (6.7) nyní plyne, že interpolační polynom může být zapsán ve tvaru (6.6). 2 Interpolační polynom (6.6) se nazývá Newtonův interpolační polynom. Ještě jednou připomínáme, že pro dané body (xi, fi), i = 0, 1, . . . , n, xi = xk pro i = k, je interpolační polynom určen jednoznačně, tzn., že Newtonův interpolační polynom je totožný s Lagrangeovým interpolačním polynomem, liší se pouze formou zápisu. Důsledek 1. Nechť xi [a, b], i = 0, . . . , n, xi = xk pro i = k. Nechť f Cn [a, b]. Pak existuje bod (a, b) takový, že f[x0, . . . , xn] = 1 n! f(n) (). (6.8) § 6.1. Polynomiální interpolace 165 Důkaz. Funkce (x) = f(x) - Pn(x) má alespoň (n + 1) nulových bodů v [a, b]: x0, . . . , xn. Podle Rolleovy věty má funkce (n) (x) = f(n) (x) - P (n) n (x) alespoň jeden nulový bod (a, b): f(n) () - P(n) n () = 0, a f(n) () = P(n) n (). Na druhé straně, ze vztahu (6.6) plyne P(n) n () = n!f[x0, . . . , xn] a odtud 1 n! f(n) () = f[x0, . . . , xn]. 2 Poznámka 2. Lze ukázat ([23]), že lim xix0 i=1,...,n f[x0, . . . , xn] = 1 n! f(n) (x0) , (6.9) neboli f[x0, . . . x0 (n+1)krát ] = 1 n! f(n) (x0) . (6.10) Důsledek 2. Nechť Qn-1 je polynom stupně nejvýše n - 1. Pak Qn-1[x0, . . . , xn] = 0. (6.11) Je-li Qn(x) = xn , pak Qn[x0, . . . , xn] = 1. (6.12) Důkaz. (6.11) plyne ihned ze skutečnosti, že interpolační polynom pro Qn-1 je tentýž polynom a tedy poslední člen ve vyjádření (6.6) musí být roven nule. Vztah (6.12) plyne z následujícího: Nechť Pn-1 je interpolační polynom pro funkci Qn(x) = xn v uzlech x0, . . . , xn-1. Rozdíl xn - Pn-1(x) je tedy polynom stupně n s kořeny v bodech x0, . . . , xn-1, což znamená, že tento rozdíl lze vyjádřit ve tvaru xn - Pn-1(x) = (x - x0) . . . (x - xn-1), Dále ze vztahu (6.5) pro poměrnou diferenci plyne pro x = xn 1 = xn n - Pn-1(xn) n-1 i=0 (xn - xi) = Qn[x0, . . . , xn]. 2 Lemma. Platí identita (x0 - xn)f[x0, . . . , xn] = f[x0, . . . , xn-1] - f[x1, . . . , xn]. (6.13) 166 6. INTERPOLACE Důkaz. Nechť Pn n je interpolační polynom splňující podmínky (6.1). Ze vztahu (6.6) plyne P (n-1) n (x) = f[x0, . . . , xn-1](n - 1)! + + f[x0, . . . , xn](n!x - (n - 1)!(x0 + . . . + xn-1)). (6.14) Vyměníme-li ve vztahu (6.6) body x0 a xn, dostaneme P(n-1) n (x) = f[xn, x1, . . . , xn-1](n - 1)! + +f[xn, x1, . . . , xn-1, x0](n!x - (n - 1)!(xn + x1 + . . . + xn-1)) = = f[x1, . . . , xn](n - 1)! + (6.15) +f[x0, . . . , xn](n!x - (n - 1)!(x1 + . . . xn)). Odečtením vztahů (6.14) a (6.15) dostaneme požadovanou identitu (6.13). 2 Poznámka 3. Uvedené lemma znamená, že poměrnou diferenci n-tého řádu lze rekurentně vyjádřit pomocí diferencí řádu n - 1: f[x0, . . . , xn] = f[x1, . . . , xn] - f[x0, . . . , xn-1] xn - x0 (6.16) Na základě tohoto rekurentního vztahu lze sestavit následující tabulku poměrných diferencí: xi fi f[xi, xi+1] f[xi, xi+1, xi+2] . . . x0 x1 x2 ... xn f0 f1 f2 ... fn ¨¨ rr ¨¨ rr ¨¨ rr f[x0, x1] f[x1, x2] ... f[xn-1, xn] ¨¨ rr ¨¨ rr f[x0, x1, x2] ... f[xn-2, xn-1, xn] ¨¨ rr ¨¨ rr ¨¨ rr f[x0, . . . , xn] Je jasné, že pro konstrukci Newtonova interpolačního polynomu jsme užili hodnot označených . Příklad 6.3. Pro hodnoty uvedené v příkladu 6.1 sestrojte Newtonův interpolační polynom. Řešení. Sestavíme podle vztahu (6.16) tabulku poměrných diferencí: xi fi f[xi, xi+1] f[xi, xi+1, xi+2] f[xi, xi+1, xi+2, xi+3] 0 1 2 5 2 3 12 147 ¨¨ rr ¨¨ rr ¨¨ rr 1 9 45 ¨¨ rr ¨¨ rr 4 9 ¨¨ rr 1 P3(x) = 2 + x + 4(x - 1)x + x(x - 1)(x - 2) = x3 + x2 - x + 2. § 6.2. Chyba interpolace 167 Pro výpočet Newtonova polynomu jsme užili hodnot ležících na ,,diagonále . Připomeňme ještě, že z definice poměrné diference (vztah (6.5)) plyne, že poměrná diference závisí lineárně na funkci f: pro libovolná reálná čísla a, b a funkce f, g definované v bodech xi, i = 0, 1, . . ., xn, platí: (af + bg)[x0, . . . , xn] = a(f[x0, . . . , xn]) + b(g[x0, . . . , xn]) § 6.2. Chyba interpolace Zabývejme se nyní otázkou, s jakou přesností bude interpolační polynom Pn n aproximovat danou funkci v bodech různých od bodů xi, i = 0, 1, . . . , n. Jaký bude rozdíl E(x) = f(x) - Pn(x) pro x = xi, i = 0, 1, . . . , n? Odpověď dává následující věta: Věta 6.3. Nechť f C(n+1) [a, b] a nechť uzly xi [a, b], i = 0, 1, . . . , n, xi = xk pro i = k. Nechť dále Pn n je interpolační polynom splňující podmínky (6.1). Pak ke každému bodu x [a, b] existuje bod (a, b) tak, že platí: f(x) - Pn(x) = n+1(x) (n + 1)! f(n+1) (), = (x). (6.17) Důkaz. Sestrojme Newtonův tvar interpolačního polynomu podle vztahu (6.6) pro uzly x0, . . . , xn, x. Je tedy třeba najít interpolační polynom Pn+1 n+1. Tento polynom je podle (6.6) tvaru Pn+1(x) = f0 + (x - x0)f[x0, x1] + . . . + (x - x0) . . . (x - xn)f[x0, . . . , xn, x]. Jelikož Pn+1 je interpolačním polynomem i v bodě x, je f(x) = Pn+1(x). Ale na druhé straně Pn+1(x) = Pn(x) + (x - x0) . . . (x - xn)f[x0, . . . , xn, x], neboli f(x) - Pn(x) = (x - x0) . . . (x - xn)f[x0, . . . , xn, x]. Zde n+1(x) = n i=0 (x - xi). Nyní podle důsledku 1 je f[x0, . . . , xn, x] = f(n+1) () (n + 1)! a odtud plyne tvrzení. Vztah (6.17) jsme dokázali použitím Newtonova interpolačního polynomu. Ale z jednoznačnosti interpolačního polynomu plyne, že vztah platí pro polynom vyjádřený v libovolném tvaru. 2 Poznámka 4. Z důsledku 1 je jasné, že bod závisí na x. Této skutečnosti si musíme být vědomi při dalších úvahách a operacích týkajících se chyby interpolace. Rozdíl E(x) = f(x) - Pn(x) nazýváme chybou interpolace v bodě x. 168 6. INTERPOLACE Jestliže |f(n+1) (x)| Mn+1, x [a, b], lze chybu interpolace ohraničit shora takto |E(x)| Mn+1 (n + 1)! |n+1(x)| . Tento odhad závisí na vlastnostech interpolované funkce a na volbě uzlů xi. Vzniká tedy otázka, jak volit uzly xi, aby maximální absolutní hodnota n+1 byla na daném intervalu co nejmenší. Toho lze dosáhnout tak, že za uzly xi zvolíme kořeny některých speciálních polynomů. O tomto přístupu nyní stručně pojednáme. Úmluva. Třídu všech normovaných polynomů stupně m, tj. polynomů tvaru xm + am-1xm-1 + . . . + a0 označíme m. Definice 6.2. Řekneme, že polynom Qm m má ze všech polynomů třídy m nejmenší odchylku od nuly na intervalu [-1, 1], jestliže platí max -1x1 |Qm(x)| < max -1x1 |Sm(x)| pro všechny polynomy Sm m. Věta 6.4. Tm(x) = cos(m arccosx), x [-1, 1] je polynom stupně m s koeficientem 2m-1 u xm , m 1. Důkaz. Je T0(x) 1, T1(x) = x. Dále použijeme vztahu cos(m + 1) + cos(m - 1) = 2 cos cos m. Položíme-li = arccosx, dostaneme Tm+1(x) + Tm-1(x) = 2xTm(x), tj. Tm+1(x) = 2xTm(x) - Tm-1(x). (6.18) Nechť nyní podle indukčního předpokladu je Tm polynom stupně m s koeficientem 2m-1 u xm . Pak z rekurentního vztahu (6.18) ihned plyne, že Tm+1 je polynom stupně m + 1 s koeficientem 2m u xm+1 . 2 Uvedeme nyní některé důležité vlastnosti polynomů Tm. Z rekurentního vztahu (6.18) plyne T2(x) = 2x2 - 1, T3(x) = 4x3 - 3x, T4(x) = 8x4 - 8x2 + 1, atd. Polynom Tm má m kořenů, které jsou reálné, různé a všechny leží v intervalu (-1, 1), neboť pro ně platí cos(m arccosxk) = 0 m arccosxk = 2k + 1 2 , k = 0, 1, . . ., m - 1 xk = cos 2k + 1 2m , k = 0, 1, . . . , m - 1 (6.19) § 6.2. Chyba interpolace 169 Dále je max -1x1 |Tm(x)| = 1. Této maximální hodnoty nabývá Tm se střídavými znaménky v (m + 1) různých bodech intervalu [-1, 1]: | cos(m arccosxk)| = 1 xk = cos k m , k = 0, 1, . . ., m (6.20) Věta 6.5. Polynom Tm(x) = 21-m Tm(x), m 1, má na intervalu [-1, 1] nejmenší odchylku od nuly ze všech polynomů třídy m. Důkaz. Předpokládejme, že existuje polynom Qm m, který má na intervalu [-1, 1] menší absolutní hodnotu než polynom Tm. Uvažujme polynom Rm-1(x) = Tm(x) - Qm(x). Je zřejmě Rm-1 m-1 a v bodech xk = cos(k/m), k = 0, 1, . . . , m platí sign Tm(xk) - Qm(xk) = sign 21-m (-1)k - Qm(xk) = (-1)k neboť podle předpokladu | Tm(xk)| = 21-m , |Qm(xk)| < 21-m . Polynom Rm-1 mění tedy znaménko mezi body xk, xk+1, k = 0, 1, . . . m - 1. Odtud plyne, že tento polynom stupně m - 1 má m různých kořenů. Dospěli jsme ke sporu. Předpokládejme nyní, že existuje polynom Qm s maximální absolutní hodnotou rovnou maximální absolutní hodnotě polynomu Tm. Není-li aspoň v jednom bodě, ve kterém nabývá polynom Tm extrému, polynom Qm roven polynomu Tm, dostaneme spor jako výše. Je-li však v takovém bodě Qm(x) = Tm(x), má polynom Rm-1 v tomto bodě dvojnásobný kořen a určíme-li počet kořenů polynomu Rm-1 jako výše, dojdeme opět ke sporu, který dokončuje důkaz věty (viz [19]). 2 Definice 6.3. Polynomy Tm se nazývají Čebyševovy polynomy. Jestliže se při interpolaci omezíme na interval [-1, 1] a za uzly interpolace zvolíme kořeny Čebyševova polynomu,n+1(x) = 2-n Tn+1(x), můžeme najít odhad chyby ve tvaru |f(x) - Pn(x)| Mn+1 (n + 1)!2n , (6.21) neboť max x[-1,1] |n+1(x)| = 2-n . Chyba je v tomto případě nejmenší možná. Při interpolaci na libovolném intervalu [a, b] užijeme lineární transformaci x = 1 2 ((b - a)z + b + a), z [-1, 1] . 170 6. INTERPOLACE Při této transformaci se kořeny zk, k = 0, 1, . . . , n, polynomu Tn+1 transformují na kořeny xk = 1 2 ((b - a)zk + b + a). Odhad chyby interpolace nyní bude |f(x) - Pn(x)| Mn+1 (n + 1)! (b - a)n+1 22n+1 . K dalším otázkám týkajících se chyby interpolace se vrátíme v další části této kapitoly. § 6.3. Interpolace na ekvidistantních uzlech Nyní předpokládejme, že body xi, i = 0, 1, . . ., n, jsou ekvidistantní, tj. existuje reálné číslo h = 0 takové, že xi = x0 + ih, i = 0, . . . , n. Číslo h obvykle nazýváme krok. Vypočteme pro Lagrangeův interpolační polynom Pn-1 n-1, který je interpolačním polynomem v uzlech x0, . . . , xn-1, fundamentální polynomy li: li(x) = n(x) (x - xi) n(xi) Počítejme hodnoty těchto polynomů v bodě xn: li(xn) = n(xn) (xn - xi) n(xi) = = (xn - x0) . . . (xn - xn-1) (xn - xi)(xi - x0) . . . (xi - xi-1)(xi - xi+1) . . . (xi - xn-1) Nyní je xn -xi = x0 +nh-(x0 +ih) = (n-i)h. Dosazením do předchozího vztahu dostaneme: li(xn) = n(n - 1) . . . (n - (n - 1)) (n - i)(i) . . . (i - (i - 1))(i - (i + 1)) . . . (i - (n - 1)) = = - n! i!(n - i)! (-1)n-i Odtud li(xn) = -(-1)n-i n i . Počítejme nyní rozdíl f(xn) - Pn-1(xn) = f(xn) + n-1 i=0 (-1)n-i n i f(xi). § 6.3. Interpolace na ekvidistantních uzlech 171 Hodnotu f(xn) lze zahrnout do součtu s koeficientem (-1)n-n n n = 1 a výsledkem je f(xn) - Pn-1(xn) = n i=0 (-1)n-i n i fi. (6.22) Definice 6.4. Výraz n fj = n i=0 (-1)n-i n i fi+j (6.23) se nazývá n-tá obyčejná diference v bodě xj. Např.: 1 f0 = -f(x0) + f(x0 + h) = -f0 + f1 2 f0 = f(x0) - 2f(x0 + h) + f(x0 + 2h) = f0 - 2f1 + f2 3 f0 = -f0 + 3f1 - 3f2 + f3 atd. Obdobným způsobem jako pro poměrné diference lze i pro obyčejné diference dokázat rekurentní vztah: k+1 fi = k fi = k fi+1 - k fi. (6.24) Lemma. Na ekvidistantní množině uzlů {xi}n i=0 platí f[x0, . . . , xn] = n f0 n! hn . (6.25) Důkaz lze provést matematickou indukcí -- viz cvičení. Některé další vlastnosti poměrných a obyčejných diferencí lze nalézt např. v [23]. Věta 6.6. Nechť uzly xi, i = 0, 1, . . . , n jsou ekvidistantní, xi = x0 + ih, h > 0. Pak Newtonův interpolační polynom lze zapsat ve tvaru Pn(x0 + th) = f0 + n j=1 j f0 j! t(t - 1) . . . (t - j + 1), (6.26) kde x = x0 + th, t je nová proměnná, t R. Důkaz. Bod x, ve kterém počítáme hodnotu interpolačního polynomu, vyjádříme pomocí kroku h, x = x0 + th, t je nová proměnná. Nyní x - xi = x0 + th - (x0 + ih) = (t - i)h. 172 6. INTERPOLACE Víme, že Newtonův polynom je tvaru Pn(x) = f0 + f[x0, x1](x - x0) + . . . + (x - x0) . . . (x - xn-1)f[x0, . . . , xn]. Užitím vztahu (6.25) upravíme j-tý člen tohoto polynomu: (x - x0) . . . (x - xj-1)f[x0, . . . , xj] = (x - x0) . . . (x - xj-1) j f0 j! hj a dále, v důsledku toho, že x - xi = (t - i)h, dostaneme (x - x0) . . . (x - xj-1)f[x0, . . . , xj] = t . . . (t - j + 1) j! j f0 a odtud plyne (6.26). 2 Obdobným způsobem jako větu 6.6 lze dokázat následující větu 6.7. Věta 6.7. Nechť uzly xi, i = 0, 1, . . . , n, jsou ekvidistantní, xi = x0 + ih, h > 0. Pak Newtonův interpolační polynom lze zapsat ve tvaru Pn(xn + sh) = fn + n j=1 j fn-j j! s(s + 1) . . . (s + j - 1), (6.27) kde x = xn + sh, s R. Důkaz. V tomto případě se bod x vyjádří pomocí bodu xn: x = xn + sh, s R je nová proměnná a interpolační polynom sestrojíme v bodech xn, . . . , x0, xn-j = xn - jh, tj. Pn(x) = fn + (x - xn)f[xn, xn-1] + . . . + (x - xn) . . . (x - x1)f[xn, . . . , x0]. 2 Definice 6.5. Formule (6.26) se nazývá Newtonův interpolační polynom pro interpolaci vpřed. Formule (6.27) se nazývá Newtonův interpolační polynom pro interpolaci vzad. Schematicky lze znázornit použití formulí vpřed a vzad takto: x0 x1 x2 x3 ... xn-2 xn-1 xn f0 f1 f2 f3 ... fn-2 fn-1 fn f0 f1 f2 ... fn-2 fn-1 2 f0 2 f1 ... 2 fn-3 2 fn-2 z $$ $$ $$ $$ $$ $$ $$ $$X n f0 § 6.3. Interpolace na ekvidistantních uzlech 173 Diference označené se používají pro formuli vpřed, diference se používají pro formuli vzad. Poznámka 5. Z poněkud modifikované tabulky diferencí tzv. Fraserova diagramu lze odvodit celou řadu užitečných interpolačních formulí. Tento diagram lze najít např. v [19]. Zmíníme se nyní o minimalizaci chyby v případě, že uzly jsou ekvidistantní. Zřejmě má na velikost chyby rozhodující vliv chování funkce n+1. Užitím substituce x = x0 + th lze funkci n+1 vyjádřit ve tvaru n+1(x) = n+1(x0 + th) = hn+1 t(t - 1) . . . (t - n), t R. Nyní budeme vyšetřovat chování funkce (t) = t(t - 1) . . . (t - n). (6.28) pro t [0, n]. Nejdříve si všimněme, že funkce je lichá nebo sudá (v závislosti na n) vzhledem k bodu (n 2 , 0). Tento fakt plyne ze vztahu (t) = (-1)n+1 (n - t), tedy je sudá, je-li n liché, a lichá, je-li n sudé. Dále (t + 1) = (t + 1)t(t - 1) . . . (t + 1 - n) = t + 1 t - n (t). Odtud plyne, že na intervalu [i, i+1], i = 0, . . . , n-1, lze hodnoty funkce získat pomocí hodnot funkce na intervalu [i-1, i] vynásobených faktorem (t+1)/(t-n). Ovšem tento faktor je vždy záporný pro t < n. To znamená, že znaménka funkce se budou střídat při přechodu z jednoho intervalu na interval následující. Navíc t + 1 t - n < 1 pro t [0, n-1 2 ). Tedy, extremální hodnoty funkce na jednotlivých intervalech [i, i+1] budou v absolutní hodnotě klesat až do středu intervalu [0, n], a pak v důsledku symetrie opět porostou. Vně intervalu [0, n] funkce v absolutní hodnotě velmi rychle roste. Tato skutečnost je ilustrována na následujících dvou případech -- obr. 6.3 a 6.4 ilustrují průběh funkcí 4 a 5. Z uvedených poznatků plyne následující závěr: Veličina | n+1(x)| bude minimální, a tedy i chyba interpolace bude minimální, jestliže pro interpolaci v bodě x vybereme n + 1 uzlů nejbližších bodu x. V případě, že bod x leží na začátku tabulky, je vhodné užít Newtonovu interpolační formuli vpřed, leží-li bod x blízko konce tabulky, je vhodná Newtonova interpolační formule vzad. Pro hodnoty x ležící vně intervalu [x0, xn] lze očekávat značnou chybu interpolace. V tomto případě hovoříme o extrapolaci. Příklad 6.4. V následující tabulce jsou dány hodnoty Besselovy funkce 1. druhu řádu nula. Aproximujte hodnotu této funkce v bodě x = 1,5. Užijte Lagrangeových polynomů různých stupňů a porovnejte výsledky s přesnou hodnotou. 174 6. INTERPOLACE 2 4 6 8 10 12 14 -250 -200 -150 -100 -50 0 50 100 150 x y x0 x1 x2 x3 Obr. 6.3: Polynom 4(x) = (x - 2)(x - 6)(x - 10)(x - 14) 2 4 6 8 10 12 14 -1000 -800 -600 -400 -200 0 200 400 600 800 1000 x y x 0 x 1 x 2 x 3 x 4 Obr. 6.4: Polynom 5(x) = (x - 2)(x - 5)(x - 8)(x - 11)(x - 14) § 6.3. Interpolace na ekvidistantních uzlech 175 xi 1,0 1,3 1,6 1,9 2,2 f(xi) 0,7651977 0,6200860 0,4554022 0,2818186 0,1103623 Řešení: a) Lineární interpolace: bod x = 1,5 leží mezi x1 = 1,3 a x2 = 1,6, zvolíme za uzly interpolace 1,3; 1,6. P1(1,5) = (1,5 - 1,6) (1,3 - 1,6) 0,6200860 + 1,5 - 1,6 1,6 - 1,3 0,4554022 = 0,5102968 b) Pro aproximaci polynomem druhého stupně zvolíme uzly 1,6; 1,3; 1,9. Dostaneme přibližnou hodnotu P2(1,5) = 0,5112857. c) Pro polynom třetího stupně zvolíme uzly 1,6; 1,3; 1,9; 1,0 a dostaneme hod- notu P3(1,5) = 0,5118127. d) Pro polynom čtvrtého stupně užijeme všech uzlů a výsledná hodnota je P4(1,5) = 0,5118200. e) Pro polynom prvního stupně užijeme nyní uzlů x0 = 1, x1 = 1,3. Je P1(1,5) = 1,17752595. f) Pro polynom druhého stupně užijeme nyní uzlů x0 = 1,6, x1 = 1,9, x2 = 2,2. Je P2(1,5) = 1,73385945. Porovnáme vypočtené hodnoty s přesnou hodnotou f(1,5) = 0,5118277: a) |P1(1,5) - f(1,5)| 1,53.10-3 b) |P2(1,5) - f(1,5)| 5,42.10-4 c) |P3(1,5) - f(1,5)| 1,5.10-5 d) |P4(1,5) - f(1,5)| 7,7.10-6 e) |P1(1,5) - f(1,5)| 6,6.10-1 f) |P2(1,5) - f(1,5)| 1,22 Je jasné, že v případech e), f) je chyba (vzhledem k extrapolaci) podstatně větší. Přenecháváme čtenáři, aby se pokusil navrhnout algoritmus pro konstrukci takové posloupnosti polynomů. Nelze však očekávat, že ve všech případech se bude s rostoucím počtem uzlů zvyšovat také přesnost aproximace (viz odstavec 6.4). 176 6. INTERPOLACE Na závěr tohoto odstavce ukážeme zajímavý příklad použití interpolačního polynomu. Příklad 6.5. Dokažte, že platí n-1 k=0 (-1)k n - k n n + m k = (-1)n-1 (n + m - 2)! (m - 1)! n! . Řešení: Nechť f(x) = (n - x)(n - 1 - x) . . . (2 - x) n! a sestrojme interpolační polynom Pn-1 stupně n - 1 pro ekvidistantní uzly dané hodnotami x0 = 0, h = 1: Pn-1(x) = n-1 k=0 k f0 hk (x - x0)(x - x0 - h) . . . (x - x0 - (k - 1)h) k! = = n-1 k=0 k f0 x(x - 1) . . . (x - (k - 1)) k! . Platí Pn-1(x0) = Pn-1(0) = f(0) = 1, Pn-1(x0 + h) = Pn-1(1) = f(1) = 1 n a dále Pn-1(x0 + kh) = Pn-1(k) = f(k) = 0, pro k = 2, . . . , n - 1 . Odtud k f0 = k r=0 (-1)k-r k r f(x0 + rh) = (-1)k n - k n , a protože funkce f je polynomem stupně n - 1, musí být totožná s polynomem Pn-1, tedy (n - x)(n - 1 - x) . . . (2 - x) n! = n-1 k=0 (-1)k n - k n x(x - 1) . . . (x - (k - 1)) k! . Pro x = n + m dostaneme požadovanou formuli n-1 k=0 (-1)k n - k n n + m k = (-1)n-1 (n + m - 2)! (m - 1)! n! , nebo další transformací (výměnou role n a m a položíme-li i = m - k) m i=1 (-1)m-1 i m n + m n + i = (-1)m-1 (n + m - 2)! (n - 1)! m! . § 6.4. Obecný interpolační proces 177 § 6.4. Obecný interpolační proces Uvažujme nyní následující problém: V intervalu [a, b] vybereme uzly tvořící nekonečnou trojúhelníkovou matici: x (0) 0 x (1) 0 x (1) 1 x (2) 0 x (2) 1 x (2) 2 ... ... ... ... x (n) 0 x (n) 1 x (n) 2 x (n) n ... ... ... ... (6.29) Pro danou funkci sestrojíme posloupnost Lagrangeových interpolačních polynomů Pn tak, že k sestrojení Pn užijeme (n + 1)-ho řádku matice (6.29), tj. Pn(x (n) i ) = f(x (n) i ), i = 0, 1, . . . , n. Ptáme se: Bude posloupnost {Pn} konvergovat stejnoměrně k funkci f na intervalu [a, b]? Dá se ukázat, že pro každou matici (6.29) existuje třída funkcí, pro niž platí stejnoměrná konvergence, ale tato třída je podstatně užší než C[a, b]. Věta 6.8. (G. Fáber). Pro každou matici (6.29) existuje spojitá funkce, pro kterou příslušná posloupnost interpolačních polynomů nekonverguje stejnoměrně k f na intervalu [a, b]. Důkaz je uveden v [16]. Ve Fáberově větě se mluví o neexistenci stejnoměrné konvergence posloupností Pn k f. Není ale vyloučeno, že v některých bodech konvergují polynomy Pn k funkci f. Následující příklad ilustruje možnost divergence interpolačního procesu v jednotlivých bodech. Věta 6.9. (S. N. Bernštejn). Interpolační polynom Pn sestrojený pro funkci |x| na ekvidistantní množině uzlů intervalu [-1, 1] (tak, že x0 = -1, xn = 1) nekonverguje s rostoucím n k |x| ani v jednom bodě intervalu [-1, 1] různém od bodů -1, 0, 1. Důkaz je opět uveden v [16], příklad je ilustrován na obr. 6.5. Zajímavý příklad -- příklad Rungeho -- je uveden v [8]. Tento příklad se týká interpolace funkce f(x) = 1/(1+x2 ), x [-4, 4], a interpolační proces je ilustrován na obr. 6.6. Na druhé straně platí: Věta 6.10. (I. Marcinkiewicz). Pro každou spojitou funkci f existuje taková matice (6.29), že odpovídající posloupnost interpolačních polynomů konverguje stejnoměrně k funkci f na intervalu [a, b]. 178 6. INTERPOLACE -1 -0.5 0 0.5 1 0 0.2 0.4 0.6 0.8 1 1.2 - - - P8 - - P16 Obr. 6.5: Interpolační polynomy pro f(x) = |x| na ekvidistantních uzlech -4 -3 -2 -1 0 1 2 3 4 -1.5 -1 -0.5 0 0.5 1 1.5 - - - P 8 - - P16 Obr. 6.6: Interpolační polynomy pro f(x) = 1/(1 + x2) na ekvidistantních uzlech § 6.5. Iterovaná interpolace 179 Důkaz lze opět nalézt v [16], kde je obecnému interpolačnímu procesu věnována značná pozornost. Poznámka 6. Zvolíme-li v předchozích příkladech za uzly kořeny Čebyševových polynomů definovaných vztahem (6.18), dostaneme konvergentní proces. Chování posloupností odpovídajících interpolačních polynomů je zřejmé z obr. 6.7, 6.8. -1.1 1.1 0 0.2 0.4 0.6 0.8 1 x y x0 x1 x2 x3 x4 x5 x6 x7 x8 Obr. 6.7: Interpolační polynom P8 8 pro f(x) = |x| na Čebyševových uzlech § 6.5. Iterovaná interpolace Interpolační problém nemusíme řešit ihned jako celek pro všechny dané uzly, ale můžeme začít s menším počtem uzlů a postupně zkonstruovat celý interpolační polynom. Tímto problémem se budeme nyní zabývat. Pro danou množinu bodů {(xi, fi); i = 0, 1, . . ., n}, označme Pi0i1...ik k, k n takový polynom, pro který Pi0i1...ik (xij ) = fij , j = 0, 1, . . . , k. Lemma. Platí Pij (x) = fij , j = 0, 1, . . . , k, (6.30) Pi0...ik (x) = 1 xik - xi0 Pi1...ik (x) x - xik Pi0...ik-1 (x) x - xi0 . (6.31) Tento postup nazýváme iterovanou interpolací. 180 6. INTERPOLACE -1.5 -1 -0.5 0 0.5 1 1.5 y x0 x1 x2 x3 x4 x5 x6 x7 x8 Obr. 6.8: Interpolační polynom P8 8 pro f(x) = 1/(1 + x2) na Čebyševových uzlech Důkaz. Vztah (6.30) je zřejmý. Abychom dokázali (6.31), označíme pravou stranu R(x) a ukážeme, že má charakteristické vlastnosti interpolačního polynomu. Zřejmě R je polynom stupně nejvýše k. Podle definice Pi0...ik-1 , Pi1...ik je R(xi0 ) = Pi0...ik-1 (xi0 ) = fi0 , R(xik ) = Pi1...ik (xik ) = fik , R(xij ) = (xij - xi0 )fij - (xij - xik )fij xik - xi0 = fij pro j = 1, . . . , k - 1. Tedy R Pi0...ik , což plyne z jednoznačnosti interpolačního polynomu v daném bodě x. 2 Podle vzorce (6.31) lze výpočet uspořádat například takto: k = 0 1 2 3 x0 f0 = P0(x) x1 f1 = P1(x) P01(x) x2 f2 = P2(x) P12(x) P012(x) x3 f3 = P3(x) P23(x) P123(x) P0123(x) ... ... ... ... ... (6.32) První sloupec tabulky obsahuje předepsané hodnoty fi. Hodnoty v dalších sloupcích počítáme podle vztahu (6.31). Je například P012(x) = (x - x0)P12 - (x - x2)P01 x2 - x0 . § 6.5. Iterovaná interpolace 181 Uvedený algoritmus (6.32) se nazývá Nevillův algoritmus. Příklad 6.6. Je dána tabulka hodnot funkce f. Užijte Nevillova schematu pro výpočet f(1). xi fi Pi,i+1 Pi,i+1,i+2 Pi,i+1,i+2,i+3 0 1 2 3 2 3 2 4 8/3 5 5 -1 17/3 49/15 To znamená, že f(1) 49/15. Pro snazší použití na počítači zaveďme následující označení. Položme Ti,j = Pi-j,i-j+1,...,i-1,i. Rekurentní vztahy (6.31) můžeme nyní zapsat takto Ti,j(x) = (x - xi-j)Ti,j-1(x) - (x - xi)Ti-1,j-1(x) xi - xi-j j = 1, 2, 3, . . . i = j, j + 1, . . . Ti0 = fi, i = 0, 1, . . . , n a pak Tnn = P01...n. Příslušná tabulka je tvaru k = 0 1 2 3 x0 f0 = T00 x1 f1 = T10 T11 x2 f2 = T20 T21 T22 x3 f3 = T30 T31 T32 T33 ... ... ... ... ... (6.33) Jako kriteria pro zastavení výpočtu lze užít nerovnosti |Ti,i - Ti-1,i-1| < , kde je předepsaná přesnost. Jestliže tato nerovnost není splněna, přidá se další uzel xi+1. 182 6. INTERPOLACE Závěrem tohoto odstavce připomeňme Aitkenův algoritmus ([11]). Ten je rovněž založen na vztazích (6.30), (6.31), ale používá jiných polynomů během výpočtu. Tabulka je následující: k = 0 1 2 3 x0 f0 = P0 x1 f1 = P1 P01 x2 f2 = P2 P02 P012 x3 f3 = P3 P03 P013 P0123 ... ... ... ... ... Příklad 6.7. Pro tabulku hodnot z příkladu 6.6 vypočtěte f(1) pomocí Aitkenova schematu. xi fi P0i P01i P012i 0 1 2 3 2 3 2 4/3 8/3 5 5 9/5 31/15 49/15 Tedy f(1) 49/15. Obě schemata dávají tentýž výsledek, neboť se jedná o užití interpolačního polynomu v uzlech x0 = 0, x1 = 2, x2 = 3, x3 = 5. § 6.6. Inverzní interpolace Nyní ukážeme, jak lze užít interpolace k nalezení přibližného kořene funkce. Tento proces budeme nazývat inverzní interpolací. Předpokládejme, že funkce f, f jsou spojité v [a, b], f (x) = 0 v [a, b] a nechť je kořen funkce f ležící v intervalu [a, b]. Nechť xi [a, b], i = 0, 1, . . . , n, xi = xk pro i = k a nechť f(xi) = yi, i = 0, 1, . . . , n. Naším úkolem je najít přibližnou hodnotu kořene . Budeme postupovat takto: Sestrojíme interpolační polynom Pn(y) pro funkci f-1 (y) v bodech (yi, xi), xi = f-1 (yi), i = 0, 1, . . . , n, tj. Pn(yi) = f-1 (yi), i = 0, 1, . . ., n. Protože 0 = f(), je = f-1 (0) a za přibližnou hodnotu kořene lze vzít číslo Pn(0). Pro výpočet lze s výhodou užít iterované interpolace. § 6.7. Sestavování tabulek Nyní se zabývejme následujícím úkolem: Je třeba sestavit tabulku hodnot nějaké funkce tak, aby chyba při interpolaci hodnot funkce polynomem daného stupně m § 6.8. Hermitova interpolace 183 nepřevýšila . V takovém případě říkáme, že tabulka připouští interpolaci stupně m. Tabulky, se kterými se většinou setkáváme, připouštějí lineární interpolaci. Budeme se zabývat tabulkami s ekvidistantními uzly. Otázka tedy je: Jak zvolit krok h, aby při lineární interpolaci byla chyba menší než ? Nechť x je bod, ve kterém máme spočítat přibližnou hodnotu. Položme x0 < x < x1 a f aproximujeme interpolačním polynomem f(x) = P1(x) + E(x), substituce x = x0 + th, t (0, 1) je nová proměnná, vede ke vztahu f(x0 + th) = P1(x0 + th) + h2 t(t - 1) 2 f (). Protože |t(t - 1)| 1 4 , musí pro krok h platit h2 max |f (x)| 8. Příklad 6.8. Nechť je třeba sestavit tabulku funkce sin x na intervalu [0, 2 ] tak, aby chyba lineární interpolace byla menší než 0,5.10-6 . Řešení. Je f(x) = sin x |f (x)| 1. Z předchozího plyne h2 4.10-6 , h 2.10-3 . Přenecháváme čtenáři posoudit otázku přípustnosti kvadratické interpolace. § 6.8. Hermitova interpolace Obecně lze předepsat hledanému polynomu nejen funkční hodnoty, ale také hodnoty derivací. Přesněji: Jsou dána reálná čísla xi, i = 0, 1, . . ., m, xi = xk pro i = k, f (k) i , k = 0, 1, . . . , ni - 1, přičemž m i=0 ni = n + 1. (6.34) Hermitův interpolační problém spočívá v tom, že je třeba najít polynom Pn n takový, že P(k) n (xi) = f (k) i , i = 0, 1, . . . , m; k = 0, 1, . . ., ni - 1. (6.35) V každém uzlu xi je tedy předepsána nejen funkční hodnota, ale také hodnoty prvních (ni - 1) derivací. 184 6. INTERPOLACE Věta 6.11. Pro daná reálná čísla xi, i = 0, 1, . . ., m, xi = xk pro i = k, a hodnoty f (k) i , k = 0, 1, . . . , ni - 1, existuje právě jeden polynom Pn n, m i=0 ni = n + 1, takový, že jsou splněny podmínky (6.35). Obecný důkaz nebudeme provádět, ale uvedeme nyní konstrukci Hermitova interpolačního polynomu v jednodušším případě, kdy v každém uzlu xi, i = 0, 1, . . . , m, předepíšeme funkční hodnotu fi a hodnotu první derivace f i. Je tedy třeba najít polynom Pn n, 2m + 1 = n, takový, že P2m+1(xi) = fi, i = 0, 1, . . . , m P 2m+1(xi) = f i, i = 0, 1, . . . , m (6.36) Polynom P2m+1 budeme hledat ve tvaru P2m+1(x) = m i=0 hi(x)fi + m i=0 hi(x)f i , kde hi, hi jsou polynomy stupně 2m + 1 pro m > 0. Polynomy hi, hi je třeba vybrat tak, aby byly splněny podmínky (6.36), tj. hi(xj) = ij, i, j = 0, 1, . . . , m h i(xj) = 0, i, j = 0, 1, . . . , m (6.37) hi(xj) = 0, i, j = 0, 1, . . . , m h i(xj) = ij, i, j = 0, 1, . . . , m , (6.38) kde ij = 0 pro i = j, ij = 1 pro i = j (Kroneckerův symbol). Sestrojme nejdříve polynomy hi: Polynom hi je polynom stupně 2m+1, který má podle (6.37) kořeny x0, . . ., xi-1, xi+1, . . ., xm, přičemž jsou všechny tyto kořeny dvojnásobné, tj. 2m kořenů. Protože hi je polynom stupně 2m + 1, plyne odtud, že je tvaru hi(x) = ti(x)(x - x0)2 . . . (x - xi-1)2 (x - xi+1)2 . . . (x - xm)2 , kde ti je polynom stupně prvního. Bez újmy na obecnosti lze psát hi(x) = ui(x) (x - x0)2 . . . (x - xi-1)2 (x - xi+1)2 . . . (x - xm)2 (xi - x0)2 . . . (xi - xi-1)2(xi - xi+1)2 . . . (xi - xm)2 = = ui(x)l2 i (x), kde li je fundamentální polynom odvozený při konstrukci Lagrangeova interpolačního polynomu a ui je lineární polynom: ui(x) = aix + bi, i = 0, 1, . . . , m. § 6.8. Hermitova interpolace 185 Koeficienty ai, bi určíme z podmínek hi(xi) = 1, h i(xi) = 0, tj. ui(xi)l2 i (xi) = 1 ui(xi) = 1, u i(x)l2 i (x) + 2ui(x)li(x)l i(x) = 0 u i(xi) + 2ui(xi)l i(xi) = 0. Odtud ai = -2l i(xi), bi = 1 + 2xil i(xi), polynom ui je tvaru ui(x) = 1 - 2(x - xi)l i(xi), i = 0, 1, . . . , m a hledaný polynom hi: hi(x) = (1 - 2(x - xi)l i(xi)) l2 i (x), i = 0, 1, . . . , m . (6.39) Obdobně sestrojíme polynomy hi: hi je polynom stupně 2m + 1 a má podle (6.38) kořeny x0, x1, . . . , xm, přičemž kořeny x0, x1, . . . , xi-1, xi+1, . . . , xm jsou dvojnásobné, tj. celkem 2m + 1 kořenů. Předpokládaný tvar polynomu hi je hi(x) = Ai(x - xi)(x - x0)2 . . . (x - xi-1)2 (x - xi+1)2 . . . (x - xm)2 , což lze opět bez újmy na obecnosti zapsat ve tvaru hi(x) = Bi(x - xi)l2 i (x) a hodnotu Bi určíme tak, aby h i(xi) = 1, tj. Bi = 1. Polynomy hi jsou tvaru hi(x) = (x - xi)l2 i (x), i = 0, 1, . . ., m. (6.40) Hermitův polynom pro dané hodnoty (6.36) má tvar P2m+1(x) = m i=0 hi(x)fi + m i=0 hi(x)f i s polynomy hi, hi danými vztahy (6.39), (6.40). Poznámka 7. Pro m = 0 dostáváme nejjednodušší Hermitův polynom, který je prvního stupně a je daný vztahem P1(x) = f(a) + (x - a)f (a) . Pro určení tohoto polynomu potřebujeme dvě podmínky ­ hodnotu funkce a derivace v daném bodě. 186 6. INTERPOLACE Příklad 6.9. Najděte Hermitův interpolační polynom, je-li dáno xi 0 1 4 fi 2 5 1 f i 1 -1 2 Polynomy li jsou tvaru l0(x) = 1 4 (x - 1)(x - 4), l1(x) = -1 3 x(x - 4), l2(x) = 1 12 x(x - 1) Podle (6.39), (6.40) dostaneme pro hi a hi h0(x) = 1 32 (x - 1)2 (x - 4)2 (2 + 5x), h0(x) = 1 16 x(x - 1)2 (x - 4)2 h1(x) = 1 27 x2 (x - 4)2 (7 - 4x), h1(x) = 1 9 x2 (x - 1)(x - 4)2 h2(x) = 1 864 x2 (x - 1)2 (34 - 7x), h2(x) = 1 144 (x - 4)x2 (x - 1)2 Hledaný polynom P5 5 je tvaru P5(x) = 1 16 (x - 1)2 (x - 4)2 (2 + 5x) + 5 27 x2 (x - 4)2 (7 - 4x) + + 1 864 x2 (x - 1)2 (34 - 7x) + 1 16 x(x - 1)2 (x - 4)2 - 1 9 (x - 1)x2 (x - 4)2 + 1 72 (x - 4)x2 (x - 1)2 . Příklad 6.10. Pro funkci f(x) = x+sin x sestrojte Hermitův interpolační polynom splňující v uzlech x0 = 5,5, x1 = 12,5, x2 = 3 podmínky (6.36). Je zřejmé, že P5 5. Na obr. 6.9 jsou grafy polynomů hi, hi, i = 0, 1, 2, obr. 6.10 znázorňuje graf funkce f (plná čára) a graf příslušného polynomu P5 (čárkovaně). Chyba interpolace pro Hermitův interpolační polynom může být odvozena stejným způsobem jako při Lagrangeově interpolaci. Odpovídající větu lze formulovat takto: Věta 6.12. Nechť funkce f je (n+1)-krát diferencovatelná v intervalu [a, b] a nechť jsou dány body xi [a, b], i = 0, 1, . . . , m, xi = xk pro i = k. Jestliže polynom Pn n, m i=0 ni = n + 1, splňuje interpolační podmínky P(k) n (xi) = f(k) (xi), k = 0, 1, . . . , ni - 1; i = 0, 1, . . . , m, pak ke každému x [a, b] existuje (a, b) tak, že f(x) - Pn(x) = n+1(x) (n + 1)! f(n+1) (), = (x), (6.41) § 6.8. Hermitova interpolace 187 2 14 -1.5 -1 -0.5 0 0.5 1 1.5 x0 x1 x2 2 14 0 0.2 0.4 0.6 0.8 1 x0 x1 x2 Fundamentální polynom h0(x) Fundamentální polynom h1(x) 2 14 -1 0 1 2 3 4 5 6 x0 x1 x22 14 0 0.5 1 1.5 2 x 0 x 1 x 2 Fundamentální polynom h2(x) Fundamentální polynom h0(x) 2 14 -1 -0.5 0 0.5 1 1.5 2 x 0 x 1 x 22 14 -1 -0.5 0 0.5 1 x 0 x 1 x 2 Fundamentální polynom h1(x) Fundamentální polynom h2(x) Obr. 6.9: Fundamentální polynomy hi, hi 188 6. INTERPOLACE 2 4 6 8 10 12 14 4 6 8 10 12 14 x y x0 x1 x2 Obr. 6.10: Hermitův interpolační polynom P5 5 pro funkci f(x) = x + sin x kde n+1(x) = (x - x0)n0 . . . (x - xm)nm . Poznámka 8. Odvození tvaru Hermitova interpolačního polynomu v obecném případě lze najít např. v [2], [19]. Pro konstrukci Hermitova interpolačního polynomu lze také s výhodou užít Lagrangeova polynomu. Postup je následující: Zapišme Hermitův polynom Pn n pro hodnoty (6.35) ve tvaru Pn(x) = Pm(x) + m+1(x)Hn-m-1(x), kde Pm m je Lagrangeův polynom pro hodnoty (xi, f (0) i ), i = 0, 1, . . . , m, m+1 = (x - x0) . . . (x - xm), Hn-m-1 n-m-1 je polynom stupně nejvýše n - m - 1 a určíme jej ze zbývajících (n - m) podmínek, tj. z podmínek P(k) n (xi) = f (k) i , k = 1, . . . , ni - 1, i = 0, 1, . . . , m. (6.42) Podmínkami (6.42) je polynom Hn-m-1 určen jednoznačně. Příklad 6.11. Najděte Hermitův interpolační polynom, je-li dáno: xi 0 1 2 fi 1 -1 0 f i 0 0 0 f i 0 Řešení: Budeme hledat polynom P6 6 ve tvaru P6(x) = P2(x) + 3(x)H3(x) , § 6.8. Hermitova interpolace 189 kde 3(x) = x(x - 1)(x - 2) a polynom H3 3, H3(x) = ax3 + bx2 + cx + d, sestrojíme tak, aby platilo P 6(0) = 0, P 6(1) = 0, P 6(2) = 0, P 6 (0) = 0. P2 je Lagrangeův interpolační polynom pro body (0, 1), (1, -1), (2, 0) a je zřejmě tvaru P2(x) = (3x - 1)(x - 2) 2 . Pak P6(x) = (3x - 1)(x - 2) 2 + x(x - 1)(x - 2)H3(x) . Počítejme první a druhou derivaci polynomu P6: P 6(x) = 6x - 7 2 + (3x2 - 6x + 2)H3(x) + x(x - 1)(x - 2)H 3(x) P 6 (x) = 3 + (6x - 6)H3(x) + 2(3x2 - 6x + 2)H 3(x) + x(x - 1)(x - 2)H 3 (x) Z interpolačních podmínek pro derivace nyní plyne: P 6(0) = 0 0 = - 7 2 + 2H3(0) P 6(1) = 0 0 = - 1 2 - H3(1) P 6(2) = 0 0 = 5 2 + 2H3(2) P 6 (0) = 0 0 = 3 + 4H 3(0) - 6H3(0) Odtud H3(0) = 7 4 d = 7 4 H3(1) = - 1 2 a + b + c + d = - 1 2 H3(2) = - 5 4 8a + 4b + 2c + d = - 5 4 -4H 3(0) + 6H3(0) = 3 -4c + 6d = 3 Vypočteme d = 7 4 c = 15 8 b = - 105 16 a = 39 16 , tedy H3(x) = 1 16 (39x3 - 105x2 + 30x + 28) . Výsledný Hermitův polynom je P6(x) = (2x - 1)(x - 2) 2 + 1 16 x(x - 1)(x - 2)(39x3 - 105x2 + 30x + 28) . 190 6. INTERPOLACE S Hermitovým interpolačním polynomem jsme se už vlastně setkali v matematické analýze. Připomeňme si Taylorův vzorec tvaru f(x) = f(a) + (x - a)f (a) + (x - a)2 2 f (a) + . . . . . . + (x - a)n n! f(n) (a) + (x - a)n+1 (n + 1)! f(n+1) (), kde leží v intervalu určeném body a, x, tj. f(x) = Pn(x) + (x - a)n+1 (n + 1)! f(n+1) () a Pn n je v podstatě Hermitův interpolační polynom v případě, že je dán pouze jeden uzel x0 = a a požadujeme v tomto uzlu rovnost derivací až do řádu n včetně. Z předchozích úvah plyne, že výpočet tvaru Hermitova interpolačního polynomu může být časově dosti náročný. Popíšeme alternativní postup založený na Newtonově tvaru interpolačního polynomu (viz např. [2]) Předpokládejme, že jsou dány hodnoty (xi, f(k) (xi)), i = 0, . . . , m, k = 0, . . . , ni- 1 a nechť m i=0 ni = n + 1. Předpokládejme dále, že f Cn+1 [a, b], xi [a, b], i = 0, . . . , m. Definujme poměrné diference s násobnými uzly vztahem f[xj, . . . , xj nj ] = f(nj -1) (xj) (nj - 1)! , j = 0, . . . , m a obecně f[x0, . . . , x0 n0 , x1, . . . , x1 n1 , . . . , xm, . . . , xm nm ] = = 1 xm - x0 f[x0, . . . , x0 n0-1 , x1, . . . , x1 n1 , . . . , xm, . . . , xm nm ]-f[x0, . . . , x0 n0 , x1, . . . , x1 n1 , . . . , xm, . . . , xm nm-1 ] . Sestavení tabulky diferencí. Sloupec 1: uzly interpolace, přičemž každý uzel opakujeme tolikrát, jaká je jeho násobnost, t.j. uzel xi ni-krát, i = 0, . . . , m. Sloupec 2: odpovídající funkční hodnoty f(0)(xi) , i = 0, . . . , m. Sloupec 3: poměrné diference, jsou-li sousední uzly různé, jinak první derivace § 6.8. Hermitova interpolace 191 Sloupec 4: opět poměrné diference, jsou-li sousední uzly různé, jinak druhé derivace dělené 2! ... Sloupec (n + 2) (poslední): poměrná diference f[x0, . . . , x0 n0 , . . . , xm, . . . , xm nm ] Tabulka poměrných diferencí. n0 x0 x0 x0 ... x0 f0 f0 f0 ... f0 3 3 f (x0) f (x0) ... 3 3 f (x0) 2! f (x0) 2! ¨¨ rr f (x0) 3! . . . n1 x1 x1 x1 ... x1 f1 f1 f1 ... f1 3 3 3 f[x0, x1] f (x1) f (x1) ... 3 3 f (x1)-f[x0,x1] x1-x0 f (x1) 2! 3 . . . n2 x2 ... x2 f2 ... f1 3 f[x2, x1] ... 3 f (x2)-f[x1,x2] x1-x0 3 . . . ... ... Nyní sestrojíme Newtonův interpolační polynom stejným způsobem jako dříve: Pn(x) = f(x0) + (x - x0)f (x0) + (x - x0)2 f (x0) 2 + . . . + + (x - x0)n0-1 f(n0-1) (x0) (n0 - 1)! + (x - x0)n0 f[x0, . . . , x0 n0 , x1] + + (x - x0)n0 (x - x1)f[x0, . . . , x0 n0 , x1, x1] + . . . + + (x - x0)n0 (x - x1)n1-1 f[x0, . . . , x0 n0 , x1, . . . , x1 n1 ] + . . . + + (x - x0)n0 (x - x1)n1 . . . (x - xm)nm-1 f[x0, . . . , x0 n0 , . . . , xm, . . . , xm nm ] . 192 6. INTERPOLACE Lze ukázat, že tento polynom splňuje interpolační podmínky pro Hermitův polynom, t.j. P(k) (xi) = f(k) (xi), i = 0, . . . , m, k = 0, . . . , ni - 1 a je tedy totožný s hledaným Hermitovým interpolačním polynomem. Poznámka 9. Pro výpočet hodnoty tohoto polynomu v daném bodě x lze také použít iterovanou interpolaci. Příklad 6.12. Sestrojte Hermitův interpolační polynom, je-li dáno: xi 0 1 2 fi 1 2 129 f i 0 7 448 f i 0 - 1344 Tabulka poměrných diferencí: xi 0 0 0 1 1 2 2 2 fi 1 1 1 2 2 129 129 129 3 3 3 3 3 3 3 0 0 1 7 127 448 448 3 3 3 3 3 3 0 1 6 120 321 672 3 3 3 3 3 1 5 57 201 351 3 3 3 3 4 27 72 150 3 3 3 11 23 39 3 3 6 8 3 1 P7(x) = 1 + 0(x - 0) + 0(x - 0)2 + 1(x - 0)3 + 4(x - 0)3 (x - 1) + + 11(x - 0)3 (x - 1)2 + 6(x - 0)3 (x - 1)2 (x - 2) + + 1(x - 0)3 (x - 1)2 (x - 2)2 = x7 + 1 . U Hermitovy interpolace se můžeme setkat s případy. kde v posloupnosti derivací zadaných v některém z uzlů jsou ,,mezery (lakunární interpolace). V těchto případech se může stát, že zadaná úloha nemá řešení, nebo má řešení více v závislosti na geometrické struktuře sítě uzlů interpolace a mezer v posloupnostech předepsaných hodnot. Zde uvedeme pouze ilustrační příklady, podrobněji se lze s problematikou lakunární interpolace seznámit například v přehledovém článku [10]. Jak lze snadno ověřit, úloha nalézt Hermitův interpolační polynom nemá řešení pro hodnoty: § 6.9. Interpolace pomocí splajnů 193 xi x0 x1 x2 fi f0 - f2 f i f 1 jestliže x1 = 1 2 (x0 + x2). Naopak úloha pro hodnoty xi x0 x1 x2 fi f0 - f2 f i f 1 f i f 1 má jediné řešení. § 6.9. Interpolace pomocí splajnů Dosud uvedené interpolační metody aproximují danou funkci jedním interpolačním polynomem na celém intervalu. Tento postup není vždy výhodný, neboť lokální chování aproximované funkce ovlivňuje v tomto případě celkové chování aproximující funkce. Tato skutečnost vedla na myšlenku aproximace původní funkce analytickými funkcemi po částech. Takovými funkcemi jsou například polynomiální splajny. Jejich nejdůležitějším reprezentantem jsou kubické splajnové polynomy.1 Definice 6.6. Nechť je dána funkce f definovaná v intervalu [a, b] a množina bodů, které nazýváme uzly, a = x0 < x1 < . . . < xn = b. Kubický interpolační splajn S C2 [a, b] pro funkci f vyhovuje následujícím podmínkám: a) S je kubickým polynomem Sj na subintervalu [xj, xj+1] pro každé j = 0, 1, . . ., n - 1; b) S(xj) = f(xj), j = 0, 1, . . ., n; c) Sj+1(xj+1) = Sj(xj+1), j = 0, 1, . . ., n - 2; d) S j+1(xj+1) = S j(xj+1), j = 0, 1, . . ., n - 2; e) S j+1(xj+1) = S j (xj+1), j = 0, 1, . . ., n - 2; Jelikož při této konstrukci existují dva volné parametry, je možné požadovat, aby byly splněny jedny z následujících podmínek: (i) S (x0) = S (xn) = 0, (ii) S (x0) = f (x0), S (xn) = f (xn), (f C1 [a, b]) (6.43) 1Termín splajn je fonetickým přepisem anglického slova ,,spline , které označuje zařízení na kreslení křivek. Jde o pružnou šablonu, která se vytvaruje do žádaného tvaru; v některých bodech se upevní závaží. 194 6. INTERPOLACE Splňuje-li kubický interpolační splajn S podmínku (i), nazývá se přirozený splajn, v případě podmínky (ii) jde o úplný splajn. Poznámka 10. Je zřejmé, že podmínky b)­e) zaručují, že S C2 [a, b]. Nyní uvedeme konstrukci kubického interpolačního splajnu S. Kubické polynomy na intervalech [xj, xj+1], j = 0, 1, . . ., n - 1, uvažujme ve tvaru Sj(x) = aj + bj(x - xj) + cj(x - xj)2 + dj(x - xj)3 Je jasné, že Sj(xj) = aj = f(xj). Z podmínky c) dále plyne aj+1 = Sj+1(xj+1) = Sj(xj+1) = = aj + bj(xj+1 - xj) + cj(xj+1 - xj)2 + dj(xj+1 - xj)3 , j = 0, 1, . . . , n - 2. Zaveďme nyní označení hj = xj+1 - xj, j = 0, 1, . . . , n - 1. Dále položme an = f(xn). Z předchozího vztahu nyní plyne, že aj+1 = aj + bjhj + cjh2 j + djh3 j , j = 0, 1, . . . , n - 1. (6.44) Definujme obdobně bn = S (xn). Nyní S j(x) = bj + 2cj(x - xj) + 3dj(x - xj)2 a odtud S j(xj) = bj, j = 0, 1, . . ., n - 1. Aplikací podmínky d) dostaneme bj+1 = bj + 2cjhj + 3djh2 j , j = 0, 1, . . . , n - 1. (6.45) Položme nyní cn = S (xn)/2 a aplikujme podmínku e). V tomto případě jsou výsledkem vztahy cj+1 = cj + 3djhj, j = 0, 1, . . ., n - 1. (6.46) Nyní je naším úkolem určit koeficienty bj, cj, dj, j = 0, 1, . . ., n. Užitím vztahů (6.44), (6.45), (6.46) sestavíme systém rovnic pro neznámé koeficienty cj. Nyní popíšeme tento postup. Z rovnice (6.46) vypočítáme dj a dosadíme do rovnic (6.44) a (6.45) a dostaneme nové rovnice aj+1 = aj + bjhj + h2 j 3 (2cj + cj+1), j = 0, 1, . . ., n - 1 (6.47) a bj+1 = bj + hj(cj + cj+1), j = 0, 1, . . ., n - 1. (6.48) § 6.9. Interpolace pomocí splajnů 195 Vyřešíme rovnici (6.47) nejdříve pro bj: bj = 1 hj (aj+1 - aj) - hj 3 (2cj + cj+1) (6.49) a pak zmenšíme index j o jedničku: bj-1 = 1 hj-1 (aj - aj-1) - hj-1 3 (2cj-1 + cj) (6.50) Nyní dosadíme vyjádření (6.49) a (6.50) pro bj a bj-1 do rovnice (6.48) (kde jsme snížili index o 1): hj-1cj-1 + 2(hj-1 + hj)cj + hjcj+1 = = 3 hj (aj+1 - aj) - 3 hj-1 (aj - aj-1), j = 1, 2, . . . , n - 1. (6.51) Systém (6.51) je systém lineárních rovnic pro neznámé koeficienty cj, j = 0, . . . , n. Známe-li cj, spočítáme ze vztahu (6.49) koeficienty bj a ze vztahu (6.46) koeficienty dj. Otázkou zůstává, zdali je soustava (6.51) řešitelná a jestliže ano, zda je řešení jediné. Odpověď na tuto otázku pro přirozené splajny dává následující věta. Věta 6.13. Nechť f je funkce definovaná na intervalu [a, b]. Pak f má jediný přirozený kubický interpolační splajn splňující podmínky S (a) = S (b) = 0. Důkaz. Nechť {xi}, i = 0, . . . , n, je dělení intervalu [a, b]: a = x0 < x1 . . . < xn = b. Okrajové podmínky (i) implikují, že cn = S (xn)/2 = 0, 0 = S (x0) = 2c0 + 6d0(x0 - x0), tj. c0 = 0. Rovnice c0 = 0, cn = 0 společně se systémem (6.51) tvoří lineární systém Ac = g, c = (c0, . . . , cn)T , kde A Mn+1 a b je vektor dimenze (n + 1): A = 1 0 0 0 h0 2(h0 + h1) h1 0 0 h1 2(h1 + h2) h2 ... ... ... ... hn-2 2(hn-2 + hn-1) hn-1 0 0 1 , g = 0 3 h1 (a2 - a1) - 3 h0 (a1 - a0) ... 3 hn-1 (an - an-1) - 3 hn-2 (an-1 - an-2) 0 . 196 6. INTERPOLACE Matice A je ryze řádkově diagonálně dominantní. Podle věty 4.2 je regulární a daná soustava má jediné řešení, tzn. existuje jediný kubický interpolační splajn. 2 Obdobná věta platí i v případě, že jsou předepsány okrajové podmínky (ii). Poznámka 11. Matice A je třídiagonální a pro řešení uvedeného systému lze užít Croutovy metody, neboť jsou splněny předpoklady věty 4.8. Na závěr tohoto odstavce uvedeme odhad chyby pro okrajové podmínky (ii). Věta 6.14. Nechť f C4 [a, b], maxaxb |f(4) (x)| = M. Pro kubický interpolační splajn S splňující okrajové podmínky S (a) = f (a), S (b) = f (b) platí max axb |f(x) - S(x)| 5M 384 max 0jn-1 (xj+1 - xj)4 . Důkaz viz [4]. Odhad chyby pro přirozený splajn závisí rovněž na (xj+1 - xj)4 , ale tento odhad lze velmi obtížně vyjádřit. Splajny hrají důležitou úlohu nejen při interpolaci funkcí, ale i při jiných typech aproximace. Lze je zkonstruovat tak, že zachovávají geometrický tvar funkce (např. konvexitu). Uplatňují se také ve statistice při vyhlazování dat. Příklad 6.13. Sestrojte přirozený kubický interpolační splajn pro funkci f(x) = 1/(1 + x2 ) na intervalu [0, 3]. Za uzly zvolte body x0 = 0, x1 = 1, x2 = 3. Řešení. V tomto případě je třeba sestrojit 2 kubické polynomy S0, S1 S0(x) = a0 + b0x + c0x2 + d0x3 S1(x) = a1 + b1(x - 1) + c1(x - 1)2 + d1(x - 1)3 . Je h0 = x1 - x0 = 1, h1 = x2 - x1 = 2, a0 = f(0) = 1, a1 = f(1) = 1 2 , a2 = f(3) = 1 10 . Systém (6.51) je tvaru (S (x0) = 0 = c0, S (x2) = 0 = c2) c0 = 0 c0h0 + 2(h0 + h1)c1 + h1c2 = 3 h1 (a2 - a1) - 3 h0 (a1 - a0) c2 = 0. Odtud po dosazení za h0, h1, h2, a0, a1, a2 dostaneme c0 = 0, c1 = 3 20 , c2 = 0. Dále užitím vztahů (6.49) resp. (6.50) vypočteme b0 = -11 20 , b1 = -2 5 . A ze vztahů (6.46) vypočteme d0 = 1 20 , d1 = - 1 40 . § 6.9. Interpolace pomocí splajnů 197 Odpovídající kubické interpolační splajny jsou tvaru: S0(x) = 1 - 11 20 x + 1 20 x3 S1(x) = 1 2 - 2 5 (x - 1) + 3 20 (x - 1)2 - 1 40 (x - 1)3 . 0 1 3 0 0.2 0.4 0.6 0.8 1 x y Obr. 6.11: Kubický splajn pro funkci f(x) = 1/(1 + x2) Na závěr tohoto odstavce ukážeme použití splajnů v grafice (viz [4]). Pokusíme se v obrázku 6.12 aproximovat přirozenými kubickými splajny křivku, která tvoří jeho horní hranici (obrázek 6.13). Obr. 6.12: Původní obrázek Pomocí dostatečně jemné sítě je možné přibližně stanovit funkční hodnoty křivky, přičemž v místech, kde se křivka rychleji mění, je vhodné volit síť hustěji. Na dvou místech (označeny křížkem) je porušena hladkost křivky, proto ji rozdělíme na tři části a každou budeme aproximovat zvlášť. V tabulce 6.1 jsou uvedeny uzly a funkční hodnoty pro jednotlivé části křivky. Po výpočtu dostaneme tři splajny, jejich koeficienty jsou v tabulce 6.2. Obrázek 6.14 ukazuje rozdíl mezi původní křivkou (čárkovaně) a nalezenými splajny (plnou čarou). 198 6. INTERPOLACE Obr. 6.13: Aproximovaná křivka Křivka 1 Křivka 2 Křivka 3 xi f(xi) xi f(xi) xi f(xi) 1 3,0 17 4,5 27,7 4,1 2 3,7 20 7,0 28 4,3 5 3,9 23 6,1 29 4,1 6 4,2 24 5,6 30 4,0 7 5,7 25 5,8 8 6,6 27 5,2 10 7,1 27,7 4,1 13 6,7 17 4,5 Tabulka 6.1: Hodnoty bodů na jednotlivých křivkách Obr. 6.14: Kubické interpolační splajny § 6.9. Interpolace pomocí splajnů 199 Splajn 1 i xi ai = f(xi) bi ci di 0 1 3,0 0,786 0,000 -0,086 1 2 3,7 0,529 -0,257 0,034 2 5 3,9 -0,086 0,052 0,334 3 6 4,2 1,019 1,0583 -0,572 4 7 5,7 1,408 -0,664 0,156 5 8 6,6 0,547 -0,197 0,024 6 10 7,1 0,049 -0,052 -0,003 7 13 6,7 -0,342 -0,078 0,007 8 17 4,5 Splajn 2 i xi ai = f(xi) bi ci di 0 17 4,5 1,106 0,000 -0,030 1 20 7,0 0,289 -0,272 0,025 2 23 6,1 -0,660 -0,044 0,204 3 24 5,6 -0,137 0,567 -0,230 4 25 5,8 0,306 -0,124 -0,089 5 27 5,2 -1,263 -0,660 0,314 6 27,7 4,1 Splajn 3 i xi ai = f(xi) bi ci di 0 27,7 4,1 0,749 0,000 -0,910 1 28 4,3 0,503 -0,819 0,116 2 29 4,1 -0,787 -0,470 0,157 3 30 3,0 Tabulka 6.2: Koeficienty jednotlivých splajnů 200 6. INTERPOLACE Cvičení ke kapitole 6 1. Najděte Lagrangeův interpolační polynom, je-li dáno xi 0 1 2 5 fi 2 3 12 147 (P3(x) = x3 + x2 - x + 2.) 2. S jakou přesností lze vypočítat 115 pomocí Lagrangeova interpolačního polynomu pro funkci y = x, když vybereme za uzly interpolace x0 = 100, x1 = 121, x2 = 144? (|E(115)| 1,6.10-3 .) 3. Pro případ ekvidistantních uzlů a tříbodového Lagrangeova vzorce najděte takový odhad veličiny h3 f (x), který v intervalu určeném třemi body zaručuje chybu metody menší než 10-d , d je přirozené číslo. Použijte tohoto výsledku k odhadu největší hodnoty kroku h, kterého lze užít k interpolaci funkce f(x) = sin x na intervalu [-, ] s chybou menší než 10-10 . (h 1,15.10-3 .) 4. Nechť li, i = 0, 1, . . ., n jsou fundamentální polynomy. Dokažte: a) Je-li li(0) = ci, i = 0, 1, . . . , n, pak n i=0 cixj i = 1 pro j = 0 0 pro j = 1, 2, . . ., n (-1)n x0x1 . . . xn pro j = n + 1 (Návod: Využijte jednoznačnosti interpolačního polynomu.) 5. Nechť x0, . . . , xn jsou libovolná celá čísla x0 < x1 < . . . < xn. Ukažte, že každý algebraický polynom stupně n tvaru Q(x) = xn + a1xn-1 + . . . + an nabývá v bodech x0, . . . , xn hodnot, z nichž alespoň jedna je v absolutní hodnotě větší nebo rovna n!/2n . (Návod: Napište interpolační polynom pro Q v bodech x0, . . . , xn, užijte jednoznačnosti a porovnejte koeficienty u xn .) 6. Najděte Newtonův interpolační polynom, je-li dáno xi 0 2 3 5 fi 1 3 2 5 (P3(x) = 3 10 x3 - 13 6 x2 + 62 15 x + 1.) Cvičení ke kapitole 6 201 7. Je dána tabulka xi -3 0 1 2 fi -13 2 3 12 Užitím inverzní interpolace najděte přibližně kořen rovnice f(x) = 0 ležící v intervalu [-3, 0]. ( -2,13.) 8. Vypočtěte fundamentální polynomy li, i = 0, 1, . . . , n, jestliže za uzly interpolace zvolíme kořeny Čebyševova polynomu Tn+1(x) = cos ((n + 1) arccosx). (li(x) = 1 - x2(-1)i cos ((n + 1) arccosx) (n + 1)(x - xi) , xi = cos 2i + 1 2(n + 1) , i = 0, 1, . . ., n. ) 9. a) Užijte vhodného Lagrangeova interpolačního polynomu stupně jedna, dva, tři a čtyři pro aproximaci hodnoty f(2,5), jestliže je dáno xi 2,0 2,2 2,4 2,6 2,8 fi 0,5103757 0,5207843 0,5104147 0,4813306 0,4359160 ( Uzly stupeň aproximace 2,4; 2,6 1 0,4958727 2,4; 2,6; 2,2 2 0,4982120 2,4; 2,6; 2,2; 2,8 3 0,4980630 všechny 4 0,4980705 ) b) Navrhněte algoritmus pro obecný případ úlohy a). 10. Nechť f(x) = ex , 0 x 2. a) Aproximujte f(0,25) užitím lineární interpolace s uzly x0 = 0, x1 = 0,5. b) Aproximujte f(0,75) užitím lineární interpolace s uzly x0 = 0,5, x1 = 1. c) Aproximujte f(0,25) a f(0,75) užitím kvadratické interpolace s uzly x0 = 0, x1 = 1, x2 = 2. Které aproximace jsou lepší a proč? (a) 1,32436, b) 2,18350, c) 1,15277; 2,01191. Výsledky a), b) jsou lepší aproximací, neboť jsou zvoleny vhodnější uzly.) 11. Užijte Nevillova schematu pro určení aproximace ve cvičení 8. 202 6. INTERPOLACE 12. a) Aproximujte 3 užitím Nevillova schematu pro funkci f(x) = 3x a uzly x0 = -2, x1 = -1, x2 = 0, x3 = 1, x4 = 2. b) Opakujte část a) užitím Aitkenova schematu. 13. Užitím iterované inverzní interpolace nalezněte přibližné řešení rovnice x - e-x = 0, je-li dáno xi 0,3 0,4 0,5 0,6 exi 0,740818 0,670320 0,606531 0,548812 (f-1 (0) 0,567142.) 14. Aproximujte f(0,05) užitím Newtonovy formule pro interpolaci vpřed, je-li dáno xi 0,0 0,2 0,4 0,6 0,8 f(xi) 1,00000 1,22140 1,49182 1,82212 2,22554 (f(0,05) 1,05126.) 15. Jsou dány hodnoty funkce f: f(a), f(b), f(c) v blízkosti jejího maxima nebo minima. Ukažte, že pro bod x, ve kterém se realizuje maximum nebo minimum, přibližně platí x (b2 - c2 )f(a) + (c2 - a2 )f(b) + (a2 - b2 )f(c) 2{(b - c)f(a) + (c - a)f(b) + (a - b)f(c)} . 16. Sestrojte Hermitův interpolační polynom pro hodnoty a) xi -1 0 1 fi -1 0 1 f i 0 0 0 b) xi 0 1 2 fi 1 -1 0 f i 0 0 f i 0 (a) P5(x) = 1 2 x3 (5-3x2 ), b) P5(x) = (3x-1)(x-2)/2+x(x-1)(x-2)(7 4 + 15 4 x - 33 8 x2 ).) 17. Užijte následujících hodnot pro konstrukci Hermitova interpolačního polynomu a pro určení hodnoty sin 0,34. xi sin xi (sin x) |x=xi 0,30 0,29552 0,95534 0,32 0,31457 0,94924 0,33 0,32404 0,94604 0,35 0,34290 0,93937 Cvičení ke kapitole 6 203 (sin 0,34 0,33350.) 18. Interpolace funkce dvou proměnných. a) Lineární interpolace. Nechť xi x xi+1, yi y yi+1. Užitím lineární interpolace nejdříve pro x a pak pro y dokažte, že f(x, y) (1-)(1-)fij +(1-)fi,j+1 +(1-)fi+1,j +fi+1,j+1, kde = (x - xi)/(xi+1 - xi), = (y - yj)/(yj+1 - yj), fij = f(xi, yj). b) Interpolace funkce dvou proměnných v obecném případě. Je dána tabulka (a1, b1) (an, b1) (a1, b2) (an, b2) ... ... (a1, bk) (an, bk) a hodnoty funkce f(x, y) v těchto bodech. Užitím interpolace najděte přibližně hodnoty f(x, y), (x, y) = (ai, bj), i = 1, . . . , n, j = 1, . . . , k. (Návod: Pro každý řádek tabulky sestrojte interpolační polynom a takto získaných hodnot užijte k interpolaci.) 19. Užitím cv. 18b řešte tuto úlohu. Je dána tabulka hodnot funkce f(x, y) = ex+y : ddy x 0,7 0,9 1,5 0,7 4,05519 4,95303 9,0250 1,1 6,04964 7,38905 13,46373 1,3 7,38905 9,02501 16,44464 Sestrojte interpolační polynom 2. stupně ve směru x a 2. stupně ve směru y a určete přibližnou hodnotu funkce v bodě (1, 1). (f(1, 1) 7,38905.) 20. Nalezněte přirozený kubický interpolační splajn pro f(x) = cos2 x a uzly x0 = 0, x1 = 2 , x2 = 3 4 . (S0(x) = 1 - 10 3 x + 16 33 x3 , S1(x) = 2 3 (x - 2 ) + 8 2 (x - 2 )2 - 32 33 (x - 2 )3 .) 204 6. INTERPOLACE Kontrolní otázky ke kapitole 6 1. Je možné sestrojit Hermitův interpolační polynom pro následující hodnoty? xi 0 1 2 f i 1 0 1 f i 2 2. lze pro danou množinu (n + 1) čísel c0, c1,. . . ,cn jediným způsobem sestrojit polynom P n splňující podmínky P(x0) = c0, P (x1) = c1, . . . , P(n) (xn) = cn ? 3. Jsou dány dvojice čísel (xi, fi), i = 0, 1, . . . , n, xi = xk pro i = k. a) Lze najít právě jeden polynom Q stupně nejvýše n - 1, který splňuje podmínky Q(xi) = fi, i = 0, . . . , n? b) Lze najít právě jeden polynom R stupně alespoň n + 1, který splňuje podmínky R(xi) = fi, i = 0, . . . , n? 4. Je možné modifikovat Nevillovo, případně Aitkenovo schema na konstrukci Hermiteova polynomu? 5. Předpokládejme, že chceme řešit tuto úlohu interpolace funkce dvou pro- měnných: Nalezněte polynom P tvaru P(x, y) = a0 + a1x + a2y splňující podmínky P(xi, yi) = f(xi, yi), i = 0, 1, 2. Je možné najít takový polynom pro libovolnou trojici bodů (xi, yi), i = 0, 1, 2? Jak to dopadne v případě, že x0 = (-1, -1), x1 = (0, 0), x2 = (1, 1)? 6. V jakých případech bude splajn roven interpolačnímu polynomu? Kapitola 7 Numerické derivování Při řešení praktických úloh je někdy třeba najít derivaci funkce dané tabulkou. Může se také stát, že v důsledku složitého analytického vyjádření je bezprostřední výpočet derivace obtížný. V takových případech užíváme numerického derivování. Na základě poznatků z předchozí kapitoly je zřejmé, že formule pro numerické derivování lze získat derivací interpolačního polynomu a položit f (x) P n(x). Obecně však numerické derivování je operace méně přesná než interpolace, neboť ze skutečnosti, že hodnoty funkce a aproximujícího polynomu jsou blízké, neplyne ještě ,,blízkost hodnot derivací. Probereme nyní problém numerického derivování podrobněji. § 7.1. Numerický výpočet derivace Úmluva. I[x0, . . . , xn, x] bude označovat nejmenší uzavřený interval obsahující body x0, . . . , xn, x. Jsou dány body (xi, fi), i = 0, 1, . . . , n, xi = xk pro i = k. Nechť Pn n je Lagrangeův interpolační polynom pro tyto body, tj. f(x) = Pn(x) + E(x), (7.1) kde Pn(x) = n i=0 li(x)fi, E(x) = n+1(x) (n + 1)! f(n+1) (), = (x), I. Derivujme vztah (7.1): f (x) = P n(x) + E (x) = = n i=0 l i(x)fi + n+1(x) (n + 1)! f(n+1) () + n+1(x) (n + 1)! d dx f(n+1) () (7.2) 206 7. NUMERICKÉ DERIVOVÁNí Vidíme, že chyba má v tomto případě složitější tvar než tomu bylo při interpolaci. Jestliže požadujeme výpočet derivace v některém z uzlových bodů xj, což bývá nejčastější úloha, je předchozí formule tvaru f (xj) = n i=0 l i(xj)fi + n+1(xj) (n + 1)! f(n+1) (j), j = 0, 1, . . ., n, j I. Označme f j přibližnou hodnotu derivace v bodě xj. Ta je tedy dána vztahem f j = n i=0 l i(xj)fi a výraz n+1(xj) (n + 1)! f(n+1) (j) udává chybu této aproximace, j = j(xj). V obecném případě lze druhý člen chyby v (7.2) vyjádřit takto: Věta 7.1. Nechť n+1(x) (n + 1)! f(n+1) (), I[x0, . . . , xn, x] je chyba při Lagrangeově interpolaci. Nechť f(n+2) je spojitá v intervalu I[x0, . . . , xn, x]. Pak existuje I[x0, . . . , xn, x] takové, že 1 (n + 1)! d dx f(n+1) () = 1 (n + 2)! f(n+2) (). Důkaz. Uvažujme Lagrangeův interpolační polynom v bodě x = xi, kde i = 0, 1, . . . , n, f(x) = n i=0 li(x)fi + n+1(x) (n + 1)! f(n+1) (). Pro li užijeme vyjádření li(x) = n+1(x) (x - xi) n+1(xi) , a pak f(x) = n i=0 n+1(x) (x - xi) n+1(xi) fi + n+1(x) (n + 1)! f(n+1) (). Protože x = xi, i = 0, 1, . . . , n, můžeme tuto rovnost vydělit n+1(x) a derivovat d dx f(x) n+1(x) = - n i=0 fi (x - xi)2 n+1(xi) + 1 (n + 1)! d dx f(n+1) (). (7.3) § 7.1. Numerický výpočet derivace 207 Uvažujme ještě nyní další bod (xn+1, fn+1), xn+1 I[x0, . . . , xn, x], xn+1 = x, xi, i = 0, 1, . . . , n. Pak n+2(x) = n+1 i=0 (x - xi) n+2(x) = (x - xn+1) n+1(x) n+2(x) = n+1(x) + (x - xn+1) n+1(x) n+2(xi) = (xi - xn+1) n+1(xi) pro i = n + 1 n+1(xn+1) pro i = n + 1 (7.4) Sestrojme nyní Lagrangeův polynom pro body (xi, fi), i = 0, 1, . . . , n + 1: f(x) = n+1 i=0 n+2(x) (x - xi) n+2(xi) fi + n+2(x) (n + 2)! f(n+2) (), (7.5) = (x) I[x0, . . . , xn+1, x]. Vztah (7.5) nyní poněkud upravíme: f(x) - n+2(x) (x - xn+1) n+2(xn+1) fn+1 = = n i=0 n+2(x) (x - xi) n+2(xi) fi + n+2(x) (n + 2)! f(n+2) (). V dalším použijeme vztahů (7.4): f(x) - n+1(x) n+1(xn+1) fn+1 = = n i=0 (x - xn+1) n+1(x) (x - xi)(xi - xn+1) n+1(xi) fi + n+2(x) (n + 2)! f(n+2) (). Tuto rovnici vydělíme (x - xn+1) n+1(x): f(x) (x - xn+1) n+1(x) - fn+1 (x - xn+1) n+1(xn+1) = = n i=0 fi (x - xi)(xi - xn+1) n+1(xi) + 1 (n + 2)! f(n+2) () neboli f(x) n+1(x) - fn+1 n+1(xn+1) x - xn+1 = = n i=0 fi (x - xi)(xi - xn+1) n+1(x) + 1 (n + 2)! f(n+2) (). 208 7. NUMERICKÉ DERIVOVÁNí Přechodem k limitě pro xn+1 x dostaneme (f(n+2) spojitá v I) d dx f(x) n+1(x) = - n i=0 fi (x - xi)2 n+1(xi) + 1 (n + 2)! f(n+2) (), (7.6) I[x0, . . . , xn, x]. Porovnáním (7.5) a (7.6) plyne tvrzení věty. 2 Výsledná formule pro výpočet derivace v bodě x = xi, i = 0, 1, . . ., n, je tvaru f (x) = n i=0 l i(x)fi + n+1(x) (n + 1)! f(n+1) () + n+1(x) (n + 2)! f(n+2) (), , I[x0, . . . , xn, x] Poznámka 1. Pro vyšší derivace platí obdobný vztah 1 n! dk dxk f(n) () = k! (n + k)! f(n+k) (). V praxi se často setkáváme s případem, kdy množina uzlů xi, i = 0, 1, . . ., n je ekvidistantní. Je-li celkový počet uzlů lichý, je vhodné přiřadit uzlům kladné a záporné indexy a to takto: x-l, . . . , x-1, x0, x1, . . . , xl, xi = x0 + ih, i = 1, . . . , l, h > 0. Příklad 7.1. Odvoďte formuli pro výpočet derivace v prostředním ze tří uzlů: x-1, x0, x1, xi = x0 + ih, i = 1. Řešení. Sestrojíme Lagrangeův interpolační polynom pro hodnoty xi x-1 x0 x1 fi f-1 f0 f1 Je f(x) = P2(x) + E(x) f(x) = (x - x0)(x - x1) (x-1 - x0)(x-1 - x1) f-1 + (x - x-1)(x - x1) (x0 - x-1)(x0 - x1) f0 + + (x - x-1)(x - x0) (x1 - x-1)(x1 - x0) f1 + 3(x) 3! f (), 3(x) = (x - x-1)(x - x0)(x - x1). Derivujeme f (x) = 2x - x0 - x1 2h2 f-1 - 2x - x-1 - x1 h2 f0 + 2x - x-1 - x0 2h2 f1 + + 1 3! 3(x)f () + 1 3! 3(x) d dx (f ()), § 7.1. Numerický výpočet derivace 209 kde jsme položili xi = x0 + ih, i = 1, a pro x = x0 máme f (x0) = 1 2h (-f-1 + f1) - h2 6 f (0). (7.7) Všimněme si ještě geometrického významu této formule -- viz obr. 7.1. Zde f 0 = (-f-1 +f1)/2h je přibližná hodnota derivace v bodě x0, což geometricky znamená směrnici sečny určené body (x-1, f-1) a (x1, f1). Stejným způsobem lze odvodit 0 1 2 3 4 5 0 0.5 1 1.5 2 2.5 3 3.5 4 x-1 x1 x0 Obr. 7.1: Sečna určená body (x-1, f-1), (x1, f1) (čárkovaně) a tečna v bodě (x, f0) (čerchovaně) i formule pro výpočet derivace v bodech x-1, x1: f (x-1) = 1 2h (-3f-1 + 4f0 - f1) + h2 3 f (-1) (7.8) f (x1) = 1 2h (f-1 - 4f0 + 3f1) + h2 3 f (1) (7.9) Tyto formule se nazývají tříbodové. Příklad 7.2. Užitím formulí (7.7), (7.8) a (7.9) vypočtěte derivaci funkce f(x) = log x + 2 v bodech 0,5, 1, 1,5; h = 0, 5. Řešení: f -1 = 1 2h (-3 log(0,5) + 4 log(1) - log(1,5)) = 1,6740, f 0 = 1 2h (- log(0,5) + log(1,5)) = 1,0986, f 1 = 1 2h ( log(0,5) - 4 log(1) + 3 log(1,5)) = 0,5232. Přesné hodnoty jsou f (0,5) = 2, f (1) = 1, f (1,5) = 2/3. 210 7. NUMERICKÉ DERIVOVÁNí Poznámka 2. Všimněme si, že chyba ve vzorci (7.7) je rovna přibližně polovině chyby ve vzorcích (7.8), (7.9). To je logické, neboť (7.7) užívá hodnot v bodech ležících po obou stranách x0, ale vzorce (7.8), (7.9) pouze hodnot ležících pouze na jednu stranu od x-1 resp. x1. Formule (7.8) a (7.9) jsou tedy vhodné pro výpočet derivace v blízkosti koncových bodů intervalu, neboť nemusíme mít k dispozici hodnoty vně intervalu. Při použití formulí pro numerické derivování se setkáváme ještě s dalším problémem. Jestliže hodnoty fi jsou dány s chybou i, může tato okolnost podstatně ovlivnit výslednou hodnotu f i. Ukážeme to na případě formule (7.7). Nechť fi je přesná hodnota, ~fi je přibližná hodnota v bodě xi, i = 0, 1. Celkovou chybu T lze odhadnout takto: |T | 1 2h (| ~f-1 - f-1| + | ~f1 - f1|) + h2 6 |f (0)| 1 2h (-1 + 1) + h2 6 |f (0)| , kde |fi - ~fi| i; položme = max(1, -1), M3 = max [x-1,x1] |f (x)| . Pak |T | h + h2 6 M3. První člen chyby (např. chyba způsobená zaokrouhlováním) závisí nepřímo úměrně na h, druhý člen (chyba metody) závisí přímo úměrně na h. Vzniká problém, jak volit h, aby celková chyba byla minimální. Hledejme tedy minimum funkce g(h) = h + h2 6 M3. Ze vztahu g (h) = 0 dostáváme bod minima hopt = 3 3 M3 . Pro obecný případ je problém podrobně popsán v [1], [19]. Poznámka 3. V případě, že hodnoty fi jsou dány s malou přesností (např. byly získány empiricky), není vhodné použít formuli pro numerické derivování přímo, neboť by mohlo dojít ke zkreslení výsledků. V takových případech je lépe nejdříve naměřené hodnoty ,,vyrovnat metodou nejmenších čtverců a pak teprve derivovat. Postupem uvedeným výše lze získat formule pro numerický výpočet derivací vyšších řádů. Jako příklady lze uvést tyto tříbodové formule: f (x-1) = 1 h2 (f-1 - 2f0 + f1) - hf (-1) + h2 6 f(4) (-1) f (x0) = 1 h2 (f-1 - 2f0 + f1) - h2 12 f(4) (0) f (x1) = 1 h2 (f-1 - 2f0 + f1) + hf (1) - h2 6 f(4) (1) . § 7.2. Diferenční aproximace 211 § 7.2. Diferenční aproximace Zmíníme se ještě o jiném způsobu přibližného výpočtu derivace. Při numerickém řešení diferenciálních rovnic se u některých metod aproximují derivace diferencemi (diferenční metody). Ukážeme, jak se v takových případech aproximují první a druhé derivace. Stejně jako v příkladě 7.1 uvažujme tři body x-1 = x0 -h, x0, x1 = x0 + h. Předpokládejme, že f má dostatečný počet derivací v okolí x0. Napišme nyní Taylorův rozvoj v bodě x0: f(x0 + h) = f(x0) + hf (x0) + h2 2 f (x0) + h3 3! f(3) (x0) + (7.10) + h4 4! f(4) (x0) + h5 5! f(5) (x0) + h6 6! f(6) (x0) + O(h7 ), f(x0 - h) = f(x0) - hf (x0) + h2 2 f (x0) - h3 3! f(3) (x0) + (7.11) + h4 4! f(4) (x0) - h5 5! f(5) (x0) + h6 6! f(6) (x0) + O(h7 ) . Ze vztahu (7.10) nyní dostaneme aproximaci první derivace ve tvaru f (x0) = f(x0 + h) - f(x0) h + O(h) . Výraz (f(x0 + h) - f(x0))/h se nazývá pravá diferenční derivace. Ze vztahu (7.10) plyne f (x0) = f(x0) - f(x0 - h) h + O(h) . Výraz (f(x0) - f(x0 - h))/h se nazývá levá diferenční derivace. Pravá a levá diferenční derivace aproximují f (x0) s chybou řádu O(h) (tj. chyba se chová přibližně jako kh, k = konst.). Jestliže vztahy (7.10) a (7.11) odečteme, dostaneme aproximaci derivace, která je řádu O(h2 ): f (x0) = f(x0 + h) - f(x0 - h) 2h + O(h2 ) . Tato aproximace se nazývá centrální diferenční derivace. Součtem vztahů (7.10) a (7.11) se získá aproximace druhé derivace v bodě x0: f (x0) = f(x0 + h) - 2f(x0) + f(x0 - h) h2 + O(h2 ) . Poznámka 4. Všimněme si, že ve všech uvedených příkladech jsme neznámé hodnoty f (x0), f (x0) aproximovali jistými formulemi závislými na kroku h, který zde hraje roli parametru. V následujícím odstavci ukážeme, jak lze těchto formulí užít k získání aproximací vyšších řádů. 212 7. NUMERICKÉ DERIVOVÁNí § 7.3. Richardsonova extrapolace Technika známá jako Richardsonova extrapolace se často používá pro získání výsledků vyšších řádů přesnosti užitím formulí nižších řádů přesnosti. Myšlenka této metody pochází už od Archimeda (cca 200 př. n. l.). Vysvětlíme nejdříve obecný postup a pak ukážeme aplikaci na numerický výpočet derivace. Nechť N(h) je formule, která aproximuje neznámou veličinu M a nechť řád této aproximace je O(h2 ). Navíc předpokládejme, že aproximace N(h) veličiny M může být vyjádřena ve tvaru: M = N(h) + k1h2 + O(h4 ) , (7.12) kde k1 je konstanta. Napíšeme-li tento vztah s h/2 místo s h, dostaneme M = N( h 2 ) + k1( h 2 )2 + O(( h 2 )4 ) . (7.13) Vynásobme rovnici (7.13) čtyřmi a odečteme od ní rovnici (7.12): 3M = 4N( h 2 ) - N(h) + O(h4 ) , odtud M = 4N(h 2 ) - N(h) 3 + O(h4 ) . Položme N1(h) = N(h) a N2(h) = 4N1(h 2 ) - N1(h) 3 . (7.14) Veličina N2(h) je novou aproximací veličiny M a řád této aproximace je O(h4 ). Tento postup lze zobecnit takto: Předpokládejme, že chyba aproximace N(h) veličiny M může být vyjádřena ve tvaru M = N(h) + m-1 j=1 kjh2j + O(h2m ) , kde k1,. . . ,km-1 jsou konstanty. Aproximace Nj(h) řádu O(h2j ), j = 2, 3, . . . , m jsou definovány vztahy Nj(h) = 4j-1 Nj-1(h 2 ) - Nj-1(h) 4j-1 - 1 (7.15) § 7.3. Richardsonova extrapolace 213 a výpočet lze uspořádat do tabulky: N1(h) N1(h 2 ) N2(h) N1(h 4 ) N2(h 2 ) N3(h) N1(h 8 ) N2(h 4 ) N3(h 2 ) N4(h) N1( h 16 ) N2(h 8 ) N3(h 4 ) N4(h 2 ) N5(h) ... ... ... ... ... Poznámka 5. Uvedený postup se nazývá Richardsonova extrapolace. Snažíme se totiž získat hodnotu pro h 0, tj. jedná se o extrapolaci z kladných hodnot h. Je zřejmé, že centrální diferenční derivace může být vyjádřena ve tvaru (viz (7.10) a (7.10)) f (x0) = f(x0 + h) - f(x0 - h) 2h - h2 6 f (x0) - h4 120 f(5) (x0) + O(h6 ) . (7.16) V tomto případě je N1(h) = f(x0 + h) - f(x0 - h) 2h , k1 = - f (x0) 6 , k2 = - f(5) (x0) 120 . (7.17) Příklad 7.3. Užijte formuli (7.16) a (7.15) pro výpočet druhé derivace funkce f(x) = x ex v bodě x0 = 2 s krokem h = 0, 2 Řešení: Je N1(h) = N1(0, 2) = 1 0, 4 (f(2, 2) - f(1, 8)) = 22, 414160 N1(0, 1) = 22, 228787 N1(0, 05) = 22, 182565 Další aproximace jsou uspořádány v tabulce N1(0, 2) = 22, 414160 N1(0, 1) = 22, 228787 N2(0, 2) = 4 N1(0,1)-N1(0,2) 3 = 22, 166996 N1(0, 05) = 22, 182565 N2(0, 1) = 4 N1(0,05)-N1(0,1) 3 = 22, 167158 N3(0, 2) = 16 N2(0,1)-N2(0,2) 15 = 22, 167168 . Pro srovnání ­ přesná hodnota f (x) = ex + x ex v bodě x0 = 2 je 22, 167168. 214 7. NUMERICKÉ DERIVOVÁNí Poznámka 6. Jak uvidíme v kapitole 9, lze Richardsonovy extrapolace s výhodou použít i pro numerický výpočet integrálu. Cvičení ke kapitole 7 1. Odvoďte formuli (7.8), (7.9). 2. Odvoďte pětibodovou formuli ve tvaru f 0 = 1 12h (f-2 - 8f-1 + 8f1 - f2) + h4 30 f(5) (), x-2 < < x2. 3. Užitím formulí (7.7), (7.8), (7.9) vypočtěte derivace funkce v daných bodech xi -0,3 -0,1 0,1 0,3 fi -0,20431 -0,08993 0,11007 0,39569 (f (-0,3) 0,35785, f (-0,1) 0,78595, f (0,1) 1,2141, f (0,3) 61,6422.) 4. a) Nechť f(x) = 2x sin x. Aproximujte hodnotu f (1,05) užitím h = 0,05 a h = 0,01 ve formuli (7.7), jsou-li dány hodnoty: xi 1,0 1,04 1,06 1,10 f(xi) 1,6829420 1,7732994 1,8188014 1,9103448 b) Opakujte část a) pro případ, že všechny funkční hodnoty zaokrouhlíte na čtyři desetinná místa. (2,27403, 2,27510.) 5. Užitím formule (7.7) najděte první derivaci funkce f(x) = 1/(1 + x) v bodě x = 0,005. Užijte a) h = 1,0, b) h = 0,01 a výsledky porovnejte s přesnou hodnotou. Vysvětlete! 6. Použijte formule (7.16) a (7.15) k výpočtu hodnoty N3(h) pro následující funkce a kroky h: a) f(x) = ln x, x0 = 1, 0, h = 0, 4 b) f(x) = x + ex , x0 = 0, 0, h = 0, 4 c) f(x) = 2x sin x, x0 = 1, 05, h = 0, 4 Výsledek porovnejte s přesnými hodnotami. Kontrolní otázky ke kapitole 7 215 Kontrolní otázky ke kapitole 7 1. Může být první krok Richardsonovy extrapolace, tj. vztah (7.14), popsán pomocí interpolace určené body (h2 , N1(h)), ((h 2 )2 , N1(h 2 ))? Jaká je hodnota příslušného interpolačního polynomu v bodě 0? 2. Je výhodné použít pro numerický výpočet derivace podle formule (7.2), ve které jsou jako uzly použity kořeny Čebyševova polynomu (viz kapitola 6)? (Návod: |T n(x)| n2 pro x [-1, 1].) 3. Je možné použít hodnot z příkladu 1 pro výpočet f (xi), i = -1, 0, 1? Stačí v tomto případě aproximace funkce polynomem druhého stupně? 216 7. NUMERICKÉ DERIVOVÁNí Kapitola 8 Ortogonální polynomy V této kapitole se budeme zabývat určitými polynomy, které budou velmi užitečné při konstrukci formulí numerického integrování. Zde uvedeme pouze definice a nejdůležitější vlastnosti. Podrobným studiem těchto polynomů se zabývá např. publikace [22]. Nechť j stejně jako dříve značí množinu všech polynomů stupně nejvýše j a j množinu všech normovaných polynomů stupně j, tj. polynomů s koeficientem rovným jedné u nejvyšší mocniny. Nechť w je funkce, o které předpokládáme, že je integrovatelná a nezáporná na intervalu [a, b] a w(x) > 0 skoro všude na [a, b]. Takovou funkci budeme nazývat vahovou funkcí. Dále definujeme skalární součin f, g = b a w(x)f(x)g(x) dx pro všechny funkce, pro které existuje konečný integrál f, f = b a w(x)f2 (x) dx < +. Jestliže f, g = 0, říkáme, že funkce f, g jsou ortogonální na intervalu [a, b] s vahou w. Následující věta dokazuje existenci posloupnosti navzájem ortogonálních polynomů vzhledem k vahové funkci w. Věta 8.1. Pro danou vahovou funkci w na [a, b] existují polynomy pj j, j = 0, 1, 2, . . ., takové, že pi, pk = 0 pro i = k. (8.1) Tyto polynomy jsou jednoznačně definovány vztahy p0(x) 1 218 8. ORTOGONÁLNí POLYNOMY pi+1(x) = (x - i+1)pi(x) - 2 i pi-1(x) pro i 0, kde p-1(x) 0 a i+1 = xpi, pi / pi, pi pro i 0 xpi, pi = b a w(x)xp2 i (x) dx a 2 i = 0 pro i = 0, pi, pi / pi-1, pi-1 pro i 1. Důkaz. Polynomy pj, j = 0, 1, 2, . . ., lze sestrojit rekurentně pomocí GramovaSchmidtova ortogonalizačního procesu ([22]). 2 Každý polynom p k lze zřejmě vyjádřit jako lineární kombinaci ortogonálních polynomů pi i, i k. Máme tedy: Důsledek. p, pn = 0 pro všechny polynomy p n-1, pn n. Věta 8.2. Nechť {pj} je systém polynomů ortogonálních s vahou w na intervalu [a, b]. Platí: Každý polynom pj má všechny kořeny reálné, různé a všechny leží v intervalu (a, b). Důkaz lze najít v [22]. Některé vahové funkce se vyskytují v praxi dosti často, příslušné ortogonální polynomy se uvažují ve standardním tvaru, v němž je koeficient u xn obvykle různý od jedné. Uvedeme nyní některé speciální ortogonální polynomy. 1. Legendrovy polynomy Pn jsou ortogonální na intervalu [-1, 1] s vahou w(x) 1. Vlastnosti: a) Ortogonalita 1 -1 Pn(x)Pm(x) dx = 0 pro n = m, 2 2n + 1 pro n = m. (8.2) b) Platí rekurentní vztah Pn+1(x) = 2n + 1 n + 1 xPn(x) - n n + 1 Pn-1(x), n = 1, 2, 3, . . . Je P0(x) = 1, P1(x) = x, P2(x) = 3 2 x2 - 1 2 , . . . c) Polynomy Pn vyhovují diferenciální rovnici (1 - x2 )y - 2xy + n(n + 1)y = 0. 219 2. Čebyševovy polynomy Tn jsou ortogonální na intervalu [-1, 1] s vahou w(x) = 1/ 1 - x2. Vlastnosti: a) Ortogonalita 1 -1 Tn(x)Tm(x) 1 - x2 dx = 0 pro n = m, pro n = m = 0, 2 pro n = m = 0. (8.3) b) Platí rekurentní vztah Tn+1(x) = 2xTn(x) - Tn-1(x). Je T0(x) = 1, T1(x) = x, T2(x) = 2x2 - 1, . . . c) Polynomy Tn jsou řešením diferenciální rovnice (1 - x2 )y - xy + n2 y = 0. S těmito polynomy jsme se již setkali, když jsme hledali polynomy s nejmenší odchylkou od nuly na intervalu [-1, 1]. 3. Laguerrovy polynomy Ln jsou ortogonální na intervalu [0, ) s vahou w(x) = x e-x , > -1. Vlastnosti: a) Ortogonalita 0 x e-x Ln(x, )Lm(x, ) dx = 0 pro n = m, ( + n + 1) n! pro n = m, (8.4) kde je gamma funkce. b) Platí rekurentní vztah Ln+1(x, ) = 2n + + 1 - x n + 1 Ln(x, ) n + n + 1 Ln-1(x, ) Je L0(x, ) = 1, L1(x, ) = -x + + 1, . . . c) Polynomy Ln jsou řešením diferenciální rovnice xy + ( - x + 1)y + ny = 0. 220 8. ORTOGONÁLNí POLYNOMY 4. Hermitovy polynomy Hn jsou ortogonální na intervalu (-, +) s vahou w(x) = e-x2 . Vlastnosti: a) Ortogonalita - e-x2 Hn(x)Hm(x) dx = 0 pro n = m, 2n n! pro n = m. (8.5) b) Platí rekurentní vztah Hn+1(x) = 2xHn(x) - 2nHn-1(x) Je H0(x) = 1, H1(x) = 2x, H2(x) = 4x2 - 2, . . . c) Polynomy Hn jsou řešením diferenciální rovnice y - 2xy + 2ny = 0. Další vlastnosti ortogonálních polynomů pn dává následující věta. Věta 8.3. Nechť {pj} je systém polynomů ortogonálních s vahou w na intervalu [a, b]. Pak platí: 1. Nechť x1 < x2 < . . . < xn jsou kořeny polynomu pn, x0 = a, xn+1 = b. Pak každý interval [xk, xk+1], k = 0, 1, . . . , n obsahuje právě jeden kořen polynomu pn+1. 2. p n(x) pn-1(x) - p n-1(x) pn(x) > 0 x R, n 1. Důkaz lze najít v [22]. Cvičení ke kapitole 8 1. Ukažte, že funkce 0 = 1/ 2, 1(x) = (1/ ) cos x, . . . , n(x) = (1/ ) cos nx, n+1(x) = (1/ ) sin x, . . . , 2n-1(x) = (1/ ) sin(n - 1)x jsou ortogonální na [-, ] s vahou w(x) 1. (Návod: užijte trigonometrických identit pro cos(mx nx), sin(mx nx).) 2. Dokažte vztahy (8.3). 3. Dokažte, že pro každá přirozená čísla i, j platí Ti(x)Tj(x) = 1 2 [Ti+j(x) + T|i-j|(x)], kde Ti je Čebyševův polynom stupně i. Cvičení ke kapitole 8 221 -1 -0.5 0 0.5 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 n=0 n=1 n=2 n=3 n=4 x y Obr. 8.1: Legendrovy polynomy Pn 0 1 2 3 4 5 6 7 -20 -10 0 10 20 30 40 n=0 n=1 n=2 n=3 n=4 x y Obr. 8.2: Laguerrovy polynomy Ln, = 1 222 8. ORTOGONÁLNí POLYNOMY -1 -0.5 0 0.5 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 n=0 n=1 n=2 n=3 n=4 x y Obr. 8.3: Čebyševovy polynomy Tn -2 -1 0 1 2 -30 -20 -10 0 10 20 30 n=0 n=1 n=2 n=3 n=4 x y Obr. 8.4: Hermitovy polynomy Hn Kontrolní otázky ke kapitole 8 223 Kontrolní otázky ke kapitole 8 1. Nechť {0, . . . , n} je ortogonální systém funkcí na intervalu [a, b] s vahou w. Je tento systém lineárně nezávislý? 2. Tvoří ortogonální polynomy pn,. . . ,p0 definované ve větě 8.1 Sturmovu po- sloupnost? 224 8. ORTOGONÁLNí POLYNOMY Kapitola 9 Numerické integrování § 9.1. Kvadraturní formule, stupeň přesnosti, chyba Zabývejme se přibližným výpočtem integrálu I(f) = b a f(x) dx. (9.1) Z definice Riemannova integrálu a z jeho geometrického významu plyne, že je přirozené hledat aproximaci tohoto integrálu ve tvaru I(f) n i=0 Aif(xi), (9.2) kde body xi [a, b], i = 0, 1, . . ., n, a reálná čísla Ai, i = 0, 1, . . ., n, nezávisí na f. Definice 9.1. Výraz Q(f) = n i=0 Aif(xi) (9.3) budeme nazývat kvadraturní formulí, čísla Ai, i = 0, 1, . . ., n, koeficienty kvadraturní formule a navzájem různé body xi, i = 0, 1, . . ., n, uzly kvadraturní formule. Poznámka 1. Mějme integrál I = 1 -1 dx (1 + x2) 1 - x2 . Počítejme tento integrál pomocí formule (9.2). V případě, že body -1, 1 jsou uzly kvadraturní formule, nemůžeme tuto formuli použít, neboť integrand má singularity v těchto bodech. V tomto případě lze vhodně vyjádřit integrand pomocí vahové funkce (kap. 8) takto I = 1 -1 w(x) (1 + x2) dx, w(x) = 1 1 - x2 . 226 9. NUMERICKÉ INTEGROVÁNí Pro výpočet tohoto integrálu užijeme opět formule tvaru 1 -1 w(x) (1 + x2) dx n i=0 Ai 1 (1 + x2 i ) . Singularitu integrandu jsme tedy zahrnuli do vahové funkce, jejíž funkční hodnoty nevystupují explicitně v kvadraturní formuli. Myšlenku použití vahových funkcí v integrandu lze zobecnit a z tohoto důvodu se budeme obecně zabývat problémem aproximace integrálu I(f) = b a w(x)f(x) dx (9.4) formulí tvaru (9.3), tj. b a w(x)f(x) dx n i=1 Aif(xi). (9.5) Vahovou funkci je rovněž vhodné zavést v případech, kdy počítáme celou řadu podobných integrálů a do funkce w můžeme zahrnout část společnou všem integrandům. Kvadraturní formule jsou většinou odvozeny integrací interpolačního polynomu a z tohoto důvodu je vhodné vybrat vahovou funkci tak, aby funkci f bylo možné dobře aproximovat interpolačním polynomem. Ve formuli (9.5) vystupují uzly a koeficienty. Vzniká tedy otázka, jak vybrat tyto parametry. Jaké je kritérium přesnosti, tj. pro které funkce nastane ve vztahu (9.2) resp. (9.5) rovnost? Jaká je chyba této aproximace? Rozdíl R(f) = b a w(x)f(x) dx - n i=0 Aif(xi) (9.6) budeme nazývat chybou kvadraturní formule. Obecný tvar chyby zde nebudeme uvádět, ale u každé kvadraturní formule, kterou se budeme zabývat, uvedeme příslušný tvar chyby. Elegantní důkaz obecného tvaru chyby podal G. Peano (viz např [5], [8]). Definice 9.2. Řekneme, že kvadraturní formule Q(f) = n i=0 Aif(xi) má stupeň přesnosti N, jestliže R(xj ) = 0, j = 0, 1, . . ., N, R(xN+1 ) = 0. (9.7) Poznámka 2. V této definici se jedná o algebraický stupeň přesnosti, ne o chybu kvadraturní formule. § 9.1. Kvadraturní formule, stupeň přesnosti, chyba 227 Příklad 9.1. Určete stupeň přesnosti kvadraturní formule Q(f) = f() + f(-), 0 < 1 pro výpočet integrálu 1 -1 f(x)dx. Řešení: Pro funkci f(x) = x0 je R(x0 ) = 1 -1 1dx - (1 - 1) = 0. Je-li f(x) = x, pak R(x) = 1 -1 xdx - ( - ) = 0. Dále R(x2 ) = 1 -1 x2 dx - (2 + (-)2 ) = 2 3 - 22 . Je-li 2 = 1 3 , pak má kvadraturní formule stupeň přesnosti roven jedné. Pro = 3 3 je R(x3 ) = 1 -1 x3 dx - (( 3 3 )3 + (- 3 3 )3 ) = 0, R(x4 ) = 1 -1 x4 dx - (( 3 3 )4 + (- 3 3 )4 ) = 0. Pro = 3 3 je stupeň přesnosti kvadraturní formule roven třem. Věta 9.1. Kvadraturní formule užívající n + 1 uzlů má stupeň přesnosti nejvýše 2n + 1. Důkaz. Předpokládejme, že kvadraturní formule Q(f) = n i=0 Aif(xi) pro výpočet integrálu (9.4) má stupeň přesnosti 2n + 2. Nechť xi, i = 0, 1, . . . , n, jsou uzly kvadraturní formule. Položme 2 n+1(x) = (x - x0)2 . . . (x - xn)2 , 2 n+1 je polynom stupně 2n + 2. Počítejme nyní chybu kvadraturní formule pro výpočet integrálu b a 2 n+1(x)w(x) dx: R(2 n+1) = b a w(x) 2 n+1(x) dx - n i=0 Ai2 n+1(xi) = b a 2 n+1(x)w(x) dx, 228 9. NUMERICKÉ INTEGROVÁNí neboť 2 n+1(xi) = 0, i = 0, 1, . . . , n. Jelikož předpokládáme, že N = 2n + 2, plyne z tohoto vztahu: R(2 n+1) = b a 2 n+1(x)w(x) dx = 0. Toto je spor, neboť integrál z nezáporné funkce se nemůže rovnat nule. Stupeň přesnosti kvadraturní formule je tedy nejvýše 2n + 1. 2 Poznámka 3. Funkce uvedená v příkladu 9.1 má pro = 3/3 maximální stupeň přesnosti. Věta 9.2. Kvadraturní formule získaná integrací interpolačního polynomu určeného body (xi, f(xi)), i = 0, . . . , n, má stupeň přesnosti alespoň n. Důkaz. Nechť Pn n je Lagrangeův tvar interpolačního polynomu funkce f v bodech xi, i = 0, 1, . . . , n: Pn(x) = n i=0 li(x)f(xi). Pak f(x) = Pn(x) + E(x) = n i=0 li(x)f(xi) + n+1(x) (n + 1)! f(n+1) (), = (x). Vynásobme tuto identitu vahovou funkcí w a integrujme v mezích od a do b: b a w(x)f(x) dx = n i=0 f(xi) b a w(x)li(x) dx + + 1 (n + 1)! b a w(x) n+1(x)f(n+1) () dx. Položme Ai = b a w(x)li(x) dx, i = 0, 1, . . . , n. Z předchozího vztahu plyne, že integrál I(f) = b a w(x)f(x) dx je aproximován kvadraturní formulí Q(f) = n i=0 Aif(xi) s chybou R(f) = 1 (n + 1)! b a w(x) n+1(x)f(n+1) () dx. § 9.1. Kvadraturní formule, stupeň přesnosti, chyba 229 Ve vyjádření chyby vystupuje (n+1)ní derivace funkce f, tzn. že chyba kvadraturní formule bude rovna nule pro funkce 1, x, . . . , xn a stupeň přesnosti bude alespoň n. 2 Příklad 9.2. Ukážeme, že formuli v příkladě 9.1 lze získat integrací interpolačního polynomu: Nechť P1 1 je interpolační polynom pro funkci f v uzlech -, : P1(x) = x - -2 f(-) + x + 2 f() . Integrací dostaneme 1 -1 P1(x)dx = f(-) -2 1 -1 (x - )dx + f() 2 1 -1 (x + )dx = f(-) + f() . Poznámka 4. Jsou-li dány uzly kvadraturní formule x0, . . . , xn, xi = xk pro i = k, můžeme vždy najít koeficienty A0, . . . , An tak, aby stupeň přesnosti byl roven n, neboť systém rovnic n i=0 Aixk i = b a xk w(x)dx, k = 0, . . . , n má právě jedno řešení. Pro dané uzly existuje tedy právě jedna posloupnost koeficientů A0, . . . , An. Na druhé straně můžeme tyto koeficienty získat integrací interpolačního polynomu a chyba kvadraturní formule je v takovém případě dána vztahem R(f) = 1 (n + 1)! b a w(x)n+1(x)f(n+1) ()dx . V závislosti na vlastnostech uzlů a vahové funkce lze tento integrál dále upravit (např. metodou per partes) tak, že ve vyjádření chyby bude vystupovat f(N+1) (), kde N je stupeň přesnosti dané formule. Věta 9.3. Nechť vahová funkce w je sudá vzhledem ke středu s intervalu [a, b] a nechť uzly xi, i = 0, 1, . . ., n, jsou symetricky rozloženy vzhledem ke středu s. Pak koeficienty kvadraturní formule (získané integrací interpolačního polynomu v uzlech xi, i = 0, . . . , n) odpovídající symetrickým uzlům jsou stejné, tj. Ai = An-i, i = 0, 1, . . . , n. (9.8) Důkaz lze najít např. v [1]. 230 9. NUMERICKÉ INTEGROVÁNí Uvažujme takovou ,,symetrickou kvadraturní formuli. Tato formule bude přesná pro libovolnou funkci f lichou vzhledem ke středu s intervalu [a, b]. Pro takovou funkci je totiž b a w(x)f(x) dx = 0 a na druhé straně Q(f) = n i=0 Aif(xi) = 0, neboť f(xi) = -f(xn-i), Ai = An-i, i = 0, 1, . . ., n. Nechť nyní (n + 1), tj. počet uzlů této symetrické kvadraturní formule, je číslo liché. Tato formule bude zřejmě přesná i pro polynom Pn+1(x) = x a + b 2 n+1 , neboť Pn+1 je lichá funkce vzhledem ke středu s = (a + b)/2. Podle předchozí věty víme, že kvadraturní formule odvozená integrací interpolačního polynomu má stupeň přesnosti alespň n. Ukážeme nyní, že tato symetrická kvadraturní formule má pro (n + 1) liché stupeň přesnosti alespoň n + 1. Je totiž b a Pn+1(x)w(x) dx = n i=0 AiPn+1(xi), kde Pn+1(x) = (x - 1 2 (a + b))n+1 . Dále b a Pn+1(x)w(x) dx = b a xn+1 w(x) dx - b a n j=0 djxj w(x) dx = = n i=0 Aixn+1 i - n i=0 Ai n j=0 djxj i . Stupeň přesnosti kvadraturní formule je alespoň n, a proto b a n j=0 djxj w(x) dx = n i=0 Ai n j=0 djxj i . A odtud plyne b a xn+1 w(x) dx = n i=0 Aixn+1 i , a to znamená, že stupeň přesnosti kvadraturní formule je alespoň n + 1. § 9.2. Gaussovy kvadraturní formule 231 Zabývejme se nyní otázkou výběru uzlů a koeficientů kvadraturní formule. V praxi jsou často uzly dány vnějšími okolnostmi nebo se užívá ekvidistantních uzlů. Ale na volbu uzlů a koeficientů se také můžeme dívat z hlediska stupně přesnosti. Formulujme nyní nejčastější požadavky na uzly a koeficienty kvadraturní formule: a) nejsou předem dána žádná omezení ani na uzly ani na koeficienty kvadraturní formule, b) jsou předepsány všechny uzly, obvykle ekvidistantní, c) jsou předepsány pouze některé uzly, např. koncové body intervalu nebo body, v nichž je chování funkce význačné, d) požaduje se rovnost všech koeficientů. § 9.2. Gaussovy kvadraturní formule Zabývejme se nejdříve případem, kdy nejsou dána žádná omezení ani na uzly ani na koeficienty kvadraturní formule. Je zde tedy problém: můžeme vybrat uzly a koeficienty tak, aby bylo dosaženo maximálního stupně přesnosti? Na tuto otázku dává odpověď následující věta: Věta 9.4. Nechť kvadraturní formule Q(f) = n i=0 Aif(xi) pro výpočet integrálu (9.4) má stupeň přesnosti alespoň n. Nechť {pn}, pn n, n = 0, 1, . . . tvoří ortogonální systém na intervalu [a, b] vzhledem k vahové funkci w. Pak tato formule má stupeň přesnosti 2n+1 právě tehdy, když uzly této kvadraturní formule jsou kořeny polynomu pn+1 n+1. Důkaz. Nechť kvadraturní formule Q(f) má stupeň přesnosti 2n + 1. Definujme polynom n+1 n+1 vztahem n+1(x) = n i=0 (x - xi), kde xi, i = 0, 1, . . . , n, jsou uzly dané kvadraturní formule. Podle předpokladu je kvadraturní formule přesná i pro polynom unn+1, kde un n je libovolný polynom. Je tedy b a n+1(x)un(x)w(x) dx = n i=0 Ai n+1(xi)un(xi). 232 9. NUMERICKÉ INTEGROVÁNí Pravá strana této rovnosti je rovna nule, neboť n+1(xi) = 0, i = 0, 1, . . . , n, a tedy pro libovolný polynom un n platí b a w(x) n+1(x)un(x) dx = 0. Polynom n+1 je ortogonální s vahou w ke všem polynomům ze třídy n, tzn. že polynom n+1 je totožný s polynomem pn+1, který náleží systému polynomů {pn} ortogonálních s vahou w na intervalu [a, b], pn n, (věta 8.1 a její důsledek). Uvažujme nyní systém {pn} polynomů ortogonálních s vahou w na intervalu [a, b]. Sestrojme kvadraturní formuli, jejíž uzly jsou kořeny ortogonálního polynomu pn+1. Z věty 8.2 víme, že všechny kořeny tohoto polynomu jsou reálné, navzájem různé a všechny leží v (a, b). Uvažujme formuli mající stupeň přesnosti alespoň n. Takovou formuli lze snadno sestrojit integrací interpolačního polynomu (viz věta 9.2). Nechť Q(f) je taková formule a ukážeme, že má stupeň přesnosti 2n + 1. Nechť P2n+1 2n+1 je libovolný polynom stupně 2n + 1. Zřejmě můžeme tento polynom zapsat ve tvaru P2n+1(x) = pn+1(x)un(x) + rn(x), kde un je podíl při dělení P2n+1/pn+1 a rn je zbytek při tomto dělení. Je zřejmě rn, un n. Aplikujme nyní na P2n+1 sestrojenou kvadraturní formuli a vypočtěme chybu aproximace integrálu R(P2n+1) = b a w(x)P2n+1(x) dx - n i=0 AiP2n+1(xi) = = b a w(x)un(x)pn+1(x) dx - n i=0 Aiun(xi)pn+1(xi) + + b a w(x)rn(x) dx - n i=0 Airn(xi) . Výraz v první závorce je roven nule, neboť polynom pn+1 je ortogonální s vahou w k polynomu un a navíc pn+1(xi) = 0, i = 0, . . . , n, neboť uzly kvadraturní formule jsou kořeny polynomu pn+1. Výraz v druhé závorce je rovněž roven nule, neboť stupeň přesnosti kvadraturní formule je alespoň n. Odtud plyne R(P2n+1) = 0 pro libovolný polynom z 2n+1 a tedy stupeň přesnosti kvadraturní formule je 2n + 1. 2 Definice 9.3. Kvadraturní formule, jejichž uzly a koeficienty jsou vybrány tak, aby bylo dosaženo maximálního stupně přesnosti, se nazývají Gaussovy kvadraturní formule. Uvedená věta uvádí podmínky pro uzly kvadraturní formule. Vlastnosti koeficientů této kvadraturní formule jsou obsaženy implicitně v předpokladu, že stupeň § 9.2. Gaussovy kvadraturní formule 233 přesnosti je alespoň n. Formule se stupněm přesnosti n můžeme snadno sestrojit integrací interpolačního polynomu (věta 9.2). Koeficienty můžeme tedy spočítat takto (viz poznámka 4): Ai = b a w(x)li(x) dx, i = 0, 1, . . . , n, (9.9) kde xi, i = 0, 1, . . ., n, jsou kořeny ortogonálního polynomu, pn+1(x) n+1(x), li(x) = pn+1(x) p n+1(xi)(x - xi) , i = 0, 1, . . . , n, jsou příslušné fundamentální polynomy v Lagrangeově interpolačním polynomu. Jiný způsob výpočtu koeficientů vychází přímo z definice stupně přesnosti. Požadujeme-li totiž, aby kvadraturní formule měla stupeň přesnosti n, pak musí být splněny podmínky: b a w(x)xk dx = n i=0 Aixk i , k = 0, 1, . . ., n. (9.10) Víme, že všechny uzly xi, i = 0, 1, . . . , n, jsou reálné, různé a všechny leží v (a, b). Odtud plyne, že determinant soustavy, tzv. Vandermondův, je různý od nuly a soustava má jediné řešení, a tedy Gaussova kvadraturní formule je určena jedno- značně. Věta 9.5. Pro koeficienty Gaussovy kvadraturní formule platí a) Ai > 0, i = 0, 1, . . . , n, b) n i=0 Ai = b a w(x) dx. Důkaz. a) Gaussovy kvadraturní formule mají stupeň přesnosti 2n + 1 a jsou přesné i pro polynomy l2 j , j = 0, 1, . . ., n, což jsou polynomy stupně 2n: l2 j (x) = pn+1(x) p n+1(xj)(x - xj) 2 . Pro výpočet integrálu I(l2 j ) = b a w(x)l2 j (x) dx tedy platí b a w(x)l2 j (x) dx = n i=0 Ail2 j (xi). Jelikož lj(xi) = ij, i, j = 0, 1, . . . , n, plyne odtud Aj = b a w(x)l2 j (x) dx > 0, j = 0, 1, . . ., n. (9.11) 234 9. NUMERICKÉ INTEGROVÁNí Navíc porovnáním vztahů (9.9) a (9.11) dostáváme zajímavou rovnost b a w(x)l2 j dx = b a w(x)lj(x) dx, j = 0, 1, . . ., n. (9.12) b) Aplikací Gaussovy kvadraturní formule na funkci f(x) 1, pro kterou je samozřejmě kvadraturní formule přesná, ihned dostaneme b a w(x) dx = n i=0 Ai. 2 Věta 9.6. Nechť f C(2n+2) [a, b]. Chybu Gaussovy kvadraturní formule lze vyjádřit ve tvaru R(f) = f(2n+2) () (2n + 2)! b a w(x)p2 n+1(x) dx, (a, b), (9.13) kde n+1(x) = pn+1(x) x. Důkaz. Funkci f vyjádříme pomocí Hermitova interpolačního polynomu P2n+1 2n+1 splňujícího podmínky P2n+1(xi) = f(xi), i = 0, 1, . . ., n, P 2n+1(xi) = f (xi), i = 0, 1, . . ., n, kde xi, i = 0, 1, . . ., n, jsou uzly Gaussovy kvadraturní formule. Podle kapitoly 8 víme, že funkci f lze pomocí tohoto polynomu vyjádřit ve tvaru f(x) = P2n+1(x) + E(x), kde P2n+1(x) = n i=0 hi(x)f(xi) + n i=0 hi(x)f (xi), E(x) = p2 n+1(x) (2n + 2)! f(2n+2) (), = (x). Připomínáme, že v tomto případě n+1(x) = pn+1(x), pn+1 je ortogonální polynom (s vahou w na [a, b]). Užijeme nyní tohoto vyjádření při výpočtu chyby kvadraturní formule: R(f) = b a w(x)f(x) dx - n i=0 Aif(xi) = = b a P2n+1(x)w(x) dx - n i=0 AiP2n+1(xi) + + b a E(x)w(x) dx - n i=0 AiE(xi) . § 9.2. Gaussovy kvadraturní formule 235 Výraz v první závorce je roven nule, neboť formule má stupeň přesnosti 2n + 1; dále E(xi) = 0, i = 0, 1, . . . , n, neboť pn+1(xi) = 0, i = 0, 1, . . . , n. Odtud plyne R(f) = b a w(x)p2 n+1(x) (2n + 2)! f(2n+2) () dx. Funkce f C(2n+2) [a, b] a funkce wp2 n+1 je nezáporná a integrovatelná v [a, b]. Lze tedy užít druhé věty o střední hodnotě integrálu1 . Výsledkem je následující tvar chyby Gaussovy kvadraturní formule: R(f) = f(2n+2) () (2n + 2)! b a w(x)p2 n+1(x) dx, (a, b). 2 Popišme nyní podrobněji konstrukci Gaussových formulí pro případ [a, b] = [-1, 1] a w(x) = 1 x [-1, 1]. To znamená, že hledáme Gaussovu formuli pro výpočet integrálu 1 -1 f(x) dx. Polynomy, které jsou ortogonální na intervalu [-1, 1] s vahou w(x) 1, se nazývají Legendrovy polynomy (viz kap. 8) a označujeme je Pn. Z rekurentního vztahu Pn+1(x) = 2n + 1 n + 1 xPn(x) - n n + 1 Pn-1(x), n = 1, 2, . . . P0(x) = 0, P1(x) = x, plyne, že je-li stupeň polynomu Pn číslo sudé, obsahuje Pn pouze sudé mocniny x, je-li stupeň polynomu číslo liché, obsahuje polynom pouze liché mocniny x. Odtud dále plyne, kořeny polynomu Pn jsou symetricky rozloženy vzhledem k bodu 0. Uzly xi, i = 0, 1, . . ., n, Gaussovy kvadraturní formule jsou kořeny Legendreova polynomu Pn+1 a koeficienty lze spočítat takto ([19]): Ai = 2(1 - xi)2 (n + 1)2(Pn(xi))2 , i = 0, 1, . . . , n. (9.14) Výsledná formule je tvaru 1 -1 f(x) dx = n i=0 Aif(xi) + f(2n+2) () (2n + 2)! 1 -1 n i=0 (x - xi)2 dx, (-1, 1). (9.15) Tato formule se nazývá Gaussova-Legendreova kvadraturní formule. 1Druhá věta o střední hodnotě integrálu ­ někdy se také nazývá zobecněná věta o střední hodnotě integrálu: Nechť C[a, b], integrovatelná v [a, b] a nemění znaménko v [a, b]. Pak existuje bod (a, b), že Z b a (x)(x) dx = () Z b a (x) dx. 236 9. NUMERICKÉ INTEGROVÁNí Legendrovy polynomy uvedené v předchozí kapitole splňují vztah 1 -1 P2 n(x) dx = 2 2n + 1 . Tyto polynomy nemají koeficient 1 u nejvyšší mocniny. Položme nyní pn(x) = 1 an Pn(x), kde an je koeficient u xn v polynomu Pn. Pak 2 2n + 1 = 1 -1 P2 n(x) dx = a2 n 1 -1 p2 n(x) dx. Odtud 1 -1 p2 n(x) dx = 2 (2n + 1)a2 n . Lze ukázat [19], [21], že an = (2n)! 2n(n!)2 . A z toho plyne, že chyba Gaussovy-Legendrovy formule může být vyjádřena ve tvaru R(f) = f(2n+2) () (2n + 2)! 2 2(n + 1) + 1 2n+1 ((n + 1)!)2 (2(n + 1))! 2 . Podobným postupem lze vyjádřit chybu i pro další kvadraturní formule. Výpočet integrálu na libovolném intervalu [a, b] lze vhodnou substitucí převést na výpočet na intervalu [-1, 1] a poté použít formule (9.15). Příklad 9.3. Odvoďte Gaussovu-Legendrovu formuli ve tvaru 1 -1 f(x)dx A0f(x0) + A1f(x1) . Řešení. Legendrův polynom druhého stupně je tvaru P2(x) = 3 2 x2 - 1 2 . Jeho kořeny jsou x0 = - 3/3, x1 = 3/3, a to jsou dva uzly kvadraturní formule. Nejprve spočítáme koeficienty kvadraturní formule integrací interpolačního polynomu. Užijeme vzorce (9.9), kde w(x) 1 a l0(x) = x - 3 3 -2 3 3 , l1(x) = x + 3 3 2 3 3 . § 9.2. Gaussovy kvadraturní formule 237 Koeficienty A0 = 1 -1 l0(x)dx = 1, A1 = 1 -1 l1(x)dx = 1 . Výsledná formule je tedy tvaru 1 -1 f(x)dx = f(- 3 3 ) + f( 3 3 ) + R(f) . (9.16) Samozřejmě, že koeficienty A0, A1 můžeme určit také řešením systému (9.10): A0 + A1 = 1 -1 1dx = 2 -A0 3 3 + A1 3 3 = 1 -1 xdx = 0 Odtud pak ihned plyne, že A0 = A1 = 1. Příklad 9.4. Ukážeme ještě jeden způsob konstrukce Gaussových formulí. Uvažujme formuli Q(f) = A0f(x0) + A1f(x1) pro výpočet integrálu 1 -1 f(x)dx. Víme, že taková kvadraturní formule může mít nejvýše stupeň přesnosti 2n + 1, což je v našem případě 3 (viz věta 9.1). Podmínky pro dosažení tohoto stupně přesnosti jsou dány rovnicemi R(xk ) = 0, k = 0, 1, 2, 3, tj. A0 + A1 = 1 -1 1dx = 2 A0x0 + A1x1 = 1 -1 xdx = 0 A0x2 0 + A1x2 1 = 1 -1 x2 dx = 2 3 A0x3 0 + A1x3 1 = 1 -1 x3 dx = 0 . Uzly x0, x1 jsou kořeny polynomu 2(x) = (x - x0)(x - x1) = x2 + a1x + a2. Je třeba určit koeficienty A1, A2. Postup je následující: 238 9. NUMERICKÉ INTEGROVÁNí Vynásobíme první z výše uvedených rovnic a2, druhou a1 třetí jedničkou a sečteme je. Pak druhou rovnici vynásobíme a2, třetí a1 čtvrtou jedničkou a opět sečteme: a2(A0 + A1) + a1(A0x0 + A1x1) + A0x2 0 + A1x2 1 = 2a2 + 2 3 a2(A0x0 + A1x1) + a1(A0x2 0 + A1x2 1) + A0x3 0 + A1x3 1 = 2 3 a1 . Víme, že x2 i + a1xi + a2 = 0, i = 0, 1, a proto jsou levé strany těchto rovnic rovny nule: 0 = 2a2 + 2 3 a2 = - 1 3 0 = a1 . Pak polynom 2(x) = x2 - 1 3 , odtud x0 = - 3 3 , x1 = 3 3 . Koeficienty A0, A1 získáme z prvních dvou rovnic: A0 = A1 = 1. Poznámka 5. Víme, že chyba Gaussovy kvadraturní formule může být vyjádřena ve tvaru R(f) = f(2n+2) () (2n + 2)! b a w(x)p2 n+1(x) dx. Veličina b a w(x)p2 n+1(x)dx nezávisí na volbě funkce f. Je tedy pro všechny funkce stejná. Vypočtěme nyní chybu kvadraturní formule pro funkci f(x) = x2n+2 . Tato chyba je tvaru R(x2n+2 ) = b a w(x)x2n+2 dx - n i=0 Aix2n+2 i . Z výše uvedeného vztahu plyne, že pro f(x) = x2n+2 je R(x2n+2 ) = (2n + 2)! (2n + 2)! b a w(x)p2 n+1(x) dx a odtud b a w(x)p2 n+1(x) dx = R(x2n+2 ). Výraz pro chybu Gaussovy kvadraturní formule můžeme zapsat takto: R(f) = f(2n+2) () (2n + 2)! R(x2n+2 ). Tedy např. pro Gaussovu-Legendrovu formuli pro n = 1 je R(f) = f(4) () 4! R(x4 ), (-1, 1) § 9.2. Gaussovy kvadraturní formule 239 kde R(x4 ) = 1 -1 x4 dx - - 3 3 4 + 3 3 4 = 8 45 a odtud R(f) = 1 135 f(4) (). Poznámka 6. Nejjednodušší Gaussova-Legendreova formule je tvaru: 1 -1 f(x)dx = 2f(0) + f () 3 . (9.17) Zde totiž n = 0, Legendrův polynom P1(x) = x má kořen x0 = 0 a pak A0 = 1 -1 l0(x)dx = 1 -1 1dx = 2 . Výpočet chyby R(f) v tomto případě: Je R(x2 ) = 2/3 a odtud R(f) = 1 2 2 3 f () = 1 3 f (), (-1, 1). Jak už jsme se zmínili dříve, obecný tvar chyby kvadraturních formulí dokázal G. Peano. Ukážeme nyní na příkladě Gaussovy-Legendrovy formule myšlenku tohoto důkazu. Mějme formuli 1 -1 f(x)dx = f - 3 3 + f 3 3 + R(f) . Jedná se o Gaussovu-Legendrovu formuli pro n = 1. Víme, že stupeň přesnosti této formule je N = 3. Předpokládejme, že f C4 [-1, 1]. Uvažujme Taylorův rozvoj funkce f v okolí bodu x = -1 ve tvaru f(x) = f(-1) + f (-1)(x + 1) + f (-1) 2 (x + 1)2 + f (-1) x! (x + 1)3 + r3(x) , kde zbytek r3(x) je zapsán v integrálním tvaru r3(x) = 1 3! x -1 f(4) (t)(x - t)3 dt . 240 9. NUMERICKÉ INTEGROVÁNí Funkci f můžeme nyní zapsat takto f(x) = P3(x) + r3(x), P3 3 . Aplikujeme nyní na takto vyjádřenou funkci danou kvadraturní formuli a počítejme chybu: R(f) = 1 -1 f(x)dx - f - 3 3 + f 3 3 = = 1 -1 P3(x)dx - P3 - 3 3 + P3 3 3 + + 1 -1 r3(x)dx - r3 - 3 3 + r3 3 3 . Výraz v první závorce je roven nule, neboť stupeň přesnosti kvadraturní formule je N = 3, a tedy R(f) = 1 3! 1 -1 x -1 f(4) (t)(x - t)3 dt dx- - 1 3! - 3 3 -1 f(4) (t) - 3 3 - t )3 dt + 3 3 -1 f(4) (t) 3 3 - t )3 dt . Definujme nyní funkci (x - t)3 + jako funkci proměnné t takto: (x - t)3 + = (x - t)3 x t 0 x < t . Na obrázku 9.1 vidíme průběh funkcí (- 3 3 - t)3 + a ( 3 3 - t)3 +. Tyto funkce se někdy nazývají ,,useknuté mocniny a zavedli jsme je proto, aby integrační meze v předchozím vyjádření byly konstanty, což pak umožní další výpočet. Máme tedy integrál R(f) = 1 3! 1 -1 1 -1 f(4) (t)(x - t)3 +dt dx- - 1 3! 1 -1 f(4) (t) - 3 3 - t 3 + dt + 1 -1 f(4) (t) 3 3 - t 3 + dt . § 9.2. Gaussovy kvadraturní formule 241 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 -3/3 3/3 Obr. 9.1: Funkce (- 3 3 - t)3 + a ( 3 3 - t)3 +. Integrační meze jsou konstanty a můžeme zaměnit pořadí integrace v prvním in- tegrálu. R(f) = 1 3! 1 -1 f(4) (t) 1 -1 (x - t)3 +dx dt- - 1 3! 1 -1 f(4) (t) - 3 3 - t 3 + dt + 1 -1 f(4) (t) 3 3 - t 3 + dt = = 1 3! 1 -1 f(4) (t) 1 -1 (x - t)3 +dx - - 3 3 - t 3 + - 3 3 - t 3 + dt . Výraz Rx((x - t)3 +) = 1 -1 (x - t)3 +dx - - 3 3 - t 3 + - 3 3 - t 3 + je chyba dané kvadraturní formule pro funkci (x) = (x - t)4 +. Položme nyní K(t) = 1 3! Rx((x - t)3 +) a chybu kvadraturní formule můžeme zapsat ve tvaru R(f) = 1 -1 f(4) (t)K(t)dt , kde K je Peanovo jádro. 242 9. NUMERICKÉ INTEGROVÁNí Podívejme se nyní na vlastnosti funkce K: K(t) = 1 3! 1 -1 (x - t)3 +dx - - 3 3 - t 3 + - 3 3 - t 3 + . Z vlastností funkce (x - t)3 + plyne, že 1 -1 (x - t)3 +dx = 1 t (x - t)3 dx = (1 - t)4 4 . Pro funkci K platí: K(t) = 1 3! (1 - t)4 4 - - 3 3 - t 3 + - 3 3 - t 3 + . Vyšetřeme nyní chování této funkce postupně na intervalech [-1, - 3/3], [- 3/3, 3/3], [ 3/3, 1]. (1) t [-1, - 3/3] K(t) = 1 3! (1-t)4 4 + + 3 3 + t 3 - 3 3 - t 3 = (1+t)4 24 (2) t [- 3/3, 3/3] K(t) = 1 3! (1-t)4 4 - 3 3 - t 3 (3) t [ 3/3, 1] K(t) = (1-t)4 24 Průběh funkce K je zachycen na obrázku 9.2. Z předchozího plyne, že funkce K je integrovatelná a nemění znaménko. Pro výpočet integrálu R(f) = 1 -1 f(4) (t)K(t)dt lze použít druhé věty o střední hodnotě integrálu: R(f) = f(4) () 1 -1 K(t)dt, (-1, 1) . Nyní je možné vypočítat 1 -1 K(t)dt, ale protože tento integrál nezávisí na funkci f, lze použít postupu uvedeného v poznámce 5: R(x4 ) = 8 45 a současně R(x4 ) = 4! 1 -1 K(t)dt . § 9.2. Gaussovy kvadraturní formule 243 -1 0 1 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 -3/3 3/3 Obr. 9.2: Průběh Peanova jádra. Odtud 1 -1 K(t)dt = 1 4! 8 45 = 1 135 , takže R(f) = 1 135 f(4) () . Příklad 9.5. Užitím Gaussovy-Legendrovy formule (pro n = 3) vypočtěte integrál 1 -1 dx 1 + x2 , (přesná hodnota je 2 ). Řešení. 1 -1 dx 1 + x2 2.0,651145 1 + (0,339981)2 + 2.0,347855 1 + (0,861136)2 1,5668347. V následující tabulce jsou uvedeny uzly, koeficienty a chyba Gaussovy-Legendrovy formule pro n = 1, 2, 3. 244 9. NUMERICKÉ INTEGROVÁNí n xi Ai R(f) 1 0,577350 = 3 3 1 1 135 f(4) (1) 2 0 8 9 1 15750 f(6) (2) 0,774597 = 3 5 5 9 3 0,339981 0,651145 1 3472875 f(8) (3) 0,861136 0,347855 Obrázky 9.3 a 9.4 ilustrují geometrický význam Gaussovy-Legendrovy formule. Graf funkce je znázorněn plnou čarou a graf polynomu, který integrujeme, je znázorněn čárkovaně. -1 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 x 0 -0.7746 x 1 0 x 2 0.7746 x y Obr. 9.3: Gaussova-Legendreova kvadraturní formule, n = 2 Nechť vahová funkce w(x) = 1/ 1 - x2, [a, b] = [-1, 1]. Polynomy, které jsou ortogonální na tomto intervalu s uvedenou vahovou funkcí, jsou Čebyševovy polynomy. Kvadraturní formule pro výpočet integrálu 1 -1 1/ 1 - x2f(x)dx se nazývá Gaussova-Čebyševova kvadraturní formule. Tato formule je tvaru 1 -1 f(x) 1 - x2 dx = n i=0 Aif(xi) + 2 22(n+1)(2(n + 1)!) f(2n+2) (), -1 < < 1. Následující tabulka udává koeficienty, uzly a chybu této formule pro n = 1, 2, 3. § 9.2. Gaussovy kvadraturní formule 245 -1 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 x 0 -0.8611 x 1 -0.34 x 2 0.34 x 3 0.8611 x y Obr. 9.4: Gaussova-Legendreova kvadraturní formule, n = 3 n xi Ai R(f) 1 2 2 2 192 f(4) (1) 2 0, 3 2 3 3840 f(6) (2) 3 0,92386 0,38268 4 5160960 f(8) (3) Vidíme, že u jednotlivých formulí jsou všechny koeficienty stejné a rovné /(n + 1). Příklad 9.6. Užitím Gaussovy-Čebyševovy kvadraturní formule (n = 2) vypočtěte integrál 1 -1 dx (1 + x2) 1 - x2 (přesná hodnota je / 2). Řešení. Je 1 -1 dx (x2 + 1) 1 - x2 3 1 1 + - 3 2 2 + 1 1 + 0 + 1 1 + 3 2 2 = 5 7 . Laguerrovy polynomy jsou ortogonální na intervalu [0, ) s vahou w(x) = e-x . Kvadraturní formule pro výpočet integrálu 0 e-x f(x) dx se nazývá Gaussova- 246 9. NUMERICKÉ INTEGROVÁNí Laguerrova kvadraturní formule. Formule je tedy tvaru 0 e-x f(x) dx = n i=0 Aif(xi) + ((n + 1)!)2 (2(n + 1))! f(2n+2) (), 0 < < . V následující tabulce jsou uvedeny uzly, koeficienty a chyba této formule pro n = 1, 2, 3: xi Ai R(f) 1 0,585786 0,853553 1 6 f(4) (1) 3,414214 0,146447 2 0,415775 0,711093 1 20 f(6) (2) 2,294280 0,278512 6,289945 0,010389 3 0,322548 0,603154 1 70 f(8) (3) 1,745761 0,357419 4,536620 0,038888 9,395071 0,000539 Příklad 9.7. Užitím Gaussovy-Laguerrovy kvadraturní formule (n = 1) vypočtěte 0 x4 e-x dx, (přesná hodnota je 4!). Řešení. 0 x4 e-x dx 0,853553.(0,585786)4 + 0,146447.(3,414214)4 20,00006. Pro výpočet integrálu - e-x2 f(x) dx lze užít Gaussovy-Hermitovy kvadraturní formule. Tyto formule jsou tvaru - e-x2 f(x) dx = n i=0 Aif(xi) + (n + 1)! 2n+1(2n + 2)! f(2n+2) (), - < < . Uzly této kvadraturní formule jsou kořeny Hermitova polynomu ortogonálního na intervalu (-, ) s vahou w(x) = e-x2 . Následující tabulka uvádí uzly, koeficienty a chybu této formule: § 9.2. Gaussovy kvadraturní formule 247 n xi Ai R(f) 1 0,707107 0,886227 48 f(4) (1) 2 0 1,181636 960 f(6) (2) 1,224745 0,295409 3 0,524648 0,804914 26880 f(8) (3) 1,650680 0,081313 Příklad 9.8. Užitím Gaussovy-Hermitovy kvadraturní formule (n = 3) vypočtěte integrál |x| e-x2 dx, (přesná hodnota je rovna 1). Řešení. |x| e-x2 dx 2(0,524648.0,804914 + 1,650680.0,081313) 1,1130364. Poznámka 7. Gaussovy formule mají ještě jednu důležitou vlastnost -- s rostoucím počtem uzlů konverguje posloupnost Gaussových formulí k přesné hodnotě integrálu. Tuto vlastnost nemají všechny kvadraturní formule, obecně totiž není splněn předpoklad, že součet absolutních hodnot koeficientů je stejnoměrně ohraničený pro všechna n. Pro Gaussovy formule však tento předpoklad splněn je -- viz věta 9.5b (podrobněji viz [19], [21]). Gaussovy formule tvoří velmi důležitou třídu kvadraturních formulí. K jejich zhodnocení a použití se vrátíme v závěru této kapitoly. Ukážeme nyní na příkladech některé další zajímavé vlastnosti Gaussových for- mulí. Uvažujme integrál J = 1 -1 w(x) f(x) f(x) + f(-x) dx, (9.18) kde vahová funkce je sudá a funkce f není lichá. Počítejme tento integrál. Substituce y = -x vede na integrál J = 1 -1 w(y) f(-y) f(y) + f(-y) dy. Odtud 2J = 1 -1 w(x) f(x) f(x) + f(-x) dx + 1 -1 w(x) f(-x) f(x) + f(-x) dx = 1 -1 w(x) dx 248 9. NUMERICKÉ INTEGROVÁNí a J = 1 2 1 -1 w(x) dx. (9.19) Nechť nyní w(x) 1, pak J = 1 a vypočtěme tento integrál pomocí Gaussových-Legendrových formulí. Položme F(x) = f(x) f(x) + f(-x) . Je Q(F) = n i=0 AiF(xi) = 1 2 n i=0 Ai(F(xi) + F(-xi)) = 1 2 n i=0 Ai = 1, tj. Q(F) = J. To znamená, že Gaussova-Legendreova formule dává přesnou hodnotu integrálu. Zde jsme použili skutečnosti, že uzly xi jsou symetricky rozloženy vzhledem k bodu 0 a koeficienty odpovídající symetrickým uzlům jsou stejné (věta 9.3). A dále, víme, že pro koeficienty Gaussových formulí platí n i=0 Ai = 1 -1 w(x) dx, což znamená v případě Gaussových-Legendrových formulí n i=0 Ai = 2. Příklad 9.9. a) J = 1 -1 dx 1 + e-2x = 1 -1 ex ex + e-x dx = 1, b) J = 1 -1 dx 1 - x2(1 + e-2x) = 1 -1 ex 1 - x2(ex + e-x) dx = 2 . § 9.3. Newtonovy-Cotesovy kvadraturní formule Nyní se budeme zabývat kvadraturními formulemi, pro které jsou předepsány všechny uzly. Podrobně vyšetříme případ ekvidistantních uzlů. Nechť je tedy dáno dělení intervalu [a, b]: a = x0 < x1 < . . . < xn = b, xi = x0 + ih, i = 0, 1, . . . , n, h = (b - a)/n. § 9.3. Newtonovy-Cotesovy kvadraturní formule 249 Nechť nejdříve Pn n je Lagrangeův interpolační polynom pro body (xi, f(xi)), i = 0, 1, . . ., n. Stejným způsobem jako ve větě 9.2 dostaneme formuli b a w(x)f(x) dx = n i=0 Aif(xi) + 1 (n + 1)! b a w(x) n+1(x)f(n+1) () dx. (9.20) Čísla Ai = b a w(x)li(x) dx, i = 0, 1, . . . , n, se nazývají Cotesova čísla a jsou tabelována. Uvedená formule se nazývá Newtonova-Cotesova formule uzavřeného typu, v tomto případě integrační meze jsou uzly kvadraturní formule. Zřejmě je stupeň přesnosti této formule alespoň n. V některých případech lze vyjádření chyby zjednodušit ([1], [8], [19]). Je-li vahová funkce sudá vzhledem ke středu s = (a + b)/2 a číslo n je sudé, a protože uzly jsou v tomto případě symetricky rozloženy vzhledem ke středu s, je podle poznámky za větou 9.3 stupeň přesnosti této kvadraturní formule n + 1. To znamená, že ve vyjádření chyby bude vystupovat f(n+2) . Toho lze dosáhnout integrací per partes chybového členu (viz poznámka 4). Uvedeme nejjednodušší typy těchto formulí (w(x) 1). a) Nechť n = 1. Funkci f aproximujeme polynomem P1 1, tj. f(x) = x - a b - a f(b) x - b b - a f(a) + (x - a)(x - b) 2 f (). Integrací b a f(x) dx = b - a 2 (f(a) + f(b)) + 1 2 b a (x - a)(x - b)f () dx. Spočítejme nyní chybu R(f) = 1 2 b a (x - a)(x - b)f () dx. Za předpokladu, že f je spojitá na intervalu [a, b], lze užít druhé věty o střední hodnotě integrálu, neboť funkce u(x) = (x - a)(x - b) nemění znaménko na intervalu [a, b]. Chybu lze nyní vyjádřit takto: R(f) = f () 2 b a (x - a)(x - b) dx = (b - a)3 12 f (), a < < b. Výsledná formule je tvaru b a f(x) dx = b - a 2 (f(a) + f(b)) (b - a)3 12 f (). (9.21) Kvadraturní formule Q(f) = 1 2 (b - a)(f(a) + f(b)) je obsah lichoběžníka, a proto se tato formule nazývá lichoběžníkové pravidlo. 250 9. NUMERICKÉ INTEGROVÁNí b) Nechť n = 2. V tomto případě aproximujeme f polynomem P2 2, neboli f nahradíme parabolou. Výsledná formule je tvaru b a f(x) dx = b - a 6 f(a) + 4f a + b 2 + f(b) - 1 90 b - a 2 5 f(4) () (9.22) Toto pravidlo se nazývá Simpsonovo nebo také parabolické pravidlo. Důkaz viz cvičení. Příklad 9.10. Užitím a) lichoběžníkového, b) Simpsonova pravidla vypočtěte in- tegrál 1 0 dx 1 + x2 (přesná hodnota je 4 ). a) 1 0 dx 1 + x2 1 2 1 + 1 2 = 3 4 b) 1 0 dx 1 + x2 1 6 1 + 4 4 5 + 1 2 = 47 60 Na obrázku 9.5 vidíme průběh integrované funkce a plochy ohraničené čárkovanou křivkou, které se používají k přibližnému výpočtu integrálu lichoběžníkovým a Simpsonovým pravidlem. 0 0.5 1 0 0.5 1 0 0.5 1 0 0.5 1 Obr. 9.5: Lichoběžníkové a Simpsonovo pravidlo pro funkci f(x) = 1 1+x2 . Aproximujme nyní funkci f interpolačním polynomem v bodech x1, . . . , xn-1, tj. pouze ve ,,vnitřních uzlech intervalu [a, b]. Stejným způsobem jako dříve obdržíme formuli b a f(x)w(x) dx = n-1 i=1 Aif(xi) + 1 (n - 1)! b a w(x) n-1(x)f(n-1) () dx, § 9.3. Newtonovy-Cotesovy kvadraturní formule 251 kde Ai, i = 1, . . . , n, jsou opět Cotesova čísla. Tuto kvadraturní formuli nazýváme Newtonovou-Cotesovou formulí otevřeného typu, integrační meze nejsou uzly kvadraturní formule. Zřejmě je stupeň přesnosti této formule alespoň n - 2. Je-li opět vahová funkce sudá vzhledem k s = (a + b)/2 a n je číslo sudé, je přesnost formule n - 1. Odvodíme nyní nejjednodušší formuli tohoto typu (w(x) 1, n = 2). Vahová funkce je v tomto případě sudá a ukážeme, že přesnost této formule je 1. Funkci f aproximujeme interpolačním polynomem P0 0 v bodě ((a + b)/2, f((a + b)/2)), tj. f(x) = f a + b 2 + x a + b 2 f (), = (x), (P0(x) f((a + b)/2)). Integrujeme: b a f(x)dx = b a f a + b 2 dx + b a x a + b 2 f () dx = = (b - a)f a + b 2 + b a x a + b 2 f () dx. Vypočteme nyní chybu R(f) = b a x a + b 2 f () dx. Tento integrál budeme počítat metodou per partes a to takto: u(x) = x a t a + b 2 dt, v(x) = f () u (x) = x a + b 2 , v (x) = f () 2! [a, b], (pro výpočet v jsme užili věty 7.1). Je zřejmě u(x) = (x - a)(x - b)/2 a u(a) = u(b) = 0 a u(x) 0 pro x [a, b]. Pro náš integrál máme R(f) = [u(x)v(x)] b a - b a u(x)v (x) dx = - 1 4 b a (x - a)(x - b)f () dx. Za předpokladu, že f C2 ([a, b]), lze užít druhé věty o střední hodnotě integrálu, neboť funkce u nemění znaménko na tomto intervalu: R(f) = - f () 4 b a (x - a)(x - b) dx = (b - a)3 24 f (1), 1 (a, b). Výsledná formule b a f(x) dx = (b - a)f a + b 2 + (b - a)3 24 f (1) 252 9. NUMERICKÉ INTEGROVÁNí se nazývá obdélníkové pravidlo, neboť Q(f) = (b-a)f((a+b)/2) je obsah obdélníka o stranách (b - a) a f((a + b)/2). Příklad 9.11. Užitím obdélníkového pravidla vypočtěte 1 0 1/(1 + x2 ) dx. (přesná hodnota je /4.) Řešení. 1 0 dx 1 + x2 1 1 1 + 1/4 = 4/5. Následující tabulky ukazují přehled nejužívanějších Newtonových-Cotesových kvadraturních formulí. Newtonovy-Cotesovy formule uzavřeného typu: 1. b a f(x) dx = b - a 2 (f(a) + f(b)) (b - a)3 12 f (1), a < 1 < b 2. b a f(x) dx = b - a 6 f(a) + 4f a + b 2 + f(b) b - a 2 5 f(4) (2) 90 , a < 2 < b 3. b a f(x) dx = b - a 8 f(a) + 3f a + b - a 3 + 3f a + 2 b - a 3 + + f(b) - 3 80 b - a 3 5 f(4) (3), a < 3 < b 4. b a f(x) dx = b - a 90 7f(a) + 32f a + b - a 4 + 12f a + b - a 2 + + 32f a + 3 b - a 4 + 7f(b) b - a 4 7 8 945 f(6) (4), a < 4 < b Formule 3. se také nazývá Newtonovo pravidlo nebo pravidlo 3/8. Newtonovy-Cotesovy formule otevřeného typu: 5. b a f(x) dx = (b - a)f a + b 2 + (b - a)3 24 f (5), a < 5 < b 6. b a f(x) dx = b - a 2 f a + b - a 3 + f a + 2 b - a 3 + + b - a 3 3 f (6) 4 , a < 6 < b 7. b a f(x) dx = b - a 3 2f a + b - a 4 - f a + b - a 2 + + 2f a + 3 b - a 4 + 28 90 b - a 4 5 f(4) (7), a < 7 < b § 9.3. Newtonovy-Cotesovy kvadraturní formule 253 8. b a f(x) dx = b - a 24 11f a + b - a 5 + f a + 2 b - a 5 + + f a + 3 b - a 5 + 11f a + 4 b - a 5 + + 95 144 b - a 5 5 f(4) (8), a < 8 < b Příklad 9.12. Na závěr tohoto odstavce uvedeme zajímavý příklad. Uvažujme integrál 2 0 sin2 xdx , jehož přesná hodnota je /4. Ukážeme, že všechny Newtonovy-Cotesovy formule 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 /4 /2 Obr. 9.6: Integrace funkce f(x) = sin2 x. dávají přesnou hodnotu /4: Víme, že uzly Newtonových-Cotesových formulí jsou ekvidistantní a jsou symetricky rozloženy vzhledem ke středu s intervalu [a, b]. V našem případě s = /4. Všechny tyto formule mají stupeň přesnosti N 1, a tedy zejména pro funkci f(x) 1 platí 2 0 1dx = n i=0 Ai n i=0 Ai = 2 . Na druhé straně z vlastností funkce f(x) = sin2 x, x [0, /2] plyne opět ze symetrie uzlů vzhledem k bodu s = /4, že f(xi) + f(/2 - xi) = 1 . 254 9. NUMERICKÉ INTEGROVÁNí Zřejmě platí xi = i /2, xn-i = /2 - xi, a odtud n i=0 Aif(xi) = 1 2 n i=0 Ai(f(xi) + f(/2 - xi)) = 1 2 n i=0 Ai = 4 , neboť koeficienty odpovídající symetrickým uzlům jsou stejné. Podívejme se ještě na výpočet tohoto integrálu pomocí Gaussovy-Legendrovy formule (9.17). Nejdříve je třeba užít substituce tak, abychom daný integrál převedli na integrál s mezemi -1, 1. 2 0 sin2 xdx = y = 4 x - 1 = 4 1 -1 sin2 (y + 1) 4 dy . Nyní tato formule dá hodnotu 4 1 -1 sin2 (y + 1) 4 dy = 4 2 sin2 4 = 4 . Dostali jsme opět přesnou hodnotu. Gaussova-Legendreova formule je totiž pro případ n = 0 totožná s obdélníkovým pravidlem pro interval [-1, 1]! § 9.4. Lobattova kvadraturní formule Zmíníme se stručně o případu, kdy jsou pro kvadraturní formuli předepsány pouze některé uzly. Problematiku objasníme pro integrál I(f) = 1 -1 f(x) dx. Naším úkolem je najít kvadraturní formuli tvaru Q(f) = A0f(-1) + n-1 i=1 Aif(xi) + Anf(1). Celkový počet neznámých je 2n: uzly x1, . . . , xn-1 a koeficienty A0, A1, . . . , An. Lze očekávat, že přesnost takové formule bude 2n - 1, neboť můžeme požadovat splnění následujících podmínek: 1 -1 xk dx = A0(-1)k + n-1 i=1 Aixk i + An, k = 0, 1, . . . , 2n - 1. Nechť nyní P1 1 je interpolační polynom pro funkci f v bodech -1, 1; je zřejmě P1(x) = 1 - x 2 f(-1) + 1 + x 2 f(1). § 9.4. Lobattova kvadraturní formule 255 Daný integrál vyjádříme ve tvaru I(f) = 1 -1 P1(x) dx + 1 -1 f(x) - P1(x) 1 - x2 w(x) dx, (9.23) kde w(x) = 1 - x2 . Nyní pro výpočet druhého integrálu sestrojíme Gaussovu kvadraturní formuli s vahou w(x): 1 -1 f(x) - P1(x) 1 - x2 w(x) dx n-1 i=1 Ai f(xi) - P1(xi) 1 - x2 i . (9.24) Zde Ai jsou koeficienty Gaussovy kvadraturní formule pro vahovou funkci w(x) = 1 - x2 a x1, . . . , xn-1 jsou kořeny ortogonálního polynomu s vahou w(x) = 1 - x2 na intervalu [-1, 1]. Připomínáme, že z vlastností ortogonálních polynomů plyne, že xi = 1, i = 1, . . . , n - 1. Vypočteme-li přímo integrál v (9.23), dostaneme požadovanou kvadraturní formuli 1 -1 f(x) dx A0f(-1) + n-1 i=1 Aif(xi) + Anf(1), (9.25) kde Ai = Ai 1 - x2 i , i = 1, . . . , n - 1, A0 = 1 - n-1 i=1 Ai 1 2(1 + xi) , An = 1 - n-1 i=1 Ai 1 2(1 - xi) . Tato formule se nazývá Lobattova kvadraturní formule. Koeficienty a uzly této formule jsou tabelovány a lze je najít např. v [19]. Lze ověřit, že tato formule má přesnost 2n - 1 a chybu lze vyjádřit ve tvaru ([19]): R(f) = f(2n) () (2n)! 1 -1 2n(x) dx, (-1, 1), 2n(x) = (x2 - 1)(x - x1)2 . . . (x - xn-1)2 . (Pro odvození tohoto vztahu lze užít Hermitova interpolačního polynomu.) Příklad 9.13. Pro n = 3 je Lobattova kvadraturní formule tvaru 1 -1 f(x) dx = 1 6 f(-1) + 5f - 5 5 + 5f 5 5 + f(1) - - 2 2,3625.104 f(6) (), (-1, 1). 256 9. NUMERICKÉ INTEGROVÁNí Vypočítáme pomocí této formule integrál: 1 -1 dx 1 + x2 1 6 1 2 + 5 1 1 + - 5 5 2 + 5 1 1 + 5 5 2 + 1 2 = 1,55 Příklad 9.14. Pro výpočet integrálu 1 -1 f(x)dx najděte formuli ve tvaru Q(f) = A0f(-1) + A1f(x1) . Řešení: Lze očekávat stupeň přesnosti N 2. Z podmínek R(x0 ) = R(x1 ) = R(x2 ) = 0 plyne A0 + A1 = 2 A0(-1) + A1x1 = 0 A0(-1)2 + A1x2 1 = 2 3 . Polynom (x) = (x + 1)(x - x1) = x2 + a1x + a2 má kořeny x0 = -1, x1. Je třeba určit kořen x1. Jako u odvození Gaussovy formule vynásobíme první rovnici a2, druhou a1, třetí jedničkou a sečteme. Výsledkem je rovnice 2a2 + 2 3 = 0 . Odtud a2 = -1/3. Polynom (x) = x2 + a1x - 1/3 má kořen x0 = -1 tedy 1 - a1 - 1/3 = 0 odkud a1 = 2/3 a kořen x1 = 1/3. Koeficienty A0, A1 určíme z prvních dvou rovnic: A0 = 1/2, A1 = 3/2. Výsledná formule je tvaru Q(f) = 1 2 f(-1) + 3 2 f( 1 3 ) . Koeficienty této formule lze rovněž získat integrací interpolačního polynomu v bodech x0 = -1, x1 = 1/3. Odtud pak snadno získáme vyjádření chyby R(f) = 1 -1 (x + 1)(x - 1/3) 6 f ()dx, = (x). § 9.5. Čebyševova kvadraturní formule 257 § 9.5. Čebyševova kvadraturní formule Podívejme se nyní na kvadraturní formuli z výpočetního hlediska. Formule b a w(x)f(x) dx n i=0 Aif(xi) požadují (n+1) násobení a n sčítání. Jestliže však jsou všechny koeficienty stejné, tj. A = Ai, i = 0, 1, . . . , n, pak je třeba pouze jedno násobení a n sčítání. Kvadraturní formule tohoto typu b a w(x)f(x) dx A n i=0 f(xi) (9.26) se nazývají Čebyševovy kvadraturní formule. Tyto formule mají ještě další užitečnou vlastnost, a to: Jsou-li dány hodnoty f(xi) s chybami i, pak výsledná chyba způsobená těmito nepřesnostmi bude nejmenší právě v případě, kdy A = Ai, i = 0, 1, . . ., n. V uvedené formuli (9.26) máme k dispozici (n + 2) ,,volných parametrů -- koeficient A a uzly x0, x1, . . . , xn. Lze očekávat, že přesnost formule bude n + 1; můžeme totiž požadovat splnění rovnic b a xk w(x) dx = A n i=0 xk i , k = 0, 1, . . ., n + 1. (9.27) Z první rovnice ihned plyne A = 1 n + 1 b a w(x) dx. Ale řešit soustavu (9.27) není jednoduchá záležitost. Pro interval [-1, 1] a vahovou funkci w(x) 1 řešil tuto úlohu P. L. Čebyšev a nalezl řešení pro n = 0, 1, 2, 3, 4, 5, 6. Pro n = 7 dokázal, že uzly xi jsou komplexní čísla. Tímto problémem se rovněž zabýval S. N. Bernštejn a ukázal, že pro n > 8 nemá tato úloha řešení ([2]). Tedy pro interval [-1, 1] a vahovou funkci w(x) 1 lze sestrojit Čebyševovy formule pro n = 0, 1, 2, 3, 4, 5, 6, 8 a tyto formule jsou tvaru 1 -1 f(x) dx = 2 n + 1 n i=0 f(xi) + R(f). Chybu této formule lze vyjádřit např. užitím Peanovy věty ([8], [5]). I když Čebyševovy formule uvedeného tvaru lze sestrojit pouze pro malý počet uzlů, je tento počet dostatečný, neboť jak ukážeme dále, užíváme obvykle kvadraturních formulí nižších řádů. 258 9. NUMERICKÉ INTEGROVÁNí Příklad 9.15. Odvoďte Čebyševovu kvadraturní formuli ve tvaru 1 -1 f(x)dx A(f(x0) + f(x1) + f(x2)) . Řešení: V tomto případě může být stupeň přesnosti N 3. Ze vztahů R(x0 ) = R(x1 ) = R(x2 ) = R(x3 ) = 0 dostáváme A(x0 0 + x0 1 + x0 2) = 2 A(x0 + x1 + x2) = 0 A(x2 0 + x2 1 + x2 2) = 2 3 A(x3 0 + x3 1 + x3 2) = 0 . (9.28) Z první rovnice plyne, že A = 2/3. Nechť nyní 3(x) = (x - x0)(x - x1)(x - x2) = x3 +a1x2 +a2x+a3 je neznámý polynom, jehož kořeny jsou právě uzly x0, x1, x2. Dále první rovnici vynásobíme a3, druhou a2, třetí a1, čtvrtou jedničkou a sečteme. Výsledkem je rovnice 2a3 + 2 3 a1 = 0 . Z Newtonových vztahů mezi kořeny a koeficienty plynomu plyne: x0 + x1 + x2 = - a1 a0 , kde a0 = 1 , takže z druhé rovnice systému (9.28) plyne, že a1 = 0. Tedy také a3 = 0. Koeficient a2 určíme opět použitím Newtonových vztahů: x0x1 + x1x2 + x0x2 = a2 a0 . (9.29) Z výše uvedené soustavy rovnic plyne x0 + x1 + x2 = 0 x2 0 + x2 1 + x2 2 = 1 . Odtud (x0 + x1 + x2)2 - (x2 0 + x2 1 + x2 2) = -1 x0x1 + x1x2 + x0x2 = - 1 2 . A z (9.29) plyne, že a2 = -1/2. § 9.5. Čebyševova kvadraturní formule 259 Polynom 3 má koeficienty : a0 = 1, a1 = 0, a2 = -1/2, a3 = 0, tedy 3 = x3 - 1/2 a kořeny tohoto polynomu jsou x0 = - 2 2 , x1 = 0, x2 = 2 2 . Výsledná formule je tvaru Q(f) = 2 3 (f(- 2 2 ) + f(0) + f( 2 2 )) . Chybu této kvadraturní formule lze spočítat integrací chyby při interpolaci polynomem P2 2 v uzlech - 2/2, 2/2: R(f) = 1 3! 1 -1 x(x2 - 1 2 )f(3) ((x))dx = 1 360 f(4) () a použít podobného postupu jako při odvození chyby obdélníkového pravidla. Příklad 9.16. Užitím Čebyševovy formule 1 -1 f(x) dx = 2 3 f - 2 2 + f(0) + f 2 2 + 1 360 f(4) (), -1 < < 1, vypočtěte integrál 1 -1 dx 1 + x2 , jehož přesná hodnota je /2. Řešení. 1 -1 dx 1 + x2 2 3 1 1 + - 2 2 2 + 1 + 1 1 + 2 2 2 = 14 9 = 1,55. Pro ilustraci uvedeme ještě další formule Čebyševova typu n = 1 : 1 -1 f(x) dx = f - 3 3 + f 3 3 + 1 135 f(4) (), -1 < < 1, n = 3 : 1 -1 f(x) dx = 1 2 f - 5 + 2 3 5 + f - 5 - 2 3 5 + + f 5 - 2 3 5 + f 5 + 2 3 5 + 2 42525 f(6) (1), -1 < 1 < 1. 260 9. NUMERICKÉ INTEGROVÁNí Vidíme, že pro n = 1 dostáváme formuli totožnou s Gaussovou-Legendrovou kvadraturní formulí. Tento výsledek bylo možné očekávat a je důsledkem toho, že v této formuli jsou oba koeficienty stejné. § 9.6. Složené kvadraturní formule Uvažujme integrál 0 sin x dx, jehož přesná hodnota je 2. Vypočítejme nyní tento integrál lichoběžníkovým pra- vidlem: Q(f) = 2 (sin + sin 0) = 0. Vysvětlení spočívá v tom, že lichoběžník v tomto případě degeneruje v úsečku [0, ]. Rozdělme nyní interval [0, ] na dva subintervaly [0, /2], [/2, ] a na každém z nich aplikujme lichoběžníkové pravidlo: 0 sin x dx = 2 0 sin x dx + 2 sin x dx 4 sin 0 + sin 2 + 4 sin 2 + sin = 2 . Při rozdělení intervalu na čtyři subintervaly délky /4 dostaneme 0 sin x dx 2 + 1 4 . Uvedený postup lze aplikovat i na další typy kvadraturních formulí. Postupujeme přitom takto: Daný interval rozdělíme na M subintervalů a na každém z těchto subintervalů aplikujeme kvadraturní formuli Q(f). Tím je dána na intervalu [a, b] nová kvadraturní formule, kterou budeme nazývat složenou kvadraturní formulí a budeme psát QM (f) = Q(f). Pokud je dělení intervalu [a, b] ekvidistantní s krokem h, budeme rovněž užívat označení Qh(f), h = (b - a)/M. Nyní se budeme podrobněji zabývat složeným lichoběžníkovým pravidlem, které patří k nejužívanějším formulím tohoto typu. Nechť je dáno dělení intervalu [a, b]: a = x0 < x1 < . . . < xM = b, § 9.6. Složené kvadraturní formule 261 přičemž xi+1 -xi = h, i = 0, 1, . . . , M -1, h > 0. Na každém subintervalu [xi, xi+1] aproximujeme lichoběžníkovým pravidlem integrál xi+1 xi f(x) dx = h 2 (f(xi) + f(xi+1)) - h3 12 f (i), xi < i < xi+1. Pro daný integrál dostaneme b a f(x) dx = M-1 i=0 xi+1 xi f(x) dx = h 2 M-1 i=0 (f(xi) + f(xi+1)) - h3 12 M-1 i=0 f (i). (9.30) Podívejme se nyní na chybu této aproximace. Je R(f) = - h3 12 M-1 i=0 f (i). (9.31) Předpokládejme, že f je spojitá v [a, b] a položme L = maxaxb f (x), l = minaxb f (x). Pak Ml M-1 i=0 f (i) ML a l 1 M M-1 i=0 f (i) L. Nyní, protože f je spojitá, musí nabývat každé hodnoty mezi svou maximální a minimální hodnotou na intervalu. Odtud plyne, že existuje takové [a, b], že f () = 1 M M-1 i=0 f (i). Když se vrátíme k vyjádřením (9.30), (9.31), lze zapsat chybu ve tvaru R(f) = (b - a)3 12M2 f () a aproximaci integrálu složeným lichoběžníkovým pravidlem b a f(x) = h 2 (f(x0) + 2f(x1) + . . . + 2f(xM-1) + f(xM ))- (b - a)3 12M2 f (), a < < b. (9.32) Tedy QM (f) = h 2 (f(x0) + 2f(x1) + . . . + 2f(xM-1) + f(xM )). 262 9. NUMERICKÉ INTEGROVÁNí -1 -0.5 0 0.5 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 x y Obr. 9.7: Složené lichoběžníkové pravidlo, f(x) = 1/(1 + x2), Q(f) = 1,55 Poznámka 8. Z tvaru chyby v (9.32) je vidět, že s rostoucím počtem intervalů konvergují aproximace k přesné hodnotě integrálu. Geometrický význam složeného lichoběžníkového pravidla ilustruje obr. 9.7, kde M = 4. Graf dané funkce je vyznačen plnou čarou, odpovídající lichoběžníky jsou vyznačeny čárkovaně. Při aplikaci složeného lichoběžníkového pravidla je výhodné položit Mk = 2k , k = 0, 1, 2, . . . a počítat postupně hodnoty formulí QMk (f), k = 0, 1, . . ., tj. na každém kroku zdvojnásobit počet subintervalů. Výhodou tohoto postupu je skutečnost, že již jednou vypočtené hodnoty funkce f se použijí ve všech dalších krocích. Tuto vlastnost obecně kvadraturní formule nemají, např. při použití složených Gaussových formulí, je třeba vždy znovu spočítat všechny funkční hodnoty. Pro toto dělení intervalu můžeme zapsat složené lichoběžníkové pravidlo ve tvaru, který je vhodný zejména pro užití na počítači. Snadno lze totiž ukázat, že QMk (f) = 1 2 QMk-1 (f) + b - a 2k-1 2k-1 i=0 f a + 2i - 1 2k (b - a) , (9.33) kde Mk = 2k , k = 0, 1, . . . Důkaz tohoto vyjádření ponecháváme do cvičení. Rozdělme nyní interval [a, b] na 2M subintervalů s dělicími body a = x0 < x1 < . . . < x2M = b, xi - xi-1 = h, h = (b - a)/2M. Na každém subintervalu délky 2h aplikujme Simpsonovo pravidlo. Výsledná formule b a f(x) dx = h 3 f(a) + 2 M-1 j=1 f(x2j) + 4 M j=1 f(x2j-1) + f(b) - § 9.6. Složené kvadraturní formule 263 b - a 180 h4 f(4) (), a < < b, se nazývá složené Simpsonovo pravidlo. Výraz pro chybu se odvodí stejným způsobem jako u složeného lichoběžníkového pravidla. -1 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 x y Obr. 9.8: Složené Simpsonovo pravidlo, f(x) = 1/(1 + x2), Q(f) = 1,5667 Obr. 9.8 ilustruje geometrický význam složeného Simpsonova pravidla pro M = 2, tj. h = 1 2 , tj. interval [-1, 1] rozdělíme na 4 subintervaly délky h = 1 2 a na 2 subintervalech délky 2h = 1 aplikujeme Simpsonovo pravidlo. Grafy dvou příslušných parabol jsou vyznačeny čárkovaně. Nyní opět uvedeme zajímavý příklad týkající se aplikace složeného lichoběžníkového pravidla. Mějme integrál K = 1 0 f(x) f(x) + f(1 - x) dx. (9.34) Obdobným způsobem jako při výpočtu integrálu (9.18) lze ukázat, že K = 1 2 . Aplikujme nyní složené lichoběžníkové pravidlo na výpočet tohoto integrálu. Položme F(x) = f(x) f(x) + f(1 - x) . Je jasné, že F(x) + F(1 - x) = 1. (9.35) Dále víme, že uzly dělení jsou ekvidistantní a xM-i = 1-xi, h = 1/M. Aplikujme nyní složené lichoběžníkové pravidlo na funkci F(x). Je QM (F) = 1 M 1 2 F(x0) + F(x1) + . . . + F(xM-1) + 1 2 F(xM ) = 264 9. NUMERICKÉ INTEGROVÁNí = 1 2M 1 2 F(x0) + F(x1) + . . . + F(xM-1) + 1 2 F(xM ) + + 1 2 F(1 - x0) + F(1 - x1) + . . . + F(1 - xM-1) + 1 2 F(x0) Vezmeme-li v úvahu (9.35), dostaneme QM (F) = 1 2M 1 2 + (M - 1) + 1 2 = 1 2 . Vidíme, že složené lichoběžníkové pravidlo dává přesnou hodnotu integrálu K. § 9.7. Adaptivní kvadraturní formule Jak jsme již uvedli, složené kvadraturní formule obvykle užívají ekvidistantního dělení intervalu. Ale tento postup není vhodný v případě, kdy integrační interval obsahuje jak subintervaly, kde funkce značně osciluje, tak také subintervaly, kde funkční hodnoty se nemění příliš rychle. To znamená, že v prvním případě je vhodný menší krok dělení, aby příslušná kvadraturní formule vhodně vystihla chování funkce, v druhém případě krok dělení může být větší. Efektivní metody, které mohou přizpůsobit délku kroku variaci funkce, se nazývají adaptivní kvadraturní formule. V systému MATLAB jsou uvedeny dvě metody tohoto typu: 1) QUAD -- adaptivní kvadraturní formule založená na Simpsonově pravidle, 2) QUAD 8 -- adaptivní kvadraturní formule založená na pravidle 3/8. Vysvětlíme stručně podstatu metody QUAD. Je třeba aproximovat integrál I(f) = b a f(x) dx s chybou menší než , > 0. Označme S(a, b) Simpsonovo pravidlo pro interval [a, b], S(a, b) = h 3 f(a) + 4f a + b 2 + f(b) , h = b - a 2 . Pak b a f(x) dx = S(a, b) - h5 90 f(4) (), a < < b. (9.36) Aplikujme nyní složené Simpsonovo pravidlo pro dva subintervaly [a, (a + b)/2], [(a + b)/2, b], tj. krok dělení je h1 = h/2 = (b - a)/4. Aproximace integrálu je nyní tvaru b a f(x) dx = h 6 f(a) + 4f a + h 2 + 2f(a + h) + 4f a + 3 2 h + f(b) - - h 2 4 b - a 180 f(4) (~), a < ~ < b. (9.37) § 9.7. Adaptivní kvadraturní formule 265 Položme S a, a + b 2 = h 6 f(a) + 4f a + h 2 + f(a + h) , S a + b 2 , b = h 6 f(a + h) + 4f a + 3 2 h + f(b) . Vztah (9.37) můžeme nyní zapsat ve tvaru b a f(x) dx = S a, a + b 2 + S a + b 2 , b - 1 16 h5 90 f(4) (~). (9.38) Předpokládejme nyní, že f(4) se příliš nemění v [a, b], tj. předpokládejme, že f(4) () f(4) (~). Za tohoto předpokladu vztahy (9.36) a (9.38) implikují S a, a + b 2 + S a + b 2 , b - 1 16 h5 90 f(4) () S(a, b) - h5 90 f(4) (). Odtud h5 90 f(4) () 16 15 S(a, b) - S a, a + b 2 - S a + b 2 , b . Užijeme-li tohoto vyjádření ve vztahu (9.38), dostaneme b a f(x) dx - S a, a + b 2 - S a + b 2 , b 1 15 S(a, b) - S a, a + b 2 - S a + b 2 , b . (9.39) Tento vztah znamená, že součet (S(a, (a+b)/2)+S((a+b)/2, b)) aproximuje daný integrál 15krát lépe než (tentýž součet) aproximuje hodnotu S(a, b). To znamená, že S(a, (a+b)/2)+S((a+b)/2, b) bude aproximovat integrál I(f) s přesností , za předpokladu, že S(a, (a + b)/2) + S((a + b)/2, b) se liší od S(a, b) o méně než 15, tj. je-li S(a, b) - S a, a + b 2 - S a + b 2 , b < 15, (9.40) pak I(f) - S a, a + b 2 - S a + b 2 , b < . (9.41) Je-li tedy splněna podmínka (9.40), je integrál aproximován s dostatečnou přes- ností. Jaká je tedy základní myšlenka programu QUAD? Testujeme, zda je splněna podmínka (9.40). Je-li splněna, je integrál aproximován s dostatečnou přesností. Jestliže podmínka (9.40) není splněna, aplikujeme výše uvedený postup na každý 266 9. NUMERICKÉ INTEGROVÁNí subinterval [a, (a + b)/2], [(a + b)/2, b] zvlášť a požadujeme, aby chyba byla na každém z těchto subintervalů menší než /2. Pak je celková chyba menší než . Je-li chyba aproximace na některém ze subintervalů větší než /2, pak se opět rozdělí tento subinterval na dva intervaly a požaduje se, aby chyba aproximace na každém z nich byla menší než /4. Postup opakujeme tak dlouho, pokud není dosaženo požadované přesnosti. Obr. 9.9 ilustruje použití adaptivní formule QUAD. Na ose x jsou vyznačeny koncové body intervalů, které odpovídají dělení při realizaci procedury QUAD, f(x) = 100 x2 sin 10 x , tolerance 0,03, Q(f) = -1,413. 1 1.5 2 2.5 3 -60 -40 -20 0 20 40 60 x y Obr. 9.9: QUAD pro výpočet integrálu 3R 1 100 x2 sin 10 x dx Program QUAD 8 je konstruován podobným způsobem založeným na pravidle 3/8. § 9.8. Rombergova integrace Lze ukázat ([5], [19]), že složené lichoběžníkové pravidlo s krokem h můžeme vyjádřit ve tvaru Qh(f) = b a f(x) dx + c1h2 + c2h4 + . . . + cmh2m + m+1(h)h2m+2 , (9.42) kde |m+1(h)| Am+1 pro všechna h = (b - a)/M, M = 1, 2, . . . § 9.8. Rombergova integrace 267 Na tomto vyjádření je založena velice užitečná a elegantní Rombergova kvadraturní formule. Poslední člen ve vyjádření (9.42) je relativně malý a můžeme jej tedy zanedbat, Qh(f) I(f) + m i=1 cih2i , I(f) = b a f(x) dx. (9.43) Položme Pm(y) = I(f) + c1y + . . . + cmym . (9.44) Je zřejmě Pm m, Pm(0) = I(f). Naším úkolem je najít přibližnou hodnotu Pm(0). Budeme postupovat takto: Z (9.43) a (9.44) plyne přibližný vztah Pm(h2 ) Qh(f). (9.45) Uvažujme nyní posloupnost {k} dělení intervalu [a, b]; k: xi = x0 + ihk, i = 0, 1, . . . , k, x0 = a, xk = b, hk = (b - a)/2k , k = 0, 1, . . ., m. Nechť Qhk (f) je hodnota lichoběžníkového pravidla odpovídající kroku hk. Podle (9.45) je Pm(h2 k) Qhk (f), k = 0, 1, . . ., m. (9.46) Pro funkci Pm(y) známe (přibližné) hodnoty v (m + 1) různých bodech yk = h2 k = ((b - a)/2k )2 . Sestrojíme pro tyto hodnoty (yk, Pm(yk)), k = 0, . . . , m, příslušný Lagrangeův interpolační polynom: Pm(y) = m k=0 lk(y)Pm(yk) m k=0 lk(y)Qhk (f), kde lk, k = 0, . . . , m, jsou fundamentální polynomy (rovnost plyne z jednoznačnosti interpolačního polynomu). Spočítejme hodnotu Pm(0): Pm(0) m k=0 lk(0)Qhk (f) = m k=0 dkQhk (f), kde jsme položili lk(0) = dk, k = 0, 1, . . ., m. Pro výpočet daného integrálu jsme nalezli formuli b a f(x) dx m k=0 dkQhk (f), kterou nazýváme Rombergovou kvadraturní formulí. Rombergova formule patří mezi tzv. extrapolační metody, neboť hodnotu Pm(0) jsme získali extrapolací (bod 0 leží vně intervalu [h2 m, h2 0]). Poznámka 9. Výpočet integrálu Rombergovou formulí lze velmi efektivně provést užitím Nevillova schematu pro iterovanou interpolaci. 268 9. NUMERICKÉ INTEGROVÁNí Položme nejdříve Qhk (f) = Tk0, k = 0, . . . , m. Výpočet lze uspořádat do následující tabulky (stejně jako u Nevillova schematu): h2 0 T00 h2 1 T10 T11 h2 2 T20 T21 T22 h2 3 T30 T31 T32 T33 ... ... ... ... ... kde (viz Nevillovo schema, kap. 6) Tij(y) = (y - yi-j)Ti,j-1(y) - (y - yi)Ti-1,j-1(y) yi - yi-j , j = 1, 2, 3, . . . i = j, j + 1, . . . a pro y = 0 a yi = ((b - a)/2i )2 dostaneme rekurentní vztah Tij = 4j Ti,j-1 - Ti-1,j-1 4j - 1 , j = 1, 2, . . . , m i = j, j + 1, . . . , m (9.47) Tmm = Pm(0) I(f). Každý člen tabulky Tij představuje ve skutečnosti lineární kvadraturní formuli pro krok délky hj = (b - a)/2j : Tij = 0f(a) + 1f(a + hj) + . . . + j-1f(b - hj) + jf(b). Některé z těchto formulí, ale ne všechny, jsou pro i = k formule Newtonova typu, např. T11 je Simpsonovo pravidlo: T11 = 4 3 T10 - 1 3 T00 = b - a 6 f(a) + 4f a + b 2 + f(b) . Poznámka 10. Lze ukázat ([4]), že pro chybu Rombergovy integrace platí Tij - b a f(x) dx = (b - a) (b - a)2 22i-j j+1 (-1)j B2j+2 (2j + 2)! f(2j+2) (), a < < b, pro funkci f C2j+2 ([a, b]), B2j+2 jsou Bernoulliova čísla. Příklad 9.17. Užijte Rombergovy kvadraturní formule pro výpočet 0 sin x dx. Řešení. Položme h0 = , h1 = 2 , h2 = 4 , h3 = 8 . Příslušná tabulka hodnot Tij: h2 i Ti0 Ti1 Ti2 Ti3 h2 0 0 h2 1 1,57079630 2,09439511 h2 2 1,86911890 2,00455976 1,99857073 h2 3 1,97423160 2,00026917 1,99998313 2, 000005 § 9.9. Metoda polovičního kroku, použití kvadraturních formulí 269 Lze ukázat, že posloupnost na diagonále v takové tabulce bude konvergovat k hodnotě integrálu rychleji než posloupnost {Ti0}. Rombergova metoda má ještě jednu důležitou vlastnost: umožňuje snadno přidat další řádek -- znamená to pouze vypočítat další lichoběžníkové pravidlo a užít vzorce (9.47). Výpočet lze totiž uspořádat tak, aby proběhl po řádcích, tj. v pořadí T00, T10, T11, T20, T21, T22, . . . Jako testu pro zastavení výpočtu lze například použít vztahu |Tmm - Tm-1,m-1| < , > 0 je předepsaná tolerance, nebo |Tmm - Tm,m-1| < . Rombergova metoda patří k velmi často používaným metodám. Je výhodná především v těch výpočtech, kde je požadována malá chyba aproximace. I když je tato metoda velmi efektní, není ji možné používat univerzálně. Je to vhodná metoda pro hladké funkce a je vždy třeba předpokládat existenci dostatečného počtu derivací funkce f na celém intervalu [a, b]. V opačném případě nepřináší Rombergova metoda žádné zrychlení konvergence oproti např. složenému lichoběžníkovému pravidlu. Zmíníme se ještě stručně o kvadraturních formulích s rychle oscilujícími vahovými funkcemi, které se například vyskytují při výpočtu Fourierových koeficientů. Aplikace známých kvadraturních formulí na integrály tohoto typu nedává dobré výsledky. Příčina selhání těchto metod je v rychlé oscilaci integrandu, o jehož průběhu nemají použité metody dostatek informace. Výpočtem takových integrálů se zabýval J. Mikloško ([15]). § 9.9. Metoda polovičního kroku, použití kvadraturních formulí Budeme se nyní zabývat otázkou volby kvadraturní formule. Uvedeme pouze faktory, které mohou mít vliv na tuto volbu, ale obecná jenoznačná pravidla stanovit nelze. V případě, že funkce je dána tabulkou, tj. jsou známy její hodnoty na ekvidistantní množině uzlů, je vhodné použít Newtonových-Cotesových formulí. Jestliže můžeme odhadnout derivaci dané funkce, je možné stanovit z odhadu chyby kvadraturní formule počet uzlů potřebných k dosažení požadované přesnosti. Tyto hodnoty se však v praxi obtížně odhadují a navíc Newtonovy-Cotesovy formule vysokých řádů nekonvergují k přesné hodnotě integrálu (viz [16], [19] a příklad 9.18). Proto se zpravidla postupuje tak, že užijeme složené kvadraturní formule s nižším počtem uzlů a postupně zvyšujeme počet intervalů tak dlouho, až se počet desetinných míst odpovídajících žádané přesnosti stabilizuje ve dvou po sobě jdoucích aproximacích. Runge navrhl poněkud preciznější způsob odhadu dosažené přesnosti (tzv. metodu polovičního kroku). Popíšeme nyní tuto metodu. Z úvah v § 9.6 je vidět, že výpočet pomocí složeného lichoběžníkového resp. Simpsonova pravidla může být zapsán ve tvaru I(f) = QM (f) + Kh2 resp. I(f) = QM (f) + ~K~h4 , 270 9. NUMERICKÉ INTEGROVÁNí kde K resp. ~K je součin konstanty a druhé resp. čtvrté derivace f v jistých bodech intervalu [a, b]. Dá se ukázat i obecně ([1]), že výpočet pomocí složené kvadraturní formule může být zapsán ve tvaru I(f) QM (f) + KhN , h = b - a M , výraz hN K se nazývá hlavní člen chyby a N - 1 je stupeň přesnosti kvadraturní formule, K závisí na N-té derivaci funkce f. Výpočet veličiny K je zpravidla dosti obtížný. A proto se v praxi postupuje jiným způsobem. Zdvojnásobíme-li počet subintervalů, dostaneme aproximaci I(f) Q2M + K1 h 2 N . Pokud se derivace funkce f v intervalu [a, b] příliš nemění, lze položit K K1. Platí tedy I(f) QM (f) + KhN , I(f) Q2M (f) + K h 2 N . Z těchto dvou vztahů vypočteme konstantu K: K 2N Q2M (f) - QM (f) (2h)N - hN Nyní pro další aproximaci integrálu obdržíme I(f) Q2M (f) + Q2M (f) - QM (f) 2N - 1 . Veličinu z = Q2M (f) - QM (f) 2N - 1 lze užít pro odhad chyby. Při výpočtu postupujeme takto: Počítáme složené kvadraturní formule QMk , Mk = 2k M0, M0 > 0, k = 0, 1, 2, . . . a na každém kroku počítáme veličinu zk = QMk+1 (f) - QMk (f) 2N - 1 . Jestliže pro nějaké k = l je |zl | < , je požadovaná přesnost, pak za novou aproximaci integrálu lze vzít hodnotu I(f) QMl+1 (f) + zl , přičemž chyba této aproximace |zl | < . V podstatě se jedná o aplikaci Richardsonovy extrapolace. Pro N = 2 je to právě případ uvedený v kapitole 7. § 9.10. Integrály se singularitami 271 Je-li funkce dána analyticky, je třeba vzít v úvahu jak Newtonovy-Cotesovy vzorce, tak i Gaussovu kvadraturní formuli. Gaussovy formule dosahují vyšší přesnosti při užití menšího počtu uzlů než Newtonovy-Cotesovy formule a potřebují tedy počítat méně funkčních hodnot funkce f. Mají rovněž příznivější chybový výraz. Požadované přesnosti lze dosáhnout volbou Gaussova vzorce dostatečně vysokého řádu, neboť posloupnost Gaussových formulí konverguje k přesné hodnotě integrálu. Toto jsou výhody Gaussovy formule v případě, že používáme jednu formuli. Při použití složených formulí je však aplikace Gaussových formulí náročnější oproti Newtonovým-Cotesovým formulím. Totiž, při dělení daného intervalu na Mk = 2k M0, M0 = přirozené číslo, k = 0, 1, 2, . . ., intervalů lze již jednou vypočtených funkčních hodnot užít ve všech dalších aplikacích Newtonových-Cotesových formulí, ale není tomu tak u Gaussových formulí. A proto použití složených Gaussových formulí je náročnější. Pokud jde o složená pravidla, lze doporučit pro hladké funkce s výhodou složené lichoběžníkové pravidlo a Rombergovu integraci. V případě, že integrand v určité oblasti daného intervalu značně osciluje, ale v jiné oblasti má hladký průběh, je vhodné použít adaptivních formulí. Na závěr tohoto odstavce si ukážeme, že Newtonovy-Cotesovy formule obecně nekonvergují (viz [19]). Příklad 9.18. Počítejme přibližnou hodnotu integrálu 4 -4 dx 1 + x2 = 2 arctan4 . = 2, 6516353 . Následující tabulka přibližnou hodnotu integrálu určenou pomocí NewtonovyCotesovy formule pro daný počet uzlů a pro porovnání je uveden výsledek získaný složeným lichoběžníkovým pravidlem. n Newtonova-Cotesova formule složené lich. pravidlo 3 5,490 4,235 5 2,278 2,918 7 3,329 2,701 9 1,941 2,659 11 3,596 2,6511 13 1,335 2,6505 Pro M7 = 27 , tj. 129 funkčních hodnot by pomocí složeného lichoběžníkova pravidla vyšel integrál přibližně 2, 651617, zatímco Newtonova-Cotesova formule dává hodnotu 2.977249 a pro n = 131 hodnotu 1, 556509. § 9.10. Integrály se singularitami V předchozích odstavcích jsme se zabývali výpočtem integrálu b a f(x) dx 272 9. NUMERICKÉ INTEGROVÁNí a předpokládali jsme, že funkce f má dostatečný počet derivací v intervalu [a, b]. Ale v praxi se často setkáváme s případy, že integrál nebo jeho derivace mají singularity v [a, b]. V tomto odstavci navrhneme několik způsobů, jak postupovat v takových případech. Omezíme se na singularity v krajních bodech intervalu, neboť rozdělením intervalu na subintervaly lze ,,zvládnout i singularity uvnitř intervalu. Při výpočtu takových integrálů se ukazuje velmi výhodný postup s vahovými funkcemi. Daný integrand f lze totiž zapsat ve tvaru f(x) = w(x)g(x), kde w je vahová funkce zahrnující singularitu, g je dostatečně hladká funkce. Pro standardní vahové funkce lze užít příslušných Gaussových kvadraturních formulí. Jako příklad uvedeme formuli pro výpočet integrálu 1 0 g(x) x dx; zde máme singularitu v levém krajním bodě a vahová funkce je w(x) = 1/ x. Určíme ortogonální polynomy s vahou 1/ x na intervalu [0, 1]. Víme, že pro Legendrovy polynomy platí: 1 0 Pm(x)Pn(x) dx = 0 pro m = n. Dále, Legendrův polynom sudého stupně obsahuje pouze sudé mocniny x a je tedy sudou funkcí. Předchozí vztah pak můžeme zapsat ve tvaru 0 = 1 -1 P2m(x)P2n(x) dx = 2 1 0 P2m(x)P2n(x) dx, m = n. Užijeme-li nyní substituce x2 = y, dostaneme 1 0 1 y P2n( y)P2m( y) dy = 0. Odtud, polynomy pn(x) = P2n( x), n = 0, 1, 2, . . ., jsou ortogonální s vahou 1/ x na intervalu [0, 1]. Nyní již můžeme sestrojit kvadraturní formuli 1 0 g(x) x dx n j=0 Hjg(aj), kde aj = x2 j , j = 0, . . . , n, xj je kladný kořen polynomu P2(n+1) (polynom P2(n+1) má kořeny x0,. . . ,xn, xi = 0, i = 0, . . . , n). Vypočteme nyní koeficienty Hj, j = 0, . . . , n: § 9.10. Integrály se singularitami 273 Nechť Aj je koeficient Gaussovy-Legendrovy formule odpovídající kladnému kořenu xj, j = 0, 1, . . ., n. Je Aj = 1 -1 (x2 - x2 0) . . . (x + xj)(x2 - x2 j+1) . . . (x2 - x2 m) (x2 j - x2 0) . . . (2xj)(x2 j - x2 j+1) . . . (x2 j - x2 m) dx = = 1 -1 x 2xj (x2 - x2 0) . . . (x2 - x2 j-1)(x2 - x2 j+1) . . . (x2 - x2 m) (x2 j - x2 0) . . . (x2 j - x2 j-1)(x2 j - x2 j+1) . . . (x2 j - x2 m) dx + + 1 -1 xj 2xj (x2 - x2 0) . . . (x2 - x2 j-1)(x2 - x2 j+1) . . . (x2 - x2 m) (x2 j - x2 0) . . . (x2 j - x2 j-1)(x2 j - x2 j+1) . . . (x2 j - x2 m) dx . První integrál je roven nule, neboť integrand je lichá funkce. Pro druhý integrál užijeme substituci x2 = y: Aj = 1 2 1 -1 2 (y - x2 0) . . . (y - x2 j-1)(y - x2 j+1) . . . (y - x2 m) (x2 j - x2 0) . . . (x2 j - x2 j-1)(x2 j - x2 j+1) . . . (x2 j - x2 m) dy 2 y = = 1 2 1 -1 (y - x2 0) . . . (y - x2 j-1)(y - x2 j+1) . . . (y - x2 m) (x2 j - x2 0) . . . (x2 j - x2 j-1)(x2 j - x2 j+1) . . . (x2 j - x2 m) dy y = = 1 2 Hj . Pro koeficienty Hj tedy platí Hj = 2Aj, j = 0, . . . , n , kde Aj je koeficient odpovídající kladnému kořenu xj v Gaussově-Legendrově kvadraturní formuli. Obdobně postupujeme v případě vahové funkce w(x) = x, x [0, 1], při výpočtu integrálu 1 0 xg(x) dx. Integrand má tentokrát singularitu v derivaci. Polynomy ortogonální na intervalu [0, 1] s vahou x jsou tvaru pn(x) = 1 x P2n+1( x), kde P2n+1 je opět Legendrův polynom stupně 2n + 1 (podrobněji viz [19]). Je-li třeba vypočítat integrál 1 0 x 1 - x 1 2 g(x) dx, 274 9. NUMERICKÉ INTEGROVÁNí zvolíme za vahovou funkci w(x) = (x/(1 - x))1/2 . Polynomy ortogonální s vahou (x/(1 - x))1/2 na intervalu [0, 1] jsou určeny vztahem pn(x) = 1 x T2n+1( x), kde T2n+1 je Čebyševův polynom stupně 2n + 1. Pro výpočet nevlastních integrálů 0 f(x) dx, f(x) dx můžeme užít přímo Laguerrovy nebo Hermitovy kvadraturní formule. Nevlastní integrál a f(x) dx, a > 0, jestliže existuje, můžeme rovněž aproximovat užitím vhodné kvadraturní formule a to tak, že jej substitucí t = x-1 nejdřívě převedeme na integrál 1 0 1 t2 f 1 t dt. Některé další způsoby výpočtu singulárních integrálů lze najít např. v [8], [19]. Cvičení ke kapitole 9 1. Určete koeficienty A0, A1, A2 tak, aby přesnost kvadraturní formule 1 -1 f(x) dx = A0f -1 2 + A1f(0) + A2f 1 2 + R(f) byla alespoň 2. (A0 = 4 3 , A1 = -2 3 , A2 = 4 3 .) 2. Určete koeficienty A0, A1 a uzel x0 pro formuli 1 0 xf(x) dx = A0f(x0) + A1f(1) + R(f). (A0 = 7 15 , A1 = 1 5 , x0 = 3 7 .) 3. Určete algebraicky neznámé uzly x0, x1 a koeficienty A0, A1 pro formuli 0 sin xf(x) dx = A0f(x0) + A1f(x1) + R(f) tak, aby bylo dosaženo maximálního stupně přesnosti. (A0 = A1 = 1, x0,1 = 2 2 4 - 2. ) Cvičení ke kapitole 9 275 4. Odvoďte Newtonovu-Cotesovu formuli otevřeného typu pro interval [-2, 3] s krokem h = 1. ( 3 -2 f(x) dx = 5 24 (11f(-1) + f(0) + f(1) + 11f(2)) + 95 144 f(4) (), -2 < < 3.) 5. Odvoďte Newtonovu-Cotesovu formuli uzavřeného typu pro interval [a, b] a n = 3 (tzv. pravidlo 3/8). ( b a f(x) dx = b - a 8 f(a) + 3f a + b - a 3 + 3f a + b - a 3 + f(b) - 3 80 b - a 3 5 f(4) (), a < < b.) 6. Odvoďte Simpsonovo pravidlo. 7. Nechť f C(6) ([-1, 1]) a nechť P5 5 je Hermitův interpolační polynom s vlastnostmi P(xi) = f(xi), P (xi) = f (xi), xi = -1, 0, 1. a) Ukažte, že 1 -1 P(x) dx = 7 15 f(-1) + 16 15 f(0) + 7 15 f(+1) + 1 15 f (-1) - 1 15 f (+1). b) Formule v části a) představuje kvadraturní formuli přesnou pro polynomy stupně nejvýše 5. Ukažte, že formule není přesná pro polynomy stupně 6. 8. Odvoďte formuli Čebyševova typu ve tvaru 1 -1 f(x) dx = A(f(x0) + f(x1) + f(x2)) + R(f). (A = 2 3 , x0 = - 2 2 , x1 = 0, x2 = 2 2 , R = f(4) () 360 , -1 < < 1.) 9. Aproximujte integrál 4 0 sin x dx = 1 - 2 2 a) obdélníkovým, b) lichoběžníkovým, c) Simpsonovým pravidlem. ( a) 0,30055887, b) 0,27768018, c) 0,29293264. ) 10. Následující integrály vypočtěte a) lichoběžníkovým, b) Simpsonovým pravidlem. Výsledky porovnejte s přesnými hodnotami 1. 2 1 ln x dx, 2. 0,1 0 x 1 3 dx, 3. 3 0 (sin x)2 dx. ( a) 1. 0,34657, 2. 0,023208, 3. 0,39270, b) 1. 0,38583, 2. 0,032296, 3. 0,30543. ) 276 9. NUMERICKÉ INTEGROVÁNí 11. Užijte Newtonovy-Cotesovy formule uzavřeného typu pro n = 3 (viz cv. 5) pro výpočet 3 1 e- x 2 dx. (0,766801.) 12. Užijte a) složeného lichoběžníkového, b) složeného Simpsonova pravidla pro výpočet integrálů: 1. 3 0 x 1 + x2 dx, M = 6, 2. 1 0 sin x dx, M = 6, 3. 2 0 x sin x dx, M = 8, 4. 1 0 x2 ex dx, M = 8. Porovnejte získané aproximace s přesnými hodnotami. ( a) 1. 10,3122, 2. 0,62201, 3. -5,9568, 4. 0,72889, b) 1. 10,20751, 2. 0,6366357, 3. -6,284027, 4. 0,7182830. ) 13. Užijte Rombergovy integrace pro výpočet hodnoty T4,4 pro následující integrály a výsledky porovnejte s přesnými hodnotami. a) 4 0 sin x dx b) 3 4 2 cos x dx 14. Užijte Rombergovy metody integrace pro výpočet 2 0 x2 e-x2 dx. Číslo m určete během výpočtu tak, aby |Tm,m-1 - Tm,m| < 10-6 . (0,4227250.) 15. Dokažte vztah (9.33). 16. Užitím Gaussovy-Legendrovy kvadraturní formule pro n = 2, 3, 4 aproximujte integrál 3 1 ex sin x dx. (11,141495; 10,948403; 10,950140.) 17. Opakujte cvičení 10 užitím Gaussových-Legendrových formulí pro n = 1. Kontrolní otázky ke kapitole 9 277 18. Užitím Gaussovy-Laguerrovy formule pro n = 2, 3 aproximujte integrál 0 e-x sin x dx. (n = 2 . . . 0,432460, n = 3 . . . 0,496023, přesná hodnota je 0,5.) 19. Odvoďte složené obdélníkové pravidlo a navrhněte příslušný algoritmus. 20. Navrhněte algoritmus pro výpočet b a f(x) dx se zadanou přesností , který vychází z poměrně hrubého dělení intervalu [a, b] a užívá metody polovičního kroku. 21. Pomocí Gaussovy-Čebyševovy formule pro n = 1, 2 aproximujte integrál 1 -1 cos x 1 - x2 dx. (2,3884; 2,4041; přesná hodnota 2,40394.) Kontrolní otázky ke kapitole 9 1. Dávají všechny Gaussovy-Legendreovy formule pro integrál 2 0 sin2 xdx stejnou hodnotu /4 jako Newtonovy-Cotesovy formule? 2. Budou dávat Newtonovy-Cotesovy formule také přesnou hodnotu integrálu (9.18)? 3. Jaká je hodnota integrálu (9.18), je-li w lichá funkce? 4. Jaký tvar má složené obdélníkové pravidlo? 5. Souvisí Rombergova integrace s Richardsonovou extrapolací? 278 9. NUMERICKÉ INTEGROVÁNí Kapitola 10 Metoda nejmenších čtverců Při interpolační aproximaci jsme požadovali, aby interpolační polynom nabýval v daných bodech týchž hodnot jako aproximovaná funkce. Ale v případě, že hodnoty funkce jsou dány empiricky a jsou zatíženy ,,šumem , není tento přístup nejvhodnější. V této kapitole se budeme zabývat postupem, jímž se z funkčních hodnot zatížených nepřesnostmi sestrojuje taková aproximace, která ,,vyrovnává empirické hodnoty v tom smyslu, že informace o přesném průběhu funkce obsažená v naměřených hodnotách se zachová, ale ,,šum se tímto ,,vyrovnáním odstraní. Formulujme nyní tuto úlohu přesněji: Nechť jsou dány body xj, j = 0, . . . , N, xj = xk, pro j = k, reálná funkce f, dále reálné funkce i, i = 0, . . . , m, a hodnoty těchto funkcí v bodech xj, j = 0, . . . , N. Je třeba najít koeficienty c0, . . . , cm lineární kombinace1 Pm(x) = c00(x) + . . . + cmm(x) (10.1) tak, aby funkce 2 (c0, . . . , cm) = N j=0 (fj - Pm(xj))2 , fj = f(xj) (10.2) nabývala minimální hodnoty, tj. minimalizujeme součet čtverců. Odtud plyne také název metoda nejmenších čtverců. Funkci Pm, pro kterou 2 nabývá minimální hodnoty, nazýváme nejlepší aproximaci funkce f na množině {xj}N j=0. Poznámka 1. Budeme se zabývat případem m < N, neboť pro m N je možné řešit úlohu interpolací. Geometrický význam metody je demonstrován na obrázku 10.1. Nejlepší aproximace je taková, pro kterou součet obsahů jednotlivých čtverců o stranách |fj Pm(xj)|, j = 0, . . . , N, je minimální. 1Omezíme se zde pouze na lineární případ, otázky nelineární aproximace jsou studovány např. v [5]. 280 10. METODA NEJMENŠíCH ČTVERCŮ 0 1 2 3 4 5 6 0 1 2 3 4 5 6 Obr. 10.1: Demonstrace metody nejmenších čtverců: - - - - původní funkce hodnoty s ,,šumem - - - interpolační polynom odhad metodou nejmenších čtverců obsah (fj - Pm(xj))2 , j = 0, . . . , N Úmluva. Nechť (f, g) = N j=0 f(xj)f(xj) (10.3) označuje skalární součin funkcí f a g na množině {xj}N j=0. Funkce 2 (c0, . . . , cm) je funkce m + 1 proměnných. Při hledání minima postupujeme jako v analýze: derivujme (10.2) podle každé z neznámých ck, k = 0, . . . , m, a derivace položme rovny nule, tj. 2 ck = -2 N j=0 fj - m i=0 cii(xj) k(xj) = 0, k = 0, . . . , m. 281 Užitím (10.3) lze tyto rovnice zapsat ve tvaru c0(0, 0) + c1(0, 1) + . . . + cm(0, m) = (f, 0) c0(1, 0) + c1(1, 1) + . . . + cm(1, m) = (f, 1) ... c0(m, 0) + c1(m, 1) + . . . + cm(m, m) = (f, m) (10.4) Vektorový zápis soustavy lze odvodit následujícím způsobem. Položme f = f0 ... fN , P = P0 ... PN , Pi = P(xi), i = 0. . . . , N A = 0(x0) . . . m(x0) ... ... 0(xN ) . . . m(xN ) , c = c0 ... cN . Pak P = Ac a 2 (c) = (f - P )T (f - P ) = (f - Ac)T (f - Ac) . Systém (10.4) je potom možné přepsat ve tvaru Gc = d , kde G = AT A = (0, 0) . . . (0, m) ... ... (m, 0) . . . (m, m) , d = AT f = (f, 0) ... (f, m) , takže soustavu (10.4) lze také psát ve tvaru AT A c = AT f . (10.5) Nyní se budeme zabývat otázkami řešitelnosti soustavy (10.4). Definice 10.1. Soustava lineárních rovnic (10.4) se nazývá normální. soustava. Její determinant se nazývá Gramův determinant příslušný funkcím 0, . . . , m. Definice 10.2. Řekneme, že funkce 0, . . . , m jsou lineárně nezávislé na množině bodů x0, . . . , xN , jestliže jsou lineárně nezávislé vektory (0(x0), . . . , 0(xN ))T , . . . , (m(x0), . . . , m(xN ))T . Z definice plyne, že funkce 0, . . . , m jsou lineárně závislé na množině bodů x0, . . . , xN , jestliže existují čísla a0, . . . , am, |a0| + . . . + |am| = 0, tak, že platí a00(xj) + . . . + amm(xj) = 0, j = 0, . . . , N. 282 10. METODA NEJMENŠíCH ČTVERCŮ Platí následující tvrzení Věta 10.1. Gramův determinant je různý od nuly právě tehdy, když funkce 0, . . . , m jsou lineárně nezávislé na množině bodů x0, . . . , xN . Důkaz. Matice G = AT A je regulární právě tehdy, když má hodnost m + 1. Hodnost matice G je ovšem rovna hodnosti matice A, jejíž sloupce tvoří vektory (0(x0), . . . , 0(xN ))T , . . . , (m(x0), . . . , m(xN ))T . Ty jsou lineárně nezávislé v případě, že funkce 0, . . . , m jsou lineárně nezávislé na množině bodů x0, . . . , xN . 2 Poznámka 2. Ze vztahu G = AT A navíc bezprostředně plyne, že G je pozitivně semidefinitní, respektive pozitivně definitní (v případě regularity). Věta 10.2. Nechť funkce 0, . . . , m jsou lineárně nezávislé na množině bodů x0, . . . , xN . Pak normální soustava (10.4) má jediné řešení c 0, . . . , c m a funkce Pm(x) = c 00(x) + . . . + c mm(x) je nejlepší aproximací funkce f na množině {xj}N j=0. Důkaz. Funkce 0, . . . , m jsou lineárně nezávislé na množině bodů x0, . . . , xN . Odtud plyne, že determinant soustavy, je různý od nuly a soustava má jediné řešení c 0, . . . , c m. Ukážeme, že pro toto řešení nabývá funkce 2 minimální hodnoty. Položme c = (c 0, . . . , c m) a počítejme veličinu 2 (c + c), kde c = o. 2 (c + c) = (f - A c - A c)T (f - A c - A c) = = (f - A c )T (f - A c ) - cT AT (f - A c ) - (f - A c )T A c + cT AT A c = = 2 (c ) - cT (AT f - AT A c ) - (AT f - AT A c )T c + + cT AT A c Člen (AT f -AT A c ) roven nulovému vektoru, protože c je řešení soustavy (10.5). Navíc je výraz cT AT A c kladný, neboť matice AT A je pozitivně definitní a c je nenulový vektor. Celkem tedy 2 (c + c) > 2 (c ). 2 Důsledek. Pro funkce i(x) = xi , i = 0, . . . , m, m < N má normální soustava jediné řešení. Příklad 10.1. Užijte metody nejmenších čtverců k nalezení nejlepší lineární aproximace pro hodnoty xi -1 1 3 5 7 fi 1 3 4 5 6 Řešení. Nejlepší aproximaci budeme hledat ve tvaru P1(x) = c0 + c1x . 283 Veličina 2 je v tomto případě tvaru 2 (c0, c1) = (1 - c0 + c1)2 + (3 - c0 - c1)2 + (4 - c0 - 3c1)2 + + (5 - c0 - 5c1)2 + (6 - c0 - 7c1)2 a normální soustava 5c0 + 15c1 = 19 15c0 + 85c1 = 81 , jejíž řešení je c 0 = 2, c 1 = 3 5 . Hledaná nejlepší lineární aproximace je P1(x) = 2+3 5 x ­ viz obr. 10.2 -2 -1 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 Obr. 10.2: Výsledky příkladu 1. Poznámka 3. Pro lineárně nezávislé funkce i, i = 0, . . . , m je matice normální soustavy symetrická a pozitivně definitní. Tyto soustavy lze řešit Gaussovou eliminační metodou nebo Choleského metodou (viz kapitola 4). Zmíníme se podrobněji o volbě i(x) = xi , i = 0, . . . , m. V tomto případě při větším stupni aproximujícího polynomu (m > 5) je soustava (10.4) špatně podmíněná, tzn. že řešení je značně citlivé na vliv chyb ve vstupních datech a na zaokrouhlovacích chybách během výpočtu. Dá se totiž ukázat (viz [19]), že determinant soustavy je přibližně (N + 1) násobkem matice H = 1 1 2 1 m+1 1 2 1 3 1 m+2 ... ... ... 1 m+1 1 m+2 1 2m+1 , která je klasickým příkladem špatně podmíněné matice (inverzní matice má velmi velké prvky ­ pro m = 9 prvky řádu 1012 ). Důsledkem špatné podmíněnosti je 284 10. METODA NEJMENŠíCH ČTVERCŮ skutečnost, že při řešení soustavy způsobí každá zaokrouhlovací chyba, které se dopustíme, mnohonásobně větší chybu v řešení. Již pro m = 9 se mohou vyskytovat při řešení značné obtíže. Dalším problémem je volba hodnoty m, tj. stupně polynomu (viz podrobněji [19], [18]). Zvolíme-li však za funkce i, i = 0, . . . , m. diskrétně ortogonální polynomy, tj. platí-li pro funkce i (i, k) = 0 pro i = k, tyto problémy odpadají. Matice normální soustavy je v tomto případě diagonální a soustava je tvaru c0(0, 0) = (f, 0) c1(1, 1) = (f, 1) ... ... cm(m, m) = (f, m) Odtud lze snadno vypočítat koeficienty nejlepší aproximace a Pm(x) = m i=0 (f, i) (i, i) i(x). (10.6) Pro metodu nejmenších čtverců lze s výhodou užít diskrétních Čebyševových nebo Gramových polynomů. a) Čebyševovy polynomy (diskrétní případ). Uvažujme skalární součin (f, g) = N j=0 f(xj)g(xj), kde za body xj, j = 0, . . . , N zvolíme kořeny Čebyševova polynomu TN+1 (viz kapitola 6). Dá se ukázat (viz [18]), že (Tj, Tk) = 0, pro j = k, 0 j, k N (T0, T0) = N + 1, (Tj, Tj) = N+1 2 , pro j > 0. (10.7) Soustava (T0, . . . , TN ) je při daných tabulkových bodech xj, j = 0, . . . , N, diskrétně ortogonální. b) Při aproximaci metodou nejmenších čtverců pro ekvidistantní tabulkové body je výhodné užívat, kde je to možné, lichého počtu bodů a prostřední bod brát rovný nule (N = 2L). Polynomy, které jsou ortogonální na takové množině bodů se nazývají Gramovy polynomy (viz [19]). Podrobněji: Pro N = 2L definujeme novou proměnnou s předpisem x = xL+hs, tj. i = L + s, takže body xi, i = 0, . . . , N, xi = x0 + ih jsou transformovány na celočíselnou množinu {-L, . . ., -1, 0, 1, . . ., L}. 285 Gramovy polynomy Gj, j = 0, . . . , m, které jsou ortogonální na ekvidistantní množině bodů {-L, . . ., -1, 0, 1, . . ., L}, s krokem h = 1, jsou definovány rekurentními vztahy G0(s) 1, G1(s) = s, Gj+1(s) = Gj(s) - j2 ((N+1)2 -j2 ) 4(4j2-1) Gj-1(s), j 1 (10.8) Poznámka 4. Z praktických i teoretických důvodů se nedoporučuje používat Gramovy polynomy pro m > 2 N. Příklad 10.2. Pro dané hodnoty nalezněte nejlepší aproximaci pomocí G0, G1, G2. xi 0,00 0,25 0,5 0,75 1,00 fi 1,0000 1,2840 1,6487 2,1170 2,7183 Řešení. Substituce x = 0, 5 + 0, 25s, kde s je nová proměnná, převede počátek souřadnic do bodu x = 0, 5. Tabulkové body nyní jsou {-2, -1, 0, 1, 2} a Gramový polynomy G0 1, G1(s) = s. G2(s) = s2 . Je třeba pouze vypočítat skalární součiny (Gi, Gi), (f, Gi), i = 0, 1, 2. Je (Gi, Gi) = 2 s=-2 G2 i (s) (G0, G0) = 5, (G1, G1) = 10, (G2, G2) = 14 , dále (f, G0) = 8, 7680, (f, G1) = 4, 2696, (f, G2) = 0, 7382. Normální soustava je tvaru 5c0 = 8, 7680 10c1 = 4, 2696 14c2 = 0, 7382 a její řešení je c 0 = 1, 7536, c 1 = 0, 42696, c 2 = 0, 05273. Nejlepší aproximace vyjádřená pomocí Gramových polynomů je P2(s) = 1, 7536 + 0, 42696s + 0, 05273(s2 - 2) . Zpětnou substitucí s = 4(x - 0, 5) dostaneme vyjádření pomocí proměnné x P2(x) = 1, 0051 + 0, 8642x + 0, 8437x2 . Otázkou chyby při aproximaci metodou nejmenších čtverců se zde nebudeme zabývat. Tato problematika je podrobné rozebrána v [19]. Zmíníme se však stručně o významu této metody. Metodu nejmenších čtverců užíváme obvykle v případech, kdy se jedná o aproximaci funkce, jejíž hodnoty jsou známy pouze empiricky a jsou tedy zatíženy chybami. Aproximace získaná metodou nejmenších čtverců musí mít dvě charakteristické vlastnosti: 286 10. METODA NEJMENŠíCH ČTVERCŮ 1. Musí být dostatečně vysokého stupně, aby aproximující polynom byl dobrou aproximací funkce. 2. Nesmí být příliš vysokého stupně, aby se nepřesnosti v naměřených hodnotách nezachovaly v této aproximaci. Má-li aproximace získaná metodou nejmenších čtverců tyto dvě vlastnosti, říkáme, že vyrovnává naměřené hodnoty v tom smyslu, že informace o přesném průběhu funkce se zachová, ale ,,šum se vyrovnáním odstraní. Je-li Pm taková nejlepší aproximace, pak Pm(xj), j = 0, . . . , N jsou ,,vyrovnané hodnoty v bodech xj, j = 0, . . . , N. V následující tabulce jsou uvedeny vyrovnané hodnoty aproximace P2 z přikladu 10.2. i 0 1 2 3 4 xi 0 0,25 0,50 0,75 1,00 fi 1,0000 1,2840 1,6487 2,1170 2,7183 P2(xi) 1,0052 1,2740 1,6482 2,1279 2,7130 fi - P2(xi) -0,0052 0,0100 0,0005 -0,0109 0,0053 Funkce 2 (c0, c1, c2) nabývá pro vypočtenou nejlepší aproximaci P2 své minimální hodnoty a to 2 (c 0, c 1, c 2) = 4 i=0 (fi - P2(xi))2 = 2, 76 10-4 . Cvičení ke kapitole 10 1. Pro hodnoty v příkladě 10.2 nalezněte nejlepší aproximaci tvaru P1(x) = co + c1x. (Řešení: P1(x) = l, 70784x + 0, 89968) 2. Dokažte vztahy (10.7). 3. Metodou nejmenších čtverců najděte polynom stupně druhého, který aproximuje tyto hodnoty: xi -3 -2 -1 0 1 2 3 fi 4 2 3 0 -1 -2 -5 a) zvolte nejdřív i(x) = xi , i = 0, 1, 2 b) užijte Gramovy polynomy G0, G1, G2. (Řešení: P2(x) = 1 64 (56 - 117x - 11x2 ).) 4. (a) Pro hodnoty v příkladě 10.2 užijte tříbodové formule a vypočtěte derivace v bodech 0,25; 0,5; 0,75 (viz kapitola 7). V každém případě položte střed formule do toho bodu, v němž počítáte derivaci. Cvičení ke kapitole 10 287 (b) Užijte aproximace získané metodou nejmenších čtverců v příkladě 10.2 a vypočtěte derivace P2 v uvedených bodech. (c) Porovnejte výsledky s hodnotami derivace přesné funkce f(x) = ex . 288 10. METODA NEJMENŠíCH ČTVERCŮ Literatura [1] Bachvalov, N. S.: Čislennyje metody. Nauka, Moskva, 1973. [2] Berezin, I. S., Židkov, N. P.: Metody vyčislenněj I, II. Nauka, Moskva, 1966. [3] Brandts, J., Křížek M.: Padesát let metody sdružených gradientů. PMFA, 47 (2), 2002, str. 103­113 [4] Burden, R. L., Faires, J. D.: Numerical Analysis. Prindle, Weber and Schmidt, Boston, 1984. [5] Burlisch, R., Stoer, J.: Introduction to Numerical Analysis. Springer Verlag, New York, Heidelberg, Berlin, 1980. [6] Datta, B. N.: Numerical Linear Algebra and Applications. ITP, California, 1994. [7] Hamming, R. W.: Numerical Methods for Scientists and Engineers. McGrawHill, New York, 1962. [8] Isaacson, E., Keller, H. B.: Analysis of Numerical Methods. John Wiley, New York, London, Sydney, 1966. [9] Jarník, V.: Diferenciální počet (II). Academia, Praha, 1976. [10] Kobza, J.: Interpolace ­ vývoj formulace problému a jeho řešení. PMFA, 44 (4), 1999, str. 273­293 [11] Kopal, Z.: Numerical Analysis. Chapman and Hall, London, 1955. [12] Koukal S., Křížek M., Potůček R.: Fourierovy trigonometrické řady a metoda konečných prvků. Academia, Praha, 2002 [13] Mathews, J. H.: Numerical Methods for Mathematics, Science and Engineering. Prentice-Hall International, Inc., New Jersey, 1992. [14] Mathews, J. H., Fink, K. D.: Numerical Methods Using MATLAB, Pearson, New Jersey, 2004. 290 LITERATURA [15] Mikloško, J.: Syntéza a analýza efektívnych numerických algoritmov. Veda, Bratislava, 1979. [16] Natanson, J. P.: Konstruktivnaja teorija funkcij. Nauka, Moskva, 1949. [17] Ortega, J. M., Rheinboldt, W. C.: Iterative Solution of Nonlinear Equations in Several Variables. Academic Press, New York, London, 1970. [18] Přikryl, P.: Numerické metody matematické analýzy. SNTL, Praha, 1988. [19] Ralston, A.: Základy numerické matematiky. Academia, Praha, 1973. [20] Smítal, J.: O funkciach a funkcionalnych rovniciach. Alfa, Bratislava, 1984. [21] Smith, H. V.: Numerical Methods of Integration. Chart.-Bratt Ltd., 1993. [22] Szegö: Orthogonal Polynomials. AMS, Providence, 1991. [23] Ševčuk, I. A.: Približenije mnogočlenami i sledy nepreryvnych na otrezke funkcij. Naukova dumka, Kijev, 1992. [24] Šotová, J.: Cykly v iteračních metodách pro řešení systémů lineárních rovnic. Disertační práce, 1997. 291 Rejstřík algoritmus Aitkenův, 182 Nevillův, 181 stabilní, 11, 121 bod cyklu řádu n, 34 funkce, pevný, 28 odpuzující, 32 přitahující, 32 cyklus řádu n, 34 čísla Cotesova, 249, 251 číslo podmíněnosti, 9, 124 člen chyby, hlavní, 270 derivace centrální diferenční, 211 levá diferenční, 211 pravá diferenční, 211 derivování numerické, 205 diagram Fraserův, 173 diference obyčejná, 171 poměrná, 163 extrapolace, 173, 267 Richardsonova, 212 formule kvadraturní, 225 adaptivní, 264 Čebyševova, 257 Gaussova, 232 Gaussova-Čebyševova, 244 Gaussova-Hermitova, 246 Gaussova-Laguerrova, 246 Gaussova-Legendreova, 235 chyba, 226 koeficienty, 225 Lobattova, 255 Rombergova, 267 složená, 260 stupeň přesnosti, 226 uzly, 225 Newtonova-Cotesova otevřeného typu, 251, 252 uzavřeného typu, 249, 252 tříbodová, 209 funkce iterační, 29 vahová, 217 GEM, 95 bez výběru pivota, 122 s výběrem pivota částečným, 102 úplným, 102 chaos, 36 chod přímý, 95 zpětný, 95 chopping, 3 chyba absolutní, 1 odhad, 1 interpolace, 167 292 REJSTŘÍK metody, 6 primární, 6 relativní, 1 odhad, 1 sekundární, 6 interpolace inverzní, 182 iterovaná, 179 kvadratická, 183 polynomiální, 157 splajnová, 158 trigonometrická, 158 iterace k-tá, 33 kořen funkce, 23 separace, 23 zpřesnění, 23 krok, 170 matice dobře podmíněná, 124 Frobeniova, 97 iterační, 134 Jacobiova, 138 Jacobiova, 67 konvergentní, 134 pásová, 94 třídiagonální, 94 permutační, 97 pozitivně definitní, 95 ryze řádkově diagonálně dominantní, 94 špatně podmíněná, 124 trojúhelníková dolní, 94 horní, 94 metoda Aitkenova 2 , 57 bisekce, 23 Croutova, 110 dolní relaxace, 146 Gaussova-Seidelova, 142 horní relaxace, 146 Choleského, 108 iterační, 29 j-kroková, 29 Jacobiova, 138 jednokroková, 29 Newtonova, 67 řádu p, 30 největšího spádu, 118 Newtonova, 40, 67 polovičního kroku, 269 prosté iterace, 29 půlení, 23 quasi Newtonova, 53 regula falsi, 50, 51 relaxační, 146 sdružených gradientů, 120 sečen, 48 Seidelova, 67 snižování stupně, 83 Steffensenova, 59 tečen, 41 zdvojená, 81 multiplikativnost, 16 multiplikátory, 96 norma matice, spektrální, 18 maticová přidružená k dané vektorové normě, 16 souhlasná, 16 odseknutí, 3 parametr relaxační, 146 pivot, 96 výběr částečný, 102 úplný, 102 podmíněnost, 123 číslo, 9, 124 podmínky Fourierovy, 44 poloměr matice, spektrální, 18 polynom interpolační, 158 Lagrangeův, 159 Newtonův, 164 REJSTŘÍK 293 pro interpolaci vpřed, 172 pro interpolaci vzad, 172 polynomy Čebyševovy, 169, 219 fundamentální, 159 Hermitovy, 220 Laguerrovy, 219 Legendrovy, 218 posloupnost iterační, 134 Sturmova, 75 pravidlo lichoběžníkové, 249 složené, 261 obdélníkové, 252 parabolické, 250 Simpsonovo, 250 složené, 263 problém blízký, 11 interpolační Hermitův, 183 prvek hlavní, 96 přesnost dvojnásobná, 4 jednoduchá, 4 rounding, 3 souhlasnost, 16 splajn přirozený, 194 úplný, 194 splajny kubické, 158, 193 polynomiální, 193 stabilita, 11 symboly O, o, 12 systém rovnic neřešitelný, 94 řešitelný, 94 tvar semilogaritmický, pohyblivé řádové čárky, 3 úloha dobře podmíněná, 9 korektní, 8 dobře podmíněná, 9 špatně podmíněná, 9 uzly, 158, 193 ekvidistantní, 170 vektor reziduový, 118 vzorec Shermanův-Morrisonův, 113 Woodburyho, 113 zaokrouhlení, 3 znaménko zachování, 75 změna, 75