Pokročilé numerické metody II 7. přednáška Okrajové úlohy pro ODR Metoda střelby Diferenční metoda Jiří Zelinka Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 1 / 14 Okrajové úlohy Základní úloha druhého řádu y′′ = f (x, y, y′ ), y(a) = ya, y(b) = yb Zobecnění – každou rovnici vyššího řádu lze přepsat pomocí systému ODR: Y ′ = fff (x, Y ), r(Y (a), Y (b)) = 0 a, b jsou různé body intervalu, zpravidla krajní body. Separované okrajové podmínky: r1(Y (a)) = 0, r2(Y (b)) = 0 Lineární okrajové podmínky: UY (a) + VY (b) = ccc, U, V matice Lineární separované okrajové podmínky: U1Y (a) = c1c1c1, V1Y (b) = c2c2c2 Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 2 / 14 Pro U = I, V = 0 dostávám počáteční úlohu. Okrajová úloha nemusí mít řešení y′′ + y = 0, y(0) = 0, y(π) = 1, nebo jich může mít nekonečně mnoho y′′ + y = 0, y(0) = 0, y(π) = 0. Lineární okrajová úloha druhého řádu −(p(x)y′ )′ + q(x)y = f (x) Separované lineární okrajové podmínky −α1p(a)y′ (a) + β1y(a) = γ1 α2p(a)y′ (b) + β2y(b) = γ2 Funkce p, p′ q f jsou spojité, následující podmínky zajišťují existenci řešení: p(x) ≥ p0 > 0, q(x) ≥ 0 Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 3 / 14 Metoda střelby – převod na počáteční úlohu Základní úloha druhého řádu: y′′ = f (x, y, y′ ), y(a) = ya, y(b) = yb Pro počáteční úlohu y(a) = ya, y′ (a) = α existuje jediné řešení y(x) = y(x, α). Hledáme tedy takovou hodnotu ˜α, aby y(b, ˜α) = yb. Řešíme nelineární rovnici F(α) = 0, F(α) = y(b, α) − yb, ovšem řešení y hledáme numericky. Nastavíme tedy hodnotu směrnice tečny k řešení y v bodě a a snažíme se „trefit“ do bodu [b, yb]. Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 4 / 14 Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 5 / 14 Iterační metody pro řešení rovnice F(α) = 0 bisekce – potřebujeme 2 počáteční iterace, F(α0) < 0, F(α1) > 0 Newtonova metoda – potřebujeme znát dF(α) dα metoda sečen – potřebujeme 2 počáteční iterace Newtonova metoda: Položme z(x, α) = ∂y(x,α) ∂α , pak dF(α) dα = z(b, α). Označme z′ = ∂z(x,α) ∂x , pak z splňuje počáteční úlohu z′′ = fy z + fy′ z′ , z(a, α) = 0, z′ (a, α) = 1 (derivací rovnice a podmínek podle α). Počáteční iterace: α0 = yb − ya b − a , pak αk+1 = αk − F(αk) F′(αk) Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 6 / 14 Metoda sečen: Počáteční iterace: α0 = yb − ya b − a Podle výsledku F(α0) provedeme korekci: α1 = yb − ya − F(α0) b − a = α0 − F(α0) b − a , pak αk+1 = αk − αk − αk−1 F(αk) − F(αk−1) F(αk). Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 7 / 14 Lineární okrajová úloha Y ′ = AY + fff , UY (a) + VY (b) = ccc, A : m × m Pro počáteční podmínku Y (a) = ααα dostaneme F(ααα) = Uααα + VY (b,ααα) − ccc, řešíme rovnici F(ααα) = 0. Buď Y0 řešení rovnice s nulovými počátečními podmínkami, Y0(x) = Y (x,000). Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 8 / 14 Dále nechť Yi je řešení homogenní počáteční úlohy Y ′ = AY s počáteční podmínkou Y (a) =            0 ... 0 1 0 ... 0            ← i , položme YYY = [Y1, . . . , Ym], pak Y (x,ααα) = YYY (x)ααα + Y0(x). Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 9 / 14 0 = F(˜α˜α˜α) = U˜α˜α˜α + VY (b, ˜α˜α˜α) − ccc = U˜α˜α˜α + V (YYY (b)˜α˜α˜α + Y0(b)) − ccc ccc − VY0(b) = [U + VYYY (b)]˜α˜α˜α ˜α˜α˜α = [U + VYYY (b)]−1 (ccc − VY0(b)) Řešení pro zjištěné ˜α˜α˜α není potřeba počítat znovu: Y (x) = Y (x, ˜α˜α˜α) = YYY (x)˜α˜α˜α + Y0(x) Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 10 / 14 Diferenční metody Lineární okrajová úloha druhého řádu −(p(x)y′ )′ + q(x)y = f (x) −α1p(a)y′ (a) + β1y(a) = γ1 α2p(a)y′ (b) + β2y(b) = γ2 αi ≥ 0, βi ≥ 0, αi + βi > 0, i ∈ {1, 2}. Řešení hledáme na síti (ekvidistantních) uzlů (x0, . . . , xn), x0 = a, xn = b, xi+1 − xi = h. Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 11 / 14 Náhrada derivací (a chyby formulí) y′ (xi ) = 1 h [y(xi+1) − y(xi )] + O(h) y′ (xi ) = 1 h [y(xi ) − y(xi−1)] + O(h) y′ (xi ) = 1 2h [y(xi+1) − y(xi−1)] + O(h2 ) y′′ (xi ) = 1 h2 [y(xi+1) − 2y(xi ) + y(xi−1)] + O(h2 ) Odvození: z Taylorova rozvoje. Nahrazením derivací diferencemi dostaneme třídiagonální systém lineárních rovnic. Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 12 / 14 Náhrada rovnice, pokud známe p′ (pi = p(xi ), atd.): −pi 1 h2 [yi+1 − 2yi + yi−1] − p′ i 1 2h [yi+1 − yi−1] + qi yi = fi Náhrada rovnice, pokud neznáme p′ : Položíme z = py′ , (zi )′ ≈ zi+1/2−zi−1/2 h , pak zi+1/2 = pi+1/2y′ i+1/2 ≈ pi+1/2 yi+1 − yi h , zi−1/2 = pi−1/2y′ i−1/2 ≈ pi−1/2 yi − yi−1 h . Celkem − pi+1/2yi+1 − (pi+1/2 + pi−1/2)yi + pi−1/2yi−1 h2 + qi yi = fi soustava je symetrická. Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 13 / 14 Náhrada derivací v okrajových podmínkách: 1 dvoubodové formule – mají chybu O(h) 2 tříbodové formule y′ 0 = 1 2h (−3y0 + 4y1 − y2) + O(h2 ) y′ n = 1 2h (yn−2 − 4yn−1 + 3yn) + O(h2 ) poruší se třídiagonalita matice soustavy 3 metoda fiktivních bodů y′ 0 = 1 2h (y1 − y−1) + O(h2 ) y′ n = 1 2h (yn+1 − yn−1) + O(h2 ) přidáme základní rovnici pro y0 a yn a vyjádříme y−1 a yn+1. Jiří Zelinka Pokročilé numerické metody II, 7. přednáška 14 / 14