NELINEÁRNÍ ROVNICE Formulace: Je dána funkce f : R R definovaná na intervalu a, b. Hledáme číslo z intervalu a, b tak, ab platila rovnost f() =. Číslo nazveme řešení nebo kořen rovnice). Poznámka: Najít přesné řešení analtick je možné jen ve velmi jednoduchých případech, např. při řešení lineární rovnice =, při řešení kvadratické rovnice 5 + 8 = nebo např. při řešení rovnice sin 5 = π. Proto je nutné pro nalezení kořenů použít nějakou numerickou metodu. Numerické metod, kterými se budeme zabývat jsou založen na iteračních principech. Pro každou iterační metodu nás budou zajímat odpovědi na dvě otázk: Konverguje posloupnost iterací ke hledanému kořenu? Jestliže ano, jak rchle? Jestliže nemáme předběžné informace opoloze kořene, víme pouze, že leží v určitém intervalu a, b, užijeme k výpočtu takové iterační metod, jejíž konvergence nezávisí na volbě počáteční aproimace. Tto tzv. vžd konvergentní metod mají většinou tu nevýhodu, že konvergují pomalu, a hodí se ted především k určení takové aproimace kořene, která může být použita jako počáteční aproimace pro nějakou rchleji konvergující metodu. Konvergence takové lepší metod už může silně záviset na tom, jak dobrá je tato počáteční aproimace, a na vlastnostech funkce f v okolí kořene. Je ted rozumné rozdělit metod řešení nelineárních rovnic na: startovací metod (vžd konvergentní metod) zpřesňující metod speciální metod (např. pro polmom) Tímto rozdělením ovšem nechceme zdůraznit, že startovací metoda konverguje pomalu vžd a naopak, že zpřesňující metoda konverguje vžd rchle. Poznamenejme, že vžd budeme předpokládat, že daná funkce f je v uvažovaném intervalu a, b spojitá neboť tento předpoklad je důležitý v následující větě. Věta: Předpokládejme, že (i) reálná funkce f je spojitá pro a, b, (ii) f(a).f(b) <. Potom eistuje aspoň jedno řešení rovnice f() = na a, b. Větu ilustruje následující obrázek.
f(a) = f() a b f(b) Startovací metod Nejjednodušší startovací metodou je tzv. metoda půlení intervalu nebo-li bisekce. Předpokládáme, že jsou splněn předpoklad předchozí vět. Princip bisekce je (jak název říká) založen na půlení zadaného intervalu. Po rozpůlení se testuje funkční hodnota uprostřed intervalu, má-li stejné znaménko jako funkční hodnota f(a), pak se do tohoto středu přesune bod a, v opačném případě se do něj přesune bod b. Celý postup opakujeme znovu. Pro zastavení tohoto iteračního postupu nám poslouží podmínka na velikost vzniklého intervalu. Algoritmus metod je znázorněn na obrázku a jednoduše zapsán dále. 5 f(a) = f() a s s b I f(b) I I 6 8
Algoritnus metod bisekce: ) Zadáme ε >, a, b ) s = (a + b)/ ) Je-li f(s) =, pak = s, KONEC ) Je-li f(s), pak je-li f(a).f(s) <, pak b = s jinak a = s 5) Je-li b a ε, pak jdi na ) jinak = (a + b)/, KONEC Příklad: Pomocí metod půlení intervalu najděte na intervalu, řešení rovnice (proveďte iterace) + ln =. Řešení: Výsledk lze přehledně zapsat do tabulk: iterace a b f(a) f(b) s = a + b f(s) 9, 886, 5, 66, 5 9, 66, 75, 9, 75, 5, 9, 66, 5, 565, 75, 5, 9, 565, 975, 76, 975, 5, 76, 565,, 88 Z tabulk vidíme, že funkční hodnota ve středu posledního intervalu, tj. v bodě,, je, 88. Střed intervalu z poslední iterace prohlásíme za přibližné řešení dané rovnice. Píšeme ted, že,. Pro úplnost dodejme, že přesné řešení zapsané na desetinná místa je, 9. Poznámka: Z uvedeného příkladu je zřejmé, že se metoda bisekce řadí mezi startovací metod (vžd konverguje, ale velmi pomalu). Výhodou je kromě její jednoduchosti i fakt, že se dá předem určit počet kroků, potřebných k dosažení požadované přesnosti (lze ukázat, že pro zpřesnění o jedno desetinné místo je třeba provést přibližně, iterace). Nevýhodou kromě pomalé konvergence je fakt, že se tato metoda nedá použít pro určení kompleního kořene (např. u polnomů). Dále se budeme věnovat velmi důležité metodě prosté iterace. Všechn dále uvažované metod budou ve své podstatě speciálním případem této metod. Princip metod prosté iterace je založen na tom, že původní rovnici f() = přepíšeme na tvar = ϕ(). Zde je třeba si uvědomit, že eistuje celá řada možností, jak to udělat. Samozřejmě na konkrétní volbě funkce ϕ bude záviset nejen samotná konvergence metod, ale i její rchlost.
Princip metod prosté iterace je zřejmý z následujícího algoritmu a obrázku. Nakreslímeli si graf funkcí = a = ϕ(), je jasné, že řešení bude v bodě, kde se tto graf protnou. Nejprve si zvolíme v intervalu a, b počáteční nultou iteraci řešení a potom konstruujeme posloupnost iterací k pomocí předpisu k+ = ϕ( k ). Pro zastavení iteračního postupu použijeme podmínku pro rozdíl dvou po sobě jdoucích iterací. Algoritnus metod prosté iterace: ) Zadáme a, b, ε > ) k+ = ϕ( k ) ) Je-li k+ k < ε, pak = k+, KONEC jinak jdi na ) 9 8 = = ϕ() 7 = ϕ( ) 6 5 6 8
Příklad: Pomocí metod prosté iterace najděte na intervalu, řešení rovnice + ln =. Řešení: Jak již blo řečeno, způsobů jak přepsat rovnici f() = na tvar = ϕ() je vžd celá řada. Ukažme si proto jak se bude chovat metoda prosté iterace v několika případech. Pokaždé volíme za počáteční iteraci střed daného intervalu, tj. =, 5. Výsledk jsou zaznamenán v tabulkách.. způsob: ln = = e ( ) tj. ϕ() = e ( ) k k, 5.5.585 již první iterace je mimo zadaný interval, navíc druhá iterace je velmi velké číslo a proto metoda prosté iterace nekonverguje. 5.5 = ϕ() =.5.5.5.5 = ϕ( ).5.5.5.5.5.5.5 5 5
. způsob: + ln = = + ln tj. ϕ() = + ln k k, 5.95.85.89. podobně jako v předchozím případě, zde je. iterace mimo zadaný interval a metoda prosté iterace opět nekonverguje. 5.5 = ϕ() =.5.5.5 = ϕ( ).5.5.5.5.5.5.5.5 5 6
. způsob: = ln = ln tj. ϕ() = ln k k, 5.756.65.8965.5 5.9696 6.97 7.67 8.7 9.5.57.7.55.9.7 5.6 6.55 7.8 8.7 9..5.5.5.5 = ϕ().5.5.5.5.5.5.5 5 = V tomto případě metoda prosté iterace konvergovala k výsledku. Rchlost konvergence ovšem nebla velká. Pro zastavení výpočtu jsme použili podmínku, ab absolutní hodnota rozdílu dvou po sobě jdoucích iterací bla menší než.. Z tabulk je vidět, že rozdíl mezi 8-tou a 9-tou iterací je přibližně.7. Je třeba poznamenat, že hodnota rozdílu po sobě jdoucích iterací nic neříká o přesnosti vpočteného řešení (viz. Poznámka za příkladem). 7
. způsob: + ln = = ln tj. ϕ() = ln.5 = k k, 5.9755.5.7. 5.9.5.5 = ϕ().5.5.5.5.5.5.5.5 5 V tomto posledním případě metoda prosté iterace konvergovala k výsledku velmi rchle. To dokazuje ten fakt, že kdbchom použili pro zastavení podmínku, ab absolutní hodnota rozdílu dvou po sobě jdoucích iterací bla menší než potřebovali bchom k tomu pouze iterací. Poznámka: Největší problém metod prosté iterace je nalezení předpisu pro funkci ϕ = ϕ() tak, ab metoda konvergovala. V následující větě, která uvádí postačující podmínk konvergence metod prosté iterace, jsou uveden požadavk na vlastnosti funkce ϕ. 8
Věta: (Postačující podmínk konvergence metod prosté iterace) Předpokládejme, že je funkce ϕ na intervalu I = a, b spojitá a platí: (a) I : ϕ() I (funkce ϕ zobrazuje I do sebe), (b) q, ) : ϕ() ϕ() q, I (funkce ϕ je kontrakce). Potom ) v intervalu I eistuje právě jeden kořen rovnice = ϕ(), ) posloupnost { k } k= určená formulí k = ϕ( k ) konverguje pro každé I a lim k =. k Poznámka: Pro diferencovatelnou funkci ϕ lze podmínku (b) nahradit podmínkou (b ) q, ) : ϕ () q I Podívejme se na souvislost předpokladů předchozí vět a volb funkce ϕ v jednotlivých případech předchozího příkladu. Ve všech případech bla funkce ϕ na zadaném intervalu, spojitá a dokonce diferencovatelná. Proto se podívejme na splnění podmínek (a) a (b ). Důvodem, proč metoda prosté iterace selhala v. a. případě je fakt, že funkce ϕ nesplňovala ani jednu z podmínek (a) a (b ). Nesplnění podmínk (a) jsme pocítili již v první, resp. druhé iteraci, tím, že jsme se dostali mimo zadaný interval,. Samozřejmě to souvisí i s faktem, že nebla splněna podmínka ani (b ), tj. absolutní hodnot derivace funkce ϕ bl velmi velké. Ve. a. případě metoda dokonvergovala k řešení. Snadno se z obrázků přesvědčíme, že v těchto případech bl splněn předpoklad (a) i (b ). Všimněme si ještě jedné skutečnosti, v posledním případě konvergovala metoda prosté iterace viditelně rchleji než ve třetím případě. Blo to způsobeno vlastností funkce ϕ. Z geometrické představ je zřejmé, že metoda bude konvergovat rchleji, jestliže bude graf funkce ϕ co nejvíce vodorovný, tzn. ϕ. Skutečně rchlost konvergence metod prosté iterace charakterizuje ϕ ( k ), protože můžeme psát ϕ ( k ) ϕ( k+) ϕ( k ) k+ k = k+ k+ k+ k. Poznámka: Řešíme-li metodou prosté iterace algebraickou rovnici a n n + a n n +... + a + a =, a předpokládáme-li, že řešení je v absolutní hodnotě větší než, je většinou vhodné vjádřit z nejvšší mocnin, tj. = n a n n +... + a + a a } {{ n } ϕ() 9
Jak blo řečeno hodnota rozdílu dvou po sobě jdoucích iterací neodpovídá obecně chbě přibližného řešení. Geometrick si to lze představit takto: k k k Odhad chb metod prosté iterace Mějme konvergentní iterační proces: k = ϕ( k ), k =,,... řešení α potom splňuje: α = ϕ(α) a lim k k = α Odečtením rovností dostaneme: k α = ϕ( k ) ϕ(α) (A) Dále platí: k α = k k + k α k k + k α (B) Potom: k α (A) = ϕ( k ) ϕ(α) (b) q k α (B) q k k + q k α ( q) k α q k k } {{ } > k α q q k k Použijeme-li zastavovací podmínku k k < ε, potom platí odhad chb: k α q q ε
Příklad: Pomocí metod prosté iterace řešte na intervalu, rovnici + =. přesné řešení:, = ± 7 = + / = + =, 565,, 565, Rovnici přepíšeme na tvar: = + } {{ } ϕ() Ověříme splnění předpokladů vět o postačujících podmínkách konvergence metod prosté iterace: (a), : + + 6 (b ), : ϕ () < + < + < < + < + 6 5 < Vlastní výpočet: volíme = a pro zastavovací podmínku ε =.. k k.9.595.557.567 5.56 = 5 =.56.
Poznámka: příkladu. Platí: Pokusme se odhadnout velikost chb přibližného řešení u předchozího ϕ = + ma ϕ () = ϕ () = Zvolili jsme ε =, a proto platí odhad chb: 5 α... kladná klesající funkce (ϕ < ) = q... podmínka (b )., =, Rchlost konvergence Definice: Říkáme, že posloupnost k konverguje k číslu α rchlostí r, jestliže pro k k+ α = c k α r + O( k α r+ ). Mluvíme o asmptotické rchlosti konvergence (k ). f() Poznámka: f() = O(g()) pro a g() je omezená pro a. Rchlost konvergence metod prosté iterace Je-li funkce ϕ dostatečně hladká, můžeme napsat její Talorův rozvoj v bodě α a potom pro = k platí: ϕ( k ) = ϕ(α) + ϕ (α)( k α) + ϕ (α) k α = ϕ (α)( k α) + ϕ (α) je-li ϕ (α), potom rchlost konvergence je řádu je-li ϕ (α) = a ϕ (α), potom rchlost konvergence je řádu ( k α) + ϕ (ξ) ( k α) 6 ( k α) + ϕ (ξ) ( k α) 6 k α = ϕ (α)( k α) + O(( k α) ) k α = ϕ (α) ( k α) + O(( k α) )
Nní si uveďme ještě jednu startovací metodu - metodu Regula falsi. Geometrický význam: Křivku = f() nahradíme sečnou, která prochází bod [a, f(a)] a [b, f(b)]. Průsečík s sečn s osou přiřadíme buď a nebo b (podle znaménka funkční hodnot). 8 f(a) 6 = f() a s s b f(b) 6 8 Algoritnus: ) Zadáme δ >, a, b ) s = a f(a) (b a) f(b) f(a) ) Je-li f(s) < δ, pak = s, KONEC ) Je-li f(s) δ, pak je-li f(a).f(s) <, pak b = s, pak jdi na ) jinak a = s, pak jdi na ) Poznámka: Číslo δ nepředstavuje přesnost! Slouží pouze pro zastavovací podmínku.
Zpřesňující metod Jako zástupce zpřesňujících metod si uvedeme Newtonovu metodu. Nechť v intervalu I = a, b leží jediný jednoduchý kořen rovnice f() =. Jelikož mluvíme o zpřesňující metodě, předpokládáme, že máme zadánu nultou iteraci I, která je relativně blízko hledanému řešení. Vjádříme Talorův rozvoj funkce f v bodě. Přitom předpokládáme, že eistuje derivace funkce f. f() = f( ) + f ( )( ) + f (ξ)( ) Rovnici f() = nahradíme lineární rovnicí f( ) + f ( )( ) = Ta má kořen = f( ) f ( ) Celý postup opakujeme a dostáváme iterační formuli k+ = k f( k) f ( k ) Geometrický význam Newtonov metod: Křivku = f() nahradíme tečnou ke grafu v bodě k a hodnotu k+ získáme jako průsečík tečn s osou. Proto se také Newtonova metoda nazývá metoda tečen nebo metoda linearizace. 8 7 6 5 = f() 5 6 7 8 9
Poznámka: Jako zastavovací podmínku lze volit k+ k < ε nebo f( k ) < δ. Poznámka: Algoritmus Newtonov metod je speciálním případem metod prosté iterace. Za funkci ϕ jsme volili funkci ϕ() = f() f () Rchlost konvergence Newtonov metod - závisí na ϕ (α) (ϕ (α))... viz strana. Platí: ϕ = f.f f.f f.f f.f = + = (f ) (f ) (f ) ϕ (α) =, protože f(α) = Platí: ϕ = (f.f + f.f ).(f ) f.f..f.f (f ) ϕ (α) = (f ).f = f (α), protože f(α) = (f ) f (α) Platí ted ϕ (α) = a obecně ϕ (α) rchlost konvergence je řádu. 5
Příklad: Pomocí Newtonov metod najděte řešení rovnice f() + ln =. Počáteční aproimaci volte =, 5 a pro zastavení použijte podmínku k k < 6. Řešení: V iteračním předpisu se vsktuje derivace funkce f, proto ji vjádříme. Výsledk přehledně zapíšeme do tabulk. f () = + +. k k f( k ) f ( k ) f( k ) f ( k ), 5.6697 7..57.7677.677 6.968656.77.9. 6.978.5.95 Vidíme, že stačilo provést iterace. Z předcházejícího příkladu se zdá, že Newtonova metoda bude vžd velmi rchle konvergovat. Ukažme si ještě jeden příklad. Příklad: Pomocí Newtonov metod najděte řešení rovnice f() + =. Počáteční aproimaci volte =, a pro zastavení použijte podmínku k k <. Řešení: Opět je třeba vpočítat derivaci f () =. Iterační formule bude mít tvar k+ = k k k + k = k ( k ) ( k ) = k ( k ) = k +. Výsledk opět zapíšeme do tabulk. 6
k k,,5,55,765,88 5,96 6,97 7,985 8,996 8 7 6 5 = f() 5 Tento příklad ukázal, že v některých situacích je Newtonova metoda mnohem pomalejší. Z obrázku se dá usoudit, kd tto situace nastanou. Hodnota derivace funkce f v bodě =, který je řešením rovnice f() =, je rovna nule. Graf funkce f se os pouze dotkl. To odpovídá faktu, že kořen = je dvojnásobným kořenem dané rovnice. Je-li hodnota derivace f na okolí kořene rovna, případně velmi blízká, potom se v iteračním formuli dělí nulou, případně velmi malým číslem. Tento fakt má za následek zpomalení algoritmu. Podívejme se zpět na předpoklad, za nichž jsme odvodili Newtonovu metodu. Předpokládali jsme, že hledaný kořen je jediný (jeho násobnost je ). Za tohoto předpokladu konverguje Newtonova metoda rchle. Při zadání úkolu, ale nemusíme být schopní poznat, že násobnost hledaného kořene je větší než. Problém s hledáním násobného kořene můžeme elegantně vřešit tímto způsobem: Je-li n-násobným kořenem rovnice f() =, potom je také (n )-násobným kořenem rovnice f () = a ted jednoduchým kořenem rovnice f() f () =. Poznámka: Dosud jsme řešili nelineární rovnici pouze v R. Algoritmus Newtonov metod můžeme použít i pro řešení dané rovnice v oboru kompleních čísel. Příklad: Newtonovou metodou řešte v komplením oboru rovnici z =, z = + i,, R 7
Iterační formule bude mít tvar z k+ = z k z k z k i. Je zřejmé, že daná rovnice bude mít řešení:, + i a Řešíme-li danou rovnici Newtonovou metodou pro konkrétní počáteční aproimaci ze čtverce.5;.5.5;.5, dostaneme jedno ze tří uvedených řešení. Obarvíme-li bod představující počáteční aproimaci různou barvou, podle toho k jakému řešení dospějeme, získáme fraktálovou strukturu. Poznámka: Na závěr si uvědomme nevýhod Newtonov metod zadaná funkce f musí být diferencovatelná derivace se přímo vsktuje v iterační formuli v každé iteraci musíme kromě funkční hodnot počítat také hodnotu derivace Pro odbourání poslední vlastnosti můžeme za předpokladu, že se derivace f na okolí kořene příliž nemění, Newtonovu metodu modifikovat tak, že hodnotu derivace vpočteme pouze jednou v bodě a položíme f ( k ) f( ). Dostaneme iterační formuli k+ = k f( k) f ( ) 8
Geometrický význam modifikované Newtonov metod Tečn ke grafu v bodech [ k, f( k )] nahrazujeme přímkami rovnoběžnými s tečnou ke grafu funkce = f() v bodě [, f( )]. 8 7 6 = f() 5 5 6 7 8 9 Poznámka: V této modifikaci počítáme pouze jednu hodnotu derivace f ( ), a proto je tento postup vhodný je-li derivace f () složitá. Nemění-li f () a f () znaménko, je možné dokázat konvergenci této metod. Chceme-li modifikovat Newtonovu metodu pro funkce, které nejsou diferencovatelné, nahradíme v iterační formuli derivaci f ( k ) diferenčním podílem f( k) f( k ) k k. Získáme tzv. metodu sečen. 9
Geometrický význam metod sečen Mějme dvě dobré aproimace k a k kořene rovnice f() =. Křivku = f() nahradíme přímkou (sečnou), která prochází bod [ k, f( k )] a [ k, f( k )]. Další iteraci k+ získáme jako průsečík sečn s osou. 5 = f() k k k+ k+ 5 6 7 8 9 Poznámka: Pro zahájení výpočtu potřebujeme znát dvě počáteční aproimace, ale na rozdíl od Newtonov metod počítáme v každém kroku pouze jednu novou funkční hodnotu, což je úspora času. Poznámka: Metoda sečen má obdobný algoritmus jako metoda regula falsi, ovšem nepožadujeme splnění podmínk f( k ).f( k ) <. Poznámka: Metoda sečen je tzv. dvoukroková interpolační metoda, analogick lze odvodit tříkrokovou interpolační metodu, kterou nazýváme Mullerova metoda.
Geometrický význam Mullerov metod Mějme tři dobré aproimace k, k a k kořene rovnice f() =. Křivku = f() nahradíme parabolou (kvadratickou funkcí), která prochází bod [ k, f( k )] [ k, f( k )] a [ k, f( k )]. Další iteraci k+ získáme jako průsečík parabol s osou. (Ten, který je blíže k k.) 5 = f() k k k k+ 5 6 7 8 9 Prostředk matlabu pro řešení nelineárních rovnic (viz help v matlabu) fzero roots pro obecnou nelineární rovnici pro kořen polnomu