Obsah Úvod Kapitola 1 Laplaceova transformace 1.1 Definice a přehled elementárních transformací . . . . . . . . . . . . . . . . . . . 1.2 „Skoková“ funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Diracova delta funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Obyčejné diferenciální rovnice druhého řádu s konstantními koeficienty, s okrajovými podmínkami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Obyčejné diferenciální rovnice druhého řádu s nekonstantními koeficienty, s okrajovými podmínkami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6 Užití konvoluce v Laplaceově transformaci . . . . . . . . . . . . . . . . . . . . . Kapitola 2 Pokračování tenzorového počtu 2.1 Kovariantní a kontravariantní transformace . . . . . . . . . . . . . . . . . . . . Kapitola 3 Křivočaré souřadnice 3.1 Kartézská soustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Diferenciální operátory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Plochy, objemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 Vektory polohy, rychlosti a zrychlení . . . . . . . . . . . . . . . . . . . . 3.2 Válcová soustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Diferenciální operátory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Plochy, objemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Vektory polohy, rychlosti a zrychlení . . . . . . . . . . . . . . . . . . . . 3.3 Kulová soustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Diferenciální operátory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Plochy, objemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Vektory polohy, rychlosti a zrychlení . . . . . . . . . . . . . . . . . . . . 3.4 Eliptická soustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Parabolická soustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 „Anuloidová“ soustava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Příklad neortogonální soustavy . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.1 Diferenciální operátory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 Plochy, objemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.3 Vektory polohy, rychlosti a zrychlení . . . . . . . . . . . . . . . . . . . . Kapitola 4 Stručný úvod do parciálních diferenciálních rovnic 4.1 Parciální diferenciální rovnice 1. řádu . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Homogenní parciální diferenciální rovnice 1. řádu . . . . . . . . . . . . . 4.1.2 Nehomogenní parciální diferenciální rovnice 1. řádu . . . . . . . . . . . . 4.2 Parciální diferenciální rovnice 2. řádu . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Klasifikace parciálních diferenciálních rovnic 2. řádu . . . . . . . . . . . 4.2.2 Metoda fundamentálního řešení (metoda Greenovy funkce) . . . . . . . 4.2.3 Řešení parabolických parciálních diferenciálních rovnic Fourierovou metodou (metodou separace proměnných) . . . . . . . . . . . . . . . . . . . 4.2.4 Jednoduché příklady prostorových úloh . . . . . . . . . . . . . . . . . . 4.2.5 Řešení hyperbolických parciálních diferenciálních rovnic Fourierovou metodou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.6 Ukázka možných způsobů řešení jednoduchých eliptických parciálních diferenciálních rovnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kapitola 5 Praktické základy numerických výpočtů 5.1 Numerické metody lineární algebry . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Interpolace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Kubický interpolační splajn . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Bilineární interpolace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Bikubická interpolace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Regrese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Lineární regrese metodou nejmenších čtverců . . . . . . . . . . . . . . . 5.3.2 Polynomiální regrese metodou nejmenších čtverců . . . . . . . . . . . . . 5.3.3 Robustní regrese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.4 Kubický vyhlazovací splajn . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Numerické metody výpočtů funkcí jedné proměnné . . . . . . . . . . . . . . . . 5.4.1 Hledání kořene funkce jedné proměnné - Newtonova metoda . . . . . . . 5.4.2 Numerické derivování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Numerické integrování . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 Jednoduché numerické metody řešení obyčejných diferenciálních rovnic . 5.5 Numerické metody výpočtů funkcí více proměnných - řešení parciálních diferenciálních rovnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.1 Hledání kořenů soustavy funkcí více proměnných Newtonova-Raphsonova metoda . . . . . . . . . . . . . . . . . . . . . . . 5.5.2 Principy konečných diferencí . . . . . . . . . . . . . . . . . . . . . . . . 5.5.3 von Neumannova analýza stability . . . . . . . . . . . . . . . . . . . . . 5.5.4 Laxova metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.5 Metoda zpětného kroku (Upwind method) . . . . . . . . . . . . . . . . . 5.5.6 Laxova-Wendroffova metoda . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.7 Implicitní schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.8 Příklad pokročilejšího numerického schématu . . . . . . . . . . . . . . . 5.5.9 Příklady modelování reálných fyzikálních procesů . . . . . . . . . . . . . 5.6 Paralelizace výpočetních algoritmů . . . . . . . . . . . . . . . . . . . . . . . . . Reference Úvod Toto skriptum navazuje na předchozí učebnici Početní praktikum (rok vydání 2017) a představuje jeho rozšířenou verzi. Zároveň je určeno pro nově zaváděný předmět Základní matematické metody ve fyzice 3. Pokrývá tak obdobně koncipovaný praktický kurz, určený ale již pokročilejším studentům bakalářského studia nebo studentům navazujícího magisterského studia. Doporučeným předpokladem pro absolvování předmětu Základní matematické metody ve fyzice 3 je dobrá předchozí znalost matematických metod, přednášených v kurzech Základní matematické metody ve fyzice 1 a Základní matematické metody ve fyzice 2. Textový materiál je členěný do pěti kapitol, kdy každá popisuje jinou matematickou oblast, využitelnou v dalším studiu i ve fyzikální praxi. První kapitola poskytuje základní přehled o integrální Laplaceově transformaci, která převádí diferenciální a integrální rovnice na polynomiální a konvoluci funkcí zjednodušuje na jejich násobení (její příbuzná, tedy Fourierova transformace je již popsána ve skriptu Početní praktikum). Druhá kapitola přímo navazuje na základy tenzorového počtu, načrtnuté v předchozím skriptu Početní praktikum, které rozšiřuje zejména s ohledem na konvenci používanou při počítání ve čtyřrozměrném prostoročase. Třetí kapitola se zabývá podrobnými vztahy a principy při počítání v rámci různých, zejména křivočarých souřadnicových soustav. Jsou zde uvedené jak ty nejčastěji používané, tedy kartézská, válcová a kulová, tak i některé méně obvyklé (eliptická, parabolická, atd.). Čtvrtá kapitola představuje vzorová praktická řešení nejčastěji se vyskytujících typů parciálních diferenciálních rovnic. Pátá kapitola se zabývá základními praktickými postupy při sestavování numerických řešení v rámci mnoha oblastí prakticky používané matematiky. Každý typ těchto numerických řešení je explicitně ilustrován jednoduchou praktickou ukázku konkrétního výpočetního algoritmu (zde v jazyce Fortran). Vzhledem k pokročilému určení tohoto skripta, nejsou již jednotlivé kapitoly, s výjimkou první, vybaveny sbírkou příkladů pro praktické cvičení; jednotlivé vzorové (zpravidla řešené) příklady či návodné postupy pro praktické počítání v rámci daných problematik jsou přímo součástí výkladu příslušných kapitol. Pokud je někde matematický popis zjednodušen do té míry, že například opomíjí některé předpoklady nebo některá řešení uvedených rovnic, je na to v textu upozorněno. Stejně jako v předchozím skriptu Početní praktikum je pro jednodušší zacházení celý text vybaven modře zvýrazněnými hypertextovými odkazy, umožňujícími v elektronické verzi se po kliknutí přesunout na odkazované místo a stejně zvýrazněnými odkazy URL, které po kliknutí automaticky otevřou příslušnou webovou stránku. Velmi uvítám, pokud ti, kteří budou s touto sbírkou pracovat, mně sdělí svoje případné názory, podněty nebo výhrady např. ke srozumitelnosti výkladu nebo obtížnosti příkladů a zároveň mě kdykoli upozorní na jakoukoli nepřesnost nebo nedostatek, který v příkladech nebo v textu odhalí. Při přípravě předmětu Základní matematické metody ve fyzice 3 i při zpracování tohoto skriptu velice děkuji prof. RNDr. Janě Musilové, CSc. za podnětné rady a cenné připomínky. Petr Kurfürst Kapitola 1 Laplaceova transformace Laplaceova transformace je jednou ze základních integrálních transformací, která funkci reálné proměnné (zpravidla vyjadřující čas t) přiřazuje funkci komplexní proměnné (komplexního frekvenčního parametru) s = σ + iω, kde σ a ω jsou reálná čísla. S výhodou se využívá zejména v oblastech matematiky spojených s kmity, oscilacemi a vlnami. 1.1 Definice a přehled elementárních transformací Uvažujme spojitou nebo po částech spojitou funkci f(t) reálné proměnné t ≥ 0 (vzor nebo originál), potom její Laplaceův obraz F(s), značený často také jako L {f(t)}, je definován jako F(s) = ˆ ∞ 0 f(t) e−st dt. (1.1) Inverzní Laplaceova transformace je potom dána následujícím komplexním integrálem f(t) = L−1 {F(s)} = 1 2πi lim T→∞ ˆ γ+iT γ−iT F(s) est ds, (1.2) kde γ je reálné číslo, takže obrysová (Jordanova) křivka integrace se nachází v oblasti konvergence funkce F(s) a ve valné většině případů lze použít reziduovou větu (viz odstavec 11.2 ve skriptu Početní praktikum). Kromě výše uvedené „jednostranné“ Laplaceovy transformace je definována též „oboustranná“ Laplaceova transformace. Pokud f(t) je reálnou nebo komplexní funkcí reálné proměnné t ∈ R, potom oboustranná Laplaceova transformace je definovaná jako integrál B {f} (s) = F(s) = ˆ ∞ −∞ e−st f(t) dt, (1.3) kde obvyklé značení B pochází z „bilateral“. Jedná se o nevlastní integrál, který konverguje pouze pokud existují následující dílčí integrály ˆ ∞ 0 e−st f(t) dt, ˆ 0 −∞ e−st f(t) dt. (1.4) Oboustrannou Laplaceovou transformací se zde dále nebudeme podrobněji zabývat. Zájemce odkazuji na literaturu, například Arfken & Weber (2005), Bracewell (2000), atd. Kapitola 1. Laplaceova transformace • Následující výčet shrnuje Laplaceovy transformace odvozené z definice (1.1), není však úplným výčtem Laplaceových transformací a obsahuje pouze některé nejčastěji používané vzorce. Jsou zde uvedeny také některé funkce, které jsou blíže vysvětlené až v následujícím textu, například Heavisideova nebo Diracova delta funkce. L {C} = C s , kde C ∈ C je konstanta, (1.5) L {tn } = n! sn+1 , kde n ∈ N+ je konstanta, (1.6) L {tp } = Γ(p + 1) sp+1 , kde p ∈ R, p > −1, je konstanta, (1.7) L eat = 1 s − a , kde a ∈ R je konstanta, (1.8) L tn eat = n! (s − a)n+1 , (1.9) L {sin at} = a s2 + a2 , (1.10) L {cos at} = s s2 + a2 , (1.11) L {t sin at} = 2as (s2 + a2)2 , (1.12) L {t cos at} = s2 − a2 (s2 + a2)2 , (1.13) L {sin at − t cos at} = 2a3 (s2 + a2)2 , (1.14) L {sin at + t cos at} = 2as2 (s2 + a2)2 , (1.15) L {cos at − t sin at} = s(s2 − a2) (s2 + a2)2 , (1.16) L {cos at + t sin at} = s(s2 + 3a2) (s2 + a2)2 , (1.17) L {sin(at + b)} = s sin b + a cos b s2 + a2 , kde a, b ∈ R jsou konstanty, (1.18) L {cos(at + b)} = s cos b − a sin b s2 + a2 , (1.19) L {sinh at} = a s2 − a2 , (1.20) L {cosh at} = s s2 − a2 , (1.21) L eat sin bt = b (s − a)2 + b2 , (1.22) L eat cos bt = s − a (s − a)2 + b2 , (1.23) L eat sinh bt = b (s − a)2 − b2 , (1.24) L eat cosh bt = s − a (s − a)2 − b2 , (1.25) Kapitola 1. Laplaceova transformace L {f(Ct)} = 1 C F s C , (1.26) L {θc(t) ≡ θ(t − c)} = e−cs s , kde θc(t) je Heavisideova funkce, (1.27) L {δ(t − c)} = e−cs , kde δ je Diracova delta funkce, (1.28) L {θc(t)f(t − c)} = e−cs F(s), (1.29) L ect f(t) = F(s − c), (1.30) L {tn f(t)} = (−1)n F(n) (s), (1.31) L 1 t f(t) = ˆ ∞ s F(u) du, (1.32) L ˆ t 0 f(u) du = F(s) s , (1.33) L {(f ∗ g)(t)} = F(s)G(s), kde (f ∗ g)(t) značí konvoluci dvou funkcí, (1.34) L f′ (t) = sF(s) − f(0), (1.35) L f′′ (t) = s2 F(s) − sf(0) − f′ (0), (1.36) L f(n) = sn F(s) − sn−1 f(0) − sn−2 f′ (0) − . . . . . . − sf(n−2) (0) − f(n−1) (0), (1.37) L tf(n) = − d ds L f(n) . (1.38) Při podrobnějším pohledu je zřejmé, že rovnice (1.5) je de facto speciálním případem rovnice (1.6) kde n = 0, zatímco rovnice (1.6) je zase speciálním případem rovnice (1.7) s přirozeným p, kdy v samotné rovnici (1.7) Γ znamená Gama funkci (viz rovnice 12.29 a další vysvětlení v rámci ji obsahujícího řešeného příkladu a také příkladu 12.21, vše ve skriptu Početní praktikum) a podmínka pro reálné p > −1 znamená, že uvažujeme pouze „řádně se chovající“, tedy kladnou Gama funkci. 1.2 „Skoková“ funkce V tomto odstavci se zaměříme na tzv. skokovou funkci, kdy právě Laplaceova transformace velmi usnadní řešení diferenciálních rovnic obsahujících tuto funkci. Elementární „skoková“ (někdy též „schodová“ nebo jednotkový skok) funkce se nazývá Heavisideova, značí se většinou H nebo θ, někdy též u nebo 1 (zde použijeme značení θ respektive θc, ostatní používané symboly jsou vyhrazené pro jiné typy funkcí) a je definovaná jako θc(t) = 0 pokud t < c, 1 pokud t ≥ c. (1.39) Pomocí Heavisideovy funkce lze definovat i komplikovanější funkce, například 6θc(t) znamená funkci, která je nulová pokud t < c a rovna 6 pokud t ≥ c. Jiná funkce, 6 − θc(t), je rovna 6 pokud t < c a rovna 5 pokud t ≥ c. Ještě složitější případy mohou být definovány například pro případ libovolné funkce f(t) pro t > 0 kdy chceme aby nová funkce g(t) měla stejný průběh Kapitola 1. Laplaceova transformace jako f(t) ale právě až od jisté zvolené hodnoty c > 0 (funkce g(t) je tak „vodorovně posunutou“ funkcí f(t − c) pro t > c a má nulovou hodnotu pro t < c). Funkci g(t) tak můžeme zapsat jako g(t) = θc(t)f(t − c). (1.40) Dosadíme-li nyní funkci (1.40) do definice Laplaceovy transformace (1.1), dostáváme L {g(t)} = ˆ ∞ 0 e−st θc(t)f(t − c) dt. (1.41) Dále, pomocí substituce u = t − c přejde integrál (1.41) do tvaru L {g(t)} = e−cs ˆ ∞ 0 e−su f(u) du = e−cs F(s). (1.42) Můžeme proto formulovat i zpětnou Laplaceovu transformaci skokové funkce (respektive funkce obsahující skokovou funkci), L−1 e−cs F(s) = θc(t)f(t − c). (1.43) Pomocí rovnice (1.42) můžeme definovat Laplaceovu transformaci Heavisideovy funkce samotné, položíme-li funkci f = 1, tedy L {θc(t)} = e−cs L {1} = e−cs s . (1.44) Zpětná transformace proto dává L−1 e−cs s = θc(t). (1.45) Příklad: Řešte inverzní transformaci funkce (Laplaceova obrazu) F(s) = 3s + 8e−20s − 2s e−3s + 6e−7s s2(s + 3) (1.46) Funkci upravíme do podoby, odpovídající levé straně rovnice (1.43), F(s) = 3 − 2e−3s G(s) + 8e−20s + 6e−7s H(s), (1.47) kde G(s) = 1 s(s + 3) , H(s) = 1 s2(s + 3) . (1.48) Pomocí rozkladu na parciální zlomky a inverzní transformace funkcí (obrazů) G(s) a H(s) dostáváme g(t) = 1 3 1 − e−3t , h(t) = 1 3 t + 1 9 −1 + e−3t . (1.49) Protože inverzní transformací podle (1.43) dostáváme vzor f(t) = 3g(t) − 2θ3(t) g(t − 3) + 8θ20(t) h(t − 20) + 6θ7(t) h(t − 7), (1.50) tedy, konečná podoba hledaného Laplaceova vzoru bude f(t) = 1 − e−3t − 2θ3(t) 1 − e9 e−3t + 8θ20(t) t − 20 3 + 1 9 −1 + e60 e−3t + +6θ7(t) t − 7 3 + 1 9 −1 + e21 e−3t , (1.51) kde například θ7(t) znamená že θ = 0 pokud t < 7 a θ = 1 pokud t ≥ 7. Kapitola 1. Laplaceova transformace 1.3 Diracova delta funkce I když existují různé definice Diracovy delta funkce, určující jsou následující tři její vlastnosti: δ(t − a) = 0 ∀ t ̸= a, (1.52) ˆ a+ϵ a−ϵ δ(t − a) dt = 1 ∀ ϵ > 0, (1.53) ˆ a+ϵ a−ϵ f(t)δ(t − a) dt = f(a) ∀ ϵ > 0. (1.54) Diracova delta funkce je tedy rovna nule všude s výjimkou jediného bodu t = a, kde lze její hodnotu pokládat za „nekonečnou“. Integrály (1.53) a (1.54) platí pro jakýkoli interval obsahující bod a (pokud tento není jeho koncovým bodem). Navzdory jisté její „neobvyklosti“, je tato „funkce“ velmi užitečná při modelování například rázových vln či působení velmi silných, extrémně krátkodobých sil. Z výše uvedeného vyplývá, že Laplaceova transformace Diracovy delta funkce má podobu L {δ(t − a)} = ˆ ∞ 0 e−st δ(t − a) dt = e−as ∀ a > 0. (1.55) Dále lze rovněž definovat souvislost mezi Diracovou delta funkcí a Heavisideovou funkcí, uvědomímeli si, že následující integrál ˆ t −∞ δ(u − a) du = 0 pokud t < a, 1 pokud t > a, (1.56) kde, na rozdíl od rovnice (1.39), je ostrá nerovnost pro t > a, protože a nesmí být koncovým bodem daného intervalu. Nicméně, toto je zároveň definice Heavisideovy funkce, tedy, ˆ t −∞ δ(u − a) du = θa(t). (1.57) Protože u je vlastně obdobnou nezávisle proměnnou jako t, bude du/dt = 1 a tedy θ ′ a(t) = d dt ˆ t −∞ δ(u − a) du = δ(t − a), (1.58) Diracovu delta funkci lze tak považovat za derivaci Heavisideovy funkce. 1.4 Obyčejné diferenciální rovnice druhého řádu s konstantními koeficienty, s okrajovými podmínkami Vzhledem k tomu, že chceme pomocí Laplaceovy transformace řešit také obyčejné diferenciální rovnice, připomeneme zde opět Laplaceovy transformace derivací vzorů. V případě obecné n-té derivace to bude (viz (1.37)) L f(n) = sn F(s) − sn−1 f(0) − sn−2 f′ (0) − . . . − sf(n−2) (0) − f(n−1) (0), (1.59) Kapitola 1. Laplaceova transformace kde nezávorkované exponenty proměnné s znamenají n-té mocniny. Jelikož se v drtivé většině zabýváme diferenciálními rovnicemi nejvýše druhého řádu, uvedeme zde opět explicitně Laplaceovu transformaci první a druhé derivace (viz (1.35) a (1.36)), L y′ = sY (s) − y(0) (1.60) L y′′ = s2 Y (s) − sy(0) − y′ (0). (1.61) Zároveň je patrné, že hodnoty funkcí, které se zde objevují, y(0) a y′(0), bývají často i hodnotami počátečních nebo okrajových podmínek v zadání diferenciálních rovnic. Znamená to tedy, že máme-li uvedené vztahy použít k řešení rovnic s podmínkami, budeme potřebovat počáteční či okrajové podmínky v bodě x = 0 (pro větší souvislost s předchozím výkladem obyčejných diferenciálních rovnic zde nezávisle proměnnou budeme formálně značit x namísto t). Dále uvedeme několik typických jednoduchých příkladů, na kterých ukážeme jak se tento postup uplatňuje. Příklad: Řešte rovnici y′′ − 10y′ + 9y = 5x, y(0) = −1, y′ (0) = 2. (1.62) Pomocí příslušných vzorců pro Laplaceovu transformaci můžeme uvést následující transformovanou rovnici, s2 Y (s) − sy(0) − y′ (0) − 10 [sY (s) − y(0)] + 9Y (s) = 5 s2 . (1.63) Po vložení okrajových podmínek a úpravě dostáváme rovnici Y (s) = 5 + 12s2 − s3 s2(s − 9)(s − 1) (1.64) a po jejím rozkladu na parciální zlomky, Y (s) = 50 81s + 5 9s2 + 31 81(s − 9) − 2 s − 1 . (1.65) Zpětnou Laplaceovou transformací podle uvedených pravidel (prakticky nejlépe s pomocí tabelovaných vzorců) dostáváme výsledné řešení, y(x) = 50 81 + 5 9 x + 31 81 e9x − 2ex . (1.66) Příklad: Řešte rovnici 2y′′ + 3y′ − 2y = x e−2x , y(0) = 0, y′ (0) = −2. (1.67) Stejně jako v předchozím příkladu, pomocí příslušných vzorců pro Laplaceovu transformaci, můžeme uvést následující transformovanou rovnici, 2 s2 Y (s) − sy(0) − y′ (0) + 3 [sY (s) − y(0)] − 2Y (s) = 1 (s + 2)2 . (1.68) Kapitola 1. Laplaceova transformace Po vložení okrajových podmínek a úpravě dostáváme rovnici Y (s) = − 4s2 + 16s + 15 (2s − 1)(s + 2)3 (1.69) a po jejím rozkladu na parciální zlomky, Y (s) = 1 125 −192 2 s − 1 2 + 96 s + 2 − 10 (s + 2)2 − 252! 2! (s + 2)3 , (1.70) kde jsme pro větší názornost souladu s principy zpětné transformace uvedli i vytknutí dvojky ve jmenovateli prvního členu v celkové hranaté závorce a rozšíření číslem 2! v čitateli posledního členu. Zpětnou Laplaceovou transformací podle uvedených (tabelovaných) pravidel dostáváme výsledné řešení, y(x) = 1 125 e−2x 96 − 10x − 25 2 x2 − 96 e5x/2 . (1.71) Příklad: Řešte rovnici y′′ − 6y′ + 15y = 2 sin 3x, y(0) = −1, y′ (0) = −4. (1.72) Obdobným způsobem jako v předešlých příkladech můžeme odvodit následující transformovanou rovnici, s2 Y (s) − sy(0) − y′ (0) − 6 [sY (s) − y(0)] + 15Y (s) = 2 3 s2 + 9 . (1.73) Po vložení okrajových podmínek a úpravě dostáváme rovnici Y (s) = − s3 − 2s2 + 9s − 24 (s2 − 6s + 15)(s2 + 9) (1.74) a po jejím rozkladu na parciální zlomky, Y (s) = 1 10   s s2 + 9 + 13 3 s2 + 9 − 11(s − 3) (s − 3)2 + 6 − 8 √ 6√ 6 (s − 3)2 + 6   , (1.75) kde jsme pro větší názornost souladu s principy zpětné transformace uvedli rozšíření zlomky v čitatelích druhého a posledního členu v celkové hranaté závorce. Zpětnou Laplaceovou transformací podle uvedených pravidel dostáváme výsledné řešení, y(x) = 1 10 cos 3x + 1 3 sin 3x − 11 e3x cos √ 6x − 8 √ 6 e3x sin √ 6x . (1.76) Příklad: Řešte rovnici y′′ + 4y′ = cos(x − 3) + 4x, y(3) = 0, y′ (3) = 7. (1.77) Kapitola 1. Laplaceova transformace Nejprve musíme rovnici přeformulovat takovým způsobem, abychom dostali okrajové podmínky pro x = 0. Toho nejlépe docílíme změnou proměnných, η = x − 3 a tedy x = η + 3. (1.78) Původní rovnici (1.77), kde y = y(x), můžeme přepsat do tvaru y′′ + 4y′ = cos η + 4(η + 3), (1.79) kde y = y(η + 3). Přepíšeme nyní funkci y(η + 3) jako novou funkci z(η), pomocí „řetězového pravidla“ pro derivace snadno odvodíme že y′(η + 3) = z′(η) a y′′(η + 3) = z′′(η). Rovněž okrajové podmínky můžeme transformovat jako y(3) = z(0) = 0 a y′(3) = z′(0) = 7. Původní rovnice (1.77) bude mít pro novou funkci z(η) tvar z′′ + 4z′ = cos η + 4η + 12, z(0) = 0, z′ (0) = 7. (1.80) Opět obdobným způsobem jako v předešlých příkladech můžeme odvodit následující transformovanou rovnici, s2 Z(s) − sz(0) − z′ (0) + 4 [sZ(s) − z(0)] = s s2 + 1 + 4 s2 + 12 s . (1.81) Po vložení okrajových podmínek a úpravě dostáváme rovnici Z(s) = 7s4 + 13s3 + 11s2 + 12s + 4 s3(s2 + 1)(s + 4) (1.82) a po jejím rozkladu na parciální zlomky, s obdobným zvýrazněním členů důležitých pro názornost zpětné transformace, Z(s) = 17 16s + 11 4s2 + 12! 2! s3 − 273 272(s + 4) + 1 17 −s s2 + 1 + 4 s2 + 1 . (1.83) Zpětnou Laplaceovou transformací dostáváme výsledné řešení nejprve pro z(η), z(η) = 17 16 + 11 4 η + 1 2 η2 − 273 272 e−4η + 1 17 (4 sin η − cos η) (1.84) a po záměně y(x) = z(η) = z(x − 3) a úpravách dostáváme řešení rovnice (1.77) ve výsledném tvaru y(x) = 1 2 x2 − 1 4 x − 43 16 − 273 272 e−4(x−3) + 1 17 [4 sin(x − 3) − cos(x − 3)] . (1.85) Příklad: Řešte rovnici s Heavisideovou a Diracovou delta funkcí na pravé straně: 2y′′ + 10y = 3θ12(t) − 5 δ(t − 4), y(0) = −1, y′ (0) = −2. (1.86) Odvodíme transformovanou rovnici, 2 s2 Y (s) − sy(0) − y′ (0) + 10Y (s) = 3e−12s s − 5e−4s , (1.87) po dosazení okrajových podmínek a úpravě dostaneme Y (s) = 3e−12s s(2s2 + 10) − 5e−4s 2s2 + 10 − 2s + 4 2s2 + 10 = 3e−12s F(s) − 5e−4s G(s) − H(s). (1.88) Kapitola 1. Laplaceova transformace Po rozkladu jednotlivých členů první pravé části dostáváme jednotlivé funkce f(t), g(t) a h(t), f(t) = 1 10 1 − cos √ 5t , g(t) = 1 2 √ 5 sin √ 5t, h(t) = cos √ 5t + 2 √ 5 sin √ 5t. (1.89) Výsledné řešení bude y(t) = 3θ12(t) f(t − 12) − 5θ4(t) g(t − 4) − h(t), (1.90) kde f(t), g(t) a h(t) jsou definovány výše, pro lepší pochopení jednotlivých symbolů viz také řešený příklad v odstavci „skoková funkce“. Výsledky příkladů z tohoto odstavce lze snadno ověřit standardním postupem při řešení obyčejných diferenciálních rovnic druhého řádu s konstantními koeficienty, uvedeným v odstavci 3.2.1 ve skriptu Početní praktikum. 1.5 Obyčejné diferenciální rovnice druhého řádu s nekonstantními koeficienty, s okrajovými podmínkami Uveďme zde také následující identitu: pokud f(t) je po částech spojitá funkce na intervalu ⟨0, ∞) obecného tzv. exponenciálního řádu a pokud existují kladné konstanty T a M takové, že |f(t)| ≤ Meαt pro všechna t ≥ T, potom platí lim s→∞ F(s) = 0. (1.91) Jinými slovy, funkce která je funkcí obecného exponenciálního řádu, neporoste strměji než Meαt pro libovolné M a α a pro všechna dostatečně velká t. Jestli funkce je či není funkcí obecného exponenciálního řádu α lze zjistit výpočtem následující limity limt→∞ |f(t)| e−αt: pokud je tato limita pro určité α konečná, potom je funkce f(t) funkcí exponenciálního řádu α, pokud limita diverguje k nekonečnu, funkce není funkcí žádného obecného exponenciálního řádu. Téměř všechny funkce, se kterými se setkáme v této kapitole při řešení diferenciálních rovnic, jsou funkcemi nějakého určitého exponenciálního řádu. Dobrým příkladem funkce, která není funkcí exponenciálního řádu, je například f(t) = exp(t3), kde snadno ověříme že limt→∞ exp t(t2 − α) = ∞, což za daných podmínek platí pro jakékoli α. Příklad: Řešte rovnici y′′ + 3xy′ − 6y = 2, y(0) = 0, y′ (0) = 0. (1.92) Z již dříve odvozených dílčích vztahů (rovnice (1.38), kromě již dříve uvedených vztahů v příkladech rovnic s konstantními koeficienty) víme, že L tf′ (t) = L xy′ = − d ds (L{y′ }) = − d ds [sY (s) − y(0)] = −sY ′ (s) − Y (s). (1.93) Dosadíme-li všechny tyto již známé identity do dané rovnice, dostáváme s2 Y (s) − sy(0) − y′ (0) + 3 −sY ′ (s) − Y (s) − 6Y (s) = 2 s . (1.94) Po dosazení okrajových podmínek a malé úpravě dostaneme diferenciální rovnici prvního řádu, Y ′ (s) + 3 s − s 3 Y (s) = − 2 3s2 . (1.95) Kapitola 1. Laplaceova transformace Na rozdíl od příkladů v předchozí části pro diferenciální rovnice druhého řádu s konstantními koeficienty, kde jsme rovnou dostali transformovaná řešení, zde dostáváme lineární obyčejnou diferenciální rovnici prvního řádu, kterou je třeba vyřešit, abychom získali konečné transformované řešení. Řešením rovnice (1.95) pro Y (s) bude Y (s) = 1 s3 2 + Ce s2 6 . (1.96) Vzhledem k tomu, že druhý člen (exponenciální) v závorce v transformovaném řešení (1.96) se nepodobá žádnému z elementárních (tabelovaných) řešení Laplaceových transformací, předpokládejme, že se zde jedná o funkci obecného exponenciálního řádu a použijme tedy uvedené pravidlo pro její limitu. To znamená lim s→∞ 1 s3 2 + Ce s2 6 = 0, (1.97) kde první člen konverguje k nule vždy, zatímco druhý člen konverguje k nule pouze pokud C = 0. Transformované řešení tak představuje pouze první člen rovnice (1.96), výsledné řešení rovnice (1.92) bude y(x) = x2 , (1.98) o jehož správnosti se lze snadno přesvědčit. Příklad: Řešte rovnici xy′′ − xy′ + y = 2, y(0) = 2, y′ (0) = −4. (1.99) Z předchozího příkladu víme, že L{xy′} = −sY ′(s) − Y (s). Zde budeme rovněž potřebovat obdobnou identitu obsahující druhou derivaci, L{xy′′ } = − d ds (L{y′′ }) = − d ds s2 Y (s) − sy(0) − y′ (0) = −s2 Y ′ (s) − 2sY (s) + y(0). (1.100) Dosadíme-li všechny tyto již známé identity do dané rovnice, dostáváme −s2 Y ′ (s) − 2sY (s) + y(0) − −sY ′ (s) − Y (s) + Y (s) = 2 s . (1.101) Po dosazení okrajových podmínek a úpravě dostaneme diferenciální rovnici prvního řádu, Y ′ (s) + 2 s Y (s) = 2 s2 . (1.102) Opět zde musíme řešit rovnici prvního řádu abychom dostali transformované řešení, Y (s) = 2 s + C s2 . (1.103) Toto transformované řešení konverguje k nule pro jakoukoli konstantu C, nemusíme proto použít princip uvedený v rovnici (1.91), abychom se zbavili některého z členů, jako v předchozím příkladu. Inverzní transformace potom dává y(x) = 2 + Cx (1.104) a po dosazení druhé okrajové podmínky, y(x) = 2 − 4x. (1.105) Na předchozích příkladech jsme si ukázali, jak řešit některé obyčejné diferenciální rovnice druhého řádu s nekonstantními koeficienty, kdy jsme ovšem zvolili koeficienty tak, aby bylo možné řešení tímto způsobem vůbec najít. Při jinak zvolených koeficientech by hledání řešení mohlo být značně obtížné; obecně vzato, takové rovnice s nekonstantními koeficienty jsou většinou velmi obtížně řešitelné. Kapitola 1. Laplaceova transformace 1.6 Užití konvoluce v Laplaceově transformaci Uvažujme nyní transformovanou rovnici ve formě H(s) = F(s)G(s), (1.106) která není řešitelná pomocí rozkladu na parciální zlomky. Jedním ze způsobů její inverzní transformace je použití konvoluce. Pokud f(t) a g(t) jsou po částech spojité funkce na intervalu ⟨0, ∞), potom konvoluce funkcí f(t) a g(t) bude (viz výklad konvoluce v kapitole 10 ve skriptu Početní praktikum) (f ∗ g)(t) = ˆ t 0 f(τ)g(t − τ) dτ, (1.107) kde na rozdíl od obecné definice konvoluce v rovnici 10.8 ve skriptu Početní praktikum jsou meze definovány pouze v rozmezí ⟨0, t⟩, což odpovídá spodní mezi pro Laplaceovu transformaci a „praktické“ horní mezi pro konvoluční proměnnou - viz příklady na konvoluce v kapitole 10 ve skriptu Početní praktikum. Následující identita nám umožní řešit inverzní Laplaceovu transformaci součinu dvou transformovaných funkcí (Laplaceových obrazů), L {(f ∗ g)(t)} = F(s)G(s), L−1 {F(s)G(s)} = (f ∗ g)(t). (1.108) Na následujících dvou příkladech si ukážeme, jak může prakticky vypadat užití konvoluce pro řešení Laplaceovy transformace. Příklad: Použijte konvoluci k nalezení inverzní transformace následujícího Laplaceova obrazu: H(s) = 1 (s2 + a2)2 . (1.109) Rozepišme nejprve funkci (1.109) jako součin dvou funkcí, H(s) = 1 s2 + a2 1 s2 + a2 = F(s)G(s), (1.110) tedy, f(t) = g(t) = 1 a sin at. (1.111) Pomocí konvoluce těchto funkcí provedeme inverzní transformaci (zde uvedeme pouze výsledek), h(t) = (f ∗ g)(t) = 1 a2 ˆ t 0 sin aτ sin(at − aτ) dτ = 1 2a3 (sin at − at cos at) . (1.112) Příklad: Řešte následující diferenciální rovnici s s obecnou pravou stranou a okrajovými pod- mínkami, 4y′′ + y = g(t), y(0) = 3, y′ (0) = −7. (1.113) Stejně jako v předchozích příkladech, nalezneme transformovanou funkci 4 s2 Y (s) − sy(0) − y′(0) + Y (s) = G(s), (1.114) Kapitola 1. Laplaceova transformace po jejím rozkladu na parciální zlomky a úpravě s již „obvyklými zvýrazněními pro inverzní transformaci“ dostáváme Y (s) = 3s s2 + 1 4 − 72 2 s2 + 1 4 + 1 4 G(s) 2 2 s2 + 1 4 . (1.115) První dva členy na pravé straně rovnice (1.115) lze řešit snadno, třetí člen vyřešíme jako konvoluci dvou funkcí, jednoho konkrétního vzoru a jedné obecné, f(t) = 2 sin t 2 , g(t). (1.116) Výsledná podoba inverzní transformace v tomto případě bude y(t) = 3 cos t 2 − 14 sin t 2 + 1 2 ˆ t 0 sin τ 2 g(t − τ) dτ. (1.117) Jak tento poslední příklad ukazuje, pomocí konvoluce lze do značné míry řešit diferenciální rovnice s okrajovými podmínkami s obecnou funkcí na pravé straně. Toto se může velmi hodit v případě, kdy máme celou řadu takových funkcí pravé strany a potřebujeme například zvolit pouze jednu (nebo některé). Pomocí konvoluce můžeme rovnici takto „předřešit“ a pak pouze dosazovat konkrétní podoby funkce g(t) do konvolučního integrálu. Kapitola 2 Pokračování tenzorového počtu 2.1 Kovariantní a kontravariantní transformace Působením metrického tenzoru dané soustavy (viz například rovnice (3.4), (3.3), (3.36) a (3.63) v kapitole 3) transformujeme složky vektorových a tenzorových veličin mezi tzv. kovariantní a kontravariantní bází, které rozlišují kvantitativní chování dané geometrické nebo fyzikální entity při změně báze. Abychom zachovali velikost vektoru jako takovou, musí být složky vektorů (například polohy nebo rychlosti), jejichž rozměr je přímo úměrný měřítku báze, kontra-variantní vůči bázovým vektorům, zapisujeme je ⃗V = V i ⃗ei. Naopak, složky tzv. duálních vektorů, nazývaných také kovektory (například vektor gradientu, který má rozměr převrácené hodnoty vzdálenosti), musí být ko-variantní vůči změně báze, zapisujeme je ⃗V = Vi ⃗e i. V zápisu se tedy formálně odlišují spodní nebo horní polohou indexů. V ortogonálních souřadných soustavách má tzv. kovariantní metrický tenzor η prvky gij pouze na hlavní diagonále (viz tzv. Laméovy koeficienty, rovnice (3.11)). Pro tzv. kontravariantní metrický tenzor η′ s prvky gij vždy platí ηη′ = E, tedy η′ = η−1, pro jejich prvky vždy platí (Einsteinova sumační konvence) gijgij = dim V , tedy dimenze příslušného vektorového prostoru V . Metrický tenzor je vždy symetrický, platí tedy gij = gji, gij = gji. Obecné a explicitní vyjádření transformace vektoru Vi z kovariantní do kontravariantní báze lze tedy zapsat způsobem (viz Einsteinova sumační konvence): V j = gji Vi = gj1 V1 + gj2 V2 + gj3 V3. (2.1) Transformaci kovariantního tenzoru druhého řádu Tij do kontravariantní báze zapíšeme násle- dovně: Tj i = gjk Tki = gj1 T1i + gj2 T2i + gj3 T3i (smíšený ko- a kontravariantní tenzor), (2.2) Tij = gim gjn Tmn = gi1 gj1 T11 + gi1 gj2 T12 + gi1 gj3 T13 + gi2 gj1 T21 + . . . + gi3 gj3 T33. (2.3) Analogickým způsobem proběhne transformace tenzorů libovolného vyššího řádu. Smíšený metrický tenzor s prvky gj i = gi j je vždy reprezentován jednotkovou maticí. V trojrozměrném prostoru jsou rozlišovány tzv. axiální vektory (pseudovektory), které se nezrcadlí spolu se souřadnou soustavou (na rozdíl od tzv. polárních neboli pravých vektorů, které se zrcadlí) a které můžeme definovat jako pseudotenzor Vi duální k antisymetrickému tenzoru Tjk, Vi = 1 2 εijkTjk, tedy Vi = 1 2 (Tjk − Tkj) = Tjk (kde i ̸= j ̸= k), (2.4) Kapitola 2. Pokračování tenzorového počtu kde jednotlivé prvky tenzoru Tjk jsou definovány jako Tjk = AjBk −AkBj, v R3 je tedy můžeme považovat za odpovídající složky vektorového součinu ⃗A × ⃗B. Obdobným způsobem definujeme v plochém čtyřrozměrném prostoročase, jehož metrický (Minkowskiho) tenzor má tvar gµν = gµν =     1 0 0 0 0 −1 0 0 0 0 −1 0 0 0 0 −1     , (2.5) antisymetrický pseudotenzor druhého řádu (tzv. Hodgeova dualita, značíme ⋆T), který je duální s antisymetrickým tenzorem druhého řádu a antisymetrický pseudotenzor třetího řádu, který je duální s vektorem ⋆ Tµν = 1 2 εµνρσ Tρσ, ⋆ Tµνρ = εµνρσ Vσ. (2.6) Pro výchozí permutaci Levi-Civitova symbolu v kovariantní bázi (v rámci zde zavedené konvence, srovnej také například Lenc (2001)) platí ε0123 = 1. Pro výchozí permutaci v kontravariantní bázi pak musí platit ε0123 = g00g11g22g33ε0123, kde gµν jsou nenulové prvky Minkowskiho metrického tenzoru z rovnice (2.5), a tedy ε0123 = −1 (stejným způsobem lze s použitím rovnice (3.4) ovodit, že v plochém trojrozměrném prostoru platí ε123 = ε123 = 1). Pro podrobnější studium tenzorové algebry doporučuji například Young (1993); Kvasnica (2004); Arfken & Weber (2005). • Příklady (uvažujeme vždy kartézskou ortonormální bázi daného vektorového prostoru) : 2.1 Kovariantní metrický tenzor gij válcové souřadné soustavy v pořadí souřadnicových směrů r, ϕ, z, je vyjádřen maticí (viz rovnice (3.36)) gij =   1 0 0 0 r2 0 0 0 1   . Obdobný kovariantní metrický tenzor kulové souřadné soustavy v pořadí souřadnicových směrů r, θ, ϕ, je vyjádřen maticí (viz rovnice (3.63)) gij =   1 0 0 0 r2 0 0 0 r2 sin2 θ   . Určete: (a) všechny nenulové tzv. Christoffelovy symboly Γρ µν válcové soustavy (určující křivost dané metriky), které jsou obecně definovány předpisem (na rozdíl od rovnice (3.12) musíme v časoprostoru rozlišovat kovariantní a kontravariantní báze polohového vektoru, xµ = (ct, −⃗r) a xµ = (ct,⃗r)) Γρ µν = 1 2 gρλ ∂gνλ ∂xµ + ∂gµλ ∂xν − ∂gµν ∂xλ , (b) všechny nenulové Christoffelovy symboly kulové soustavy, definované rovněž předpisem (3.12), Kapitola 2. Pokračování tenzorového počtu (c) explicitní tvar vektoru rotace vektoru ⃗A ve válcové soustavě, obecně daný předpisem (viz také rovnice (3.20)) ⃗∇ × ⃗A = ϵijk 1 hjhk ∂ ∂xj (hkAk) ⃗ei, (d) explicitní tvar vektoru rotace vektoru ⃗A v kulové soustavě, obecně daný stejným předpisem. (a) Γr ϕϕ = −r, Γϕ ϕr = Γϕ rϕ = 1 r , (b) Γr θθ = −r, Γθ θr = Γθ rθ = Γϕ ϕr = Γϕ rϕ = 1 r , Γr ϕϕ = −r sin2 θ, Γθ ϕϕ = − sin θ cos θ, Γϕ ϕθ = Γϕ θϕ = cotg θ, (c) viz relace (3.45) v kapitole 3, (d) viz relace (3.71) v kapitole 3. 2.2 Jsou zadány kovariantní tenzor Aij a kovariantní metrický tenzor gij dané souřadné soustavy, v pořadí souřadnicových směrů r, θ, ϕ, ve tvaru Aij =   a11 a12 a13 a21 a22 a23 a31 a32 a33   , gij =   1 0 0 0 r2 0 0 0 r2 sin2 θ   . Určete: (a) smíšený metrický tenzor gi j a smíšený tenzor Ai j, (b) kontravariantní tenzor Aij. (a) gi j =     1 0 0 0 1 0 0 0 1     = δi j, Ai j =       a11 a12 a13 a21 r2 a22 r2 a23 r2 a31 r2 sin2 θ a32 r2 sin2 θ a33 r2 sin2 θ       , (b) Aij =       a11 a12 r2 a13 r2 sin2 θ a21 r2 a22 r4 a23 r4 sin2 θ a31 r2 sin2 θ a32 r4 sin2 θ a33 r4 sin4 θ       . 2.3 Ve čtyřrozměrném prostoru (prostoročase) jsou zadány kovariantní tenzor Aµν a kovariantní metrický tenzor gαβ dané souřadné soustavy, v pořadí souřadnicových směrů t, u, v, w, ve tvaru Aµν =     a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a30 a31 a32 a33     , gαβ =     −1 0 0 0 0 1 0 w 0 0 u2 0 0 w 0 u2     . Určete: Kapitola 2. Pokračování tenzorového počtu (a) kontravariantní metrický tenzor gαβ a smíšený metrický tenzor gα β , (b) smíšený tenzor Aµ ν , (c) kontravariantní tenzor Aµν. (a) gαβ =           −1 0 0 0 0 u2 u2 − w2 0 w w2 − u2 0 0 1 u2 0 0 w w2 − u2 0 1 u2 − w2           , gα β =        1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1        = E = δα β, (b) Aµ ν =            −a00 −a01 −a02 −a03 u2 a10 − w a30 u2 − w2 u2 a11 − w a31 u2 − w2 u2 a12 − w a32 u2 − w2 u2 a13 − w a33 u2 − w2 a20 u2 a21 u2 a22 u2 a23 u2 w a10 − a30 w2 − u2 w a11 − a31 w2 − u2 w a12 − a32 w2 − u2 w a13 − a33 w2 − u2            , (c) Aµν =              a00 u2a10 − w a30 w2 − u2 − a20 u2 w a10 − a30 u2 − w2 u2a01 − w a03 w2 − u2 u4a11 + w2a33 − u2w S (w2 − u2)2 u2a21 − w a23 u2(u2 − w2) u2a31 + w2a13 − w T (u2 − w2)2 − a02 u2 u2a12 − w a32 u2(u2 − w2) a22 u4 a32 − w a12 u2(u2 − w2) w a01 − a03 u2 − w2 u2a13 + w2a31 − w T (u2 − w2)2 a23 − w a21 u2(u2 − w2) a33 + w2a11 − w S (w2 − u2)2              , kde T = u2a11 + a33 a S = a13 + a31. 2.4 Kovariantní tenzor elektromagnetického pole Fµν je definován, Fµν = ∂Aν ∂xµ − ∂Aµ ∂xν , kde tzv. čtyřpotenciál (čtyřvektor elektromagnetického potenciálu) Aµ = ϕ c , − ⃗A . Složka A0 = ϕ c vyjadřuje škálovaný skalární potenciál elektrického pole a složky A1, A2, A3 tvoří tzv. vektorový (magnetický) potenciál. Kovariantní čtyřvektor souřadnic události zapíšeme jako xµ = (ct, −⃗r). Metrický tenzor (Minkowskiho) plochého čtyřprostoru (prostoročasu) je dán rovnicí (2.5) a formalismus Levi-Civitova symbolu ϵ je popsán ve vysvětlujícím textu této podkapitoly. Vektory elektrické intenzity a magnetické indukce jsou definovány jako ⃗E = −⃗∇ϕ − ∂ ⃗A ∂t , ⃗B = ⃗∇ × ⃗A. Napište: Kapitola 2. Pokračování tenzorového počtu (a) explicitní podobu tenzoru Fµν a tenzoru Fµν, (b) duální tenzor ⋆Fµν a duální tenzor ⋆Fµν, (c) tzv. invarianty elektromagnetického pole FµνFµν a Fµν ⋆Fµν, (d) pomocí „čtyřrozměrné“ divergence εµνρσ ∂Fρσ ∂xν = ∂ ⋆Fµν ∂xν = 0 odvoďte první pár Maxwellových rovnic, (e) pomocí „čtyřrozměrné“ divergence ∂Fµν ∂xν = −µ0 jµ , kde jµ je kontravariantní čtyřvektor proudové hustoty jµ = (cρ,⃗j), odvoďte druhý pár Maxwellových rovnic. (a) Fµν =            0 Ex c Ey c Ez c − Ex c 0 −Bz By − Ey c Bz 0 −Bx − Ez c −By Bx 0            , Fµν =            0 − Ex c − Ey c − Ez c Ex c 0 −Bz By Ey c Bz 0 −Bx Ez c −By Bx 0            , (b) ⋆Fµν =           0 −Bx −By −Bz Bx 0 − Ez c Ey c By Ez c 0 − Ex c Bz − Ey c Ex c 0           , ⋆Fµν =           0 Bx By Bz −Bx 0 − Ez c Ey c −By Ez c 0 − Ex c −Bz − Ey c Ex c 0           , (c) FµνFµν = −2 E2 c2 − B2 , Fµν ⋆Fµν = 4 ⃗E · ⃗B c , (d) ∂ ⋆F0ν ∂xν = ⃗∇ · ⃗B = 0, ∂ ⋆Fiν ∂xν = −⃗∇ × ⃗E − ∂ ⃗B ∂t = ⃗0, i = 1, 2, 3, (e) ∂F0ν ∂xν = −⃗∇· ⃗E = − ρ ϵ0 , ∂Fiν ∂xν = µ0ϵ0 ∂ ⃗E ∂t −⃗∇× ⃗B = −µ0 ⃗j, i = 1, 2, 3, c = (µ0ϵ0)−1/2. 2.5 Kontravariantní tenzor energie-hybnosti Tαβ pro makroskopickou ideální tekutinu je de- finován Tαβ = (ε + p) uα uβ − p gαβ , kde ε = ρc2 je hustota energie (ρ je hustota hmoty), p je skalární tlak a uµ je tzv. čtyřrychlost (čtyřvektor rychlosti), definovaná zde jako tečna k tzv. světočáře s, tedy uµ = dxµ/ds, kde s = c τ. Tzv. vlastní čas τ v soustavě spojené s pohybujícím se tělesem je pomocí tzv. souřadnicového času t (tj. „normálního“ času pozorovatele) definován jako t = γτ, kde tzv. Lorentzův faktor γ = (1 − v2/c2)−1/2 (viz také příklad 9.8 ve skriptu Početní praktikum). Čtyřvektor události xµ a metrický tenzor Minkowskiho prostoročasu gµν lze odvodit pomocí jejich definice v příkladu 2.4 a v rovnici (2.5). Napište: Kapitola 2. Pokračování tenzorového počtu (a) explicitní podobu tenzoru Tαβ a tenzoru Tαβ, (b) explicitní podobu těchto tenzorů v soustavě (0), spojené s pohybující se tekutinou. (c) pomocí „čtyřrozměrné“ divergence tenzoru energie-hybnosti Tαβ pro „prach“, tj. soubor částic, které na sebe vzájemně nepůsobí, ∂Tαβ ∂xβ = 0, odvoďte rovnice kontinuity a hybnosti „bezsrážkové“ tekutiny. Pomocí výrazů: W = γ2 ε + v2 c2 p , Si = γ2 (ε + p) vi, σij = γ2 c2 (ε + p) vivj + p δij, σij = γ2 c2 (ε + p) vivj + p δij, můžeme zapsat, (a) Tαβ =            W − Sx c − Sy c − Sz c − Sx c σxx σxy σxz − Sy c σyx σyy σyz − Sz c σzx σzy σzz            , Tαβ =            W Sx c Sy c Sz c Sx c σxx σxy σxz Sy c σyx σyy σyz Sz c σzx σzy σzz            , kde Si = −Si a σij = σij pro i, j = 1, 2, 3, (b) Tαβ(0) = Tαβ(0) =        ε 0 0 0 0 p 0 0 0 0 p 0 0 0 0 p        , (c) ∂T0β ∂xβ = ∂˜ρ ∂t + ⃗∇ · (˜ρ⃗v) = 0, ∂Tiβ ∂xβ i=1,2,3 = ∂˜ρ⃗v ∂t + ⃗∇ · (˜ρ⃗v ⊗ ⃗v) = 0, kde „bezsrážkovost“ předpokládá p = 0, hustota ˜ρ = γ2ρ, odpovídající soustavě kde ⃗v ̸= 0, je daná podílem hmotnosti ˜m = γm (srovnej příklad 9.8 ve skriptu Početní praktikum) a objemu ˜V = V/γ (veličiny ρ, m a V odpovídají soustavě, kde ⃗v = 0). • Tenzory v zakřiveném prostoročase V obecné relativitě (GR) zavádíme a používáme metrické tenzory zakřiveného prostoročasu. Známá Schwarzschildova metrika popisuje geometrii prostoročasu ve velmi silném gravitačním poli, například v blízkosti (sféricky symetrické, nerotující) černé díry. V souladu s již dříve zvolenou konvencí + − −−, metrický tenzor Schwarzschildovy metriky (v pořadí souřadnic t, r, θ, ϕ) má kanonický tvar gµν =     1 − 2GM• c2r 0 0 0 0 − 1 − 2GM• c2r −1 0 0 0 0 −r2 0 0 0 0 −r2 sin2 θ     , (2.7) Kapitola 2. Pokračování tenzorového počtu kde M• je hmotnost sférického gravitujícího objektu (zdroje gravitace), G je gravitační konstanta a c je rychlost světla (často používané výrazy 1− 2M• r v takzvaném “systému přirozených jednotek” pokládají hodnoty konstant G a c rovny jedné). Kontravariantní tvar metrického tenzoru gµν bude vyjádřen pomocí převrácených hodnot výrazů na hlavní diagonále. Christoffelovy symboly Γρ µν Schwarzschildovy metriky (popisující křivost prostoročasu), které jsou obecně vyjádřeny jako (viz také rovnice (3.12), zde ovšem rozlišíme kovariantní a kontravariantní čtyřvektory polohy xµ = (ct, −⃗r) a xµ = (ct,⃗r)) Γρ µν = 1 2 gρλ ∂gνλ ∂xµ + ∂gµλ ∂xν − ∂gµν ∂xλ , (2.8) budou (zapíšeme pouze nenulové členy) Γt tr = Γt rt = GM• r (c2r − 2GM•) , Γr tt = GM• c2r − 2GM• c4r3 , Γr rr = − GM• r (c2r − 2GM•) , Γr θθ = − r − 2GM• c2 , Γr ϕϕ = − c2r − 2GM• sin2 θ c2 , Γθ θr = Γθ rθ = Γϕ ϕr = Γϕ rϕ = 1 r , Γθ ϕϕ = − sin θ cos θ, Γϕ ϕθ = Γϕ θϕ = cotg θ. (2.9) Můžeme rovněž zkonstruovat Christoffelovy symboly se spodními indexy (někdy v literatuře nazývané Christoffelovy symboly prvního typu, zatímco výše uvedené se nazývají Christoffelovy symboly druhého typu), kdy snížení indexů provedeme pomocí Γρµν = gρλΓλ µν, Γttr = Γtrt = GM• c2r2 , Γrtt = − GM• c2r2 , Γrrr = − GM•c2 (c2r − 2GM•)2 , Γrθθ = r, Γrϕϕ = r sin2 θ, Γθθr = Γθrθ = −r, Γϕϕr = Γϕrϕ = −r sin2 θ, Γθϕϕ = r2 sin θ cos θ, Γϕϕθ = Γϕθϕ = −r2 sin θ cos θ. (2.10) Pomocí Christoffelových indexů můžeme zkonstruovat Riemannův (křivostní) tenzor čtvrtého řádu Rα µβν jako zásadní matematický nástroj v GR teorii, který reprezentuje slapové síly, které „pociťuje“ částice (těleso), pohybující se po geodetice (nejkratší spojnici dvou bodů v libovolně zakřiveném prostoru). Jeho obecný výraz je Rα µβν = ∂βΓα µν − ∂νΓα µβ + Γα βλΓλ µν − Γα νλΓλ µβ, (kde zjednodušený výraz ∂α nadále znamená ∂ ∂α ) zahrnující první dva lineární členy (parciální derivace) a poslední dva členy jako nelineární součiny Christoffelových symbolů. Pomocí substituce 2GM• c2 = rs (takzvaný Schwarzschildův poloměr nebo také poloměr horizontu událostí), nenulové členy Riemannova tenzoru Schwarzschildovy metriky budou Rt rtr = 2Rθ rrθ = 2Rϕ rrϕ = −Rt rrt = −2Rθ rθr = −2Rϕ rϕr = rs r2 (r − rs) , 2Rt θθt = 2Rr θθr = Rϕ θϕθ = −2Rt θtθ = −2Rr θrθ = −Rϕ θθϕ = rs r , 2Rt ϕϕt = 2Rr ϕϕr = Rθ ϕθϕ = −2Rt ϕtϕ = −2Rr ϕrϕ = −Rθ ϕϕθ = rs sin2 θ r , Rr ttr = 2Rθ tθt = 2Rϕ tϕt = −Rr trt = −2Rθ ttθ = −2Rϕ ttϕ = c2 rs (r − rs) r4 . (2.11) Pomocí kontrakce Rα µαν Riemannova tenzoru zkonstruujeme symetrický Ricciho (křivostní) tenzor Rµν = Rνµ, který odráží míru lokální deformace daného metrického tenzoru ve srovnání s Eukleidovským (nebo pseudo-Eukleidovským) prostorem. Z definice tenzorové kontrakce Kapitola 2. Pokračování tenzorového počtu můžeme zkonstruovat Ricciho tenzor přímo použitím Christoffelových symbolů jako Rµν = ∂ρΓρ µν − ∂νΓρ µρ + Γρ ρλΓλ µν − Γρ µλΓλ νρ. V případě Schwarzchildovy metriky bude Ricciho tenzor Rµν = 0. Každému bodu Riemannovské variety (libovolně zakřiveného topologického prostoru, na kterém je možné měřit vzdálenosti bodů a úhly tečných vektorů) můžeme přiřadit jedno reálné číslo, dané geometrií metriky v okolí tohoto bodu, takzvaný Ricciho skalár R, definovaný jako R = gµνRµν. Výše popsaný matematický formalismus nám nyní umožní sestavit kompletní Einsteinovy rovnice pole (pro jednoduchost zde vynecháme kosmologickou konstantu Λ) Rµν − 1 2 gµνR = 8πG c4 Tµν, (2.12) kde celá levá strana je často označována jako Einsteinův tenzor Gµν a kde Tµν je tenzor energiehybnosti (viz příklad 2.5). „Ruční“ počítání takto rozsáhlých tenzorů bývá velmi pracné a náchylné k chybám či opomenutím, v současnosti existuje řada programů, umožňujících analytické i numerické počitání s tenzory v libovolné metrice (například MATHEMATICA, Pythonovské aplikace a podobně). Kapitola 3 Křivočaré souřadnice Základní principy, týkající se hlavních křivočarých souřadnicových systémů a transformačních vztahů s nimi spojených, byly již uvedeny v kapitole 4 ve skriptu Početní praktikum. Kromě válcové (cylindrické) a kulové (sférické) soustavy existuje dále celá řada speciálních křivočarých souřadnicových soustav, např. eliptická, parabolická, kónická, atd., včetně soustav neortogonálních, tj. takových, kdy jednotlivé souřadnicové směry nesvírají pravý úhel. Zvládnutí matematického aparátu, popisujícího křivočaré souřadnice, jejich vztahy a vzájemné převody, je pro fyzikální praxi nezbytné. V následující příloze si ukážeme podrobněji praktické postupy při počítání v kartézských, válcových, kulových a některých dalších souřadnicových soustavách, včetně odvození metrických tenzorů, diferenciálních operátorů, vektorů polohy, rychlosti a zrychlení, atd. 3.1 Kartézská soustava Ačkoli kartézská soustava de facto nepatří mezi křivočaré soustavy, uvádíme ji zde jako přirozeně výchozí ortogonální souřadnou soustavou, na níž si názorně ukážeme základní vztahy a geometrické principy, které v rámci složitějších, skutečně křivočarých souřadných soustav již pouze analogicky upřesníme a aplikujeme. Její zásadní předností je, že (jednotkové) vektory kartézské báze (v celé kapitole 3 dále implicitně předpokládáme, že se „pohybujeme“ v R3, rovněž zde budeme používat typograficky přehlednější „stříškové“ značení tučně vysázených jednotkových bázových vektorů, tedy například ^x místo ⃗ex, atd.), ⃗ex = ^x = (1, 0, 0), ⃗ey = ^y = (0, 1, 0), ⃗ez = ^z = (0, 0, 1), (3.1) jsou konstantní (mají stále stejnou velikost a stále stejný směr), derivace těchto vektorů jsou tedy nulové. Pro druhou mocninu vzdálenosti dvou bodů v diferenciálním tvaru platí ds2 = dx2 + dy2 + dz2 , což lze zobecnit tzv. metrickou formou, ds2 = gij dxi dxj , (3.2) kde indexy i, j značí jednotlivé souřadnicové směry (i, j = x, y, z) a zároveň tak určují jednotlivé složky 3 × 3 metrického tenzoru. Kovariantní metrický tenzor gij kartézské soustavy má tedy elementární tvar jednotkové matice. Význam kontravariantního metrického tenzoru gij kartézské soustavy je formálně určen druhou mocninou velikosti vektoru ∂ ∂s 2 = gij ∂ ∂xi ∂ ∂xj = ∂ ∂x 2 + ∂ ∂y 2 + ∂ ∂z 2 . (3.3) Kapitola 3. Křivočaré souřadnice Zároveň musí pro každou metriku obecně platit gij gij = E, kovariantní a kontravariantní metrický tenzor tak budou vždy tvořit vzájemně inverzní matice. V kartézské soustavě budou mít tedy tvar gij =   1 0 0 0 1 0 0 0 1   , gij =   1 0 0 0 1 0 0 0 1   . (3.4) 3.1.1 Diferenciální operátory • Gradient skalární funkce f(x, y, z) je v kartézské soustavě definován (viz kapitola 5.3 ve skriptu Početní praktikum) jako vektor ve tvaru ⃗∇f = grad f = ^x ∂f ∂x + ^y ∂f ∂y +^z ∂f ∂z = ∂f ∂x , ∂f ∂y , ∂f ∂z . (3.5) Gradient vyjadřuje v každém bodě skalárního pole směr největšího (nejstrmějšího) nárůstu tohoto pole. Gradient vektoru (vektorového pole) ⃗A(x, y, z) je definován jako tenzor druhého řádu (viz kapitola 2.3 ve skriptu Početní praktikum) ve tvaru ⃗∇ ⃗A = grad ⃗A = ^x ∂ ∂x + ^y ∂ ∂y +^z ∂ ∂z Ax^x + Ay^y + Az^z . (3.6) Protože se jedná o tzv. tenzorový součin, kdy se jednotlivé vektory báze násobí jako matice, z nichž první je sloupcová a druhá řádková, je třeba pro určení prvků tenzoru vždy zachovávat jejich pořadí. Pomocí maticového formalismu můžeme tenzor gradientu vektorového pole zapsat jako (viz například Arfken & Weber (2005)) ⃗∇ ⃗A =         ^x ^y ^z ^x ∂Ax ∂x ∂Ay ∂x ∂Az ∂x ^y ∂Ax ∂y ∂Ay ∂y ∂Az ∂y ^z ∂Ax ∂z ∂Ay ∂z ∂Az ∂z         . (3.7) Maticový zápis gradientu vektoru je v rovnici (3.7) uspořádán jako tzv. „rozvržení dle jmenovatele“ (denominator layout). Pro podrobnější vysvětlení - viz text pod rovnicí 2.57 v pdf formě skript. • Divergence vektoru (vektorového pole) ⃗A(x, y, z) je definována jako skalár (skalární pole) ⃗∇ · ⃗A = div ⃗A = ^xi · ^xj ∂Ai ∂xj = ∂Ax ∂x + ∂Ay ∂y + ∂Az ∂z . (3.8) Divergence vektoru v ortogonálních soustavách odpovídá stopě tenzoru gradientu vektorového pole, je tedy kontrakcí tohoto tenzoru (viz kapitola 2.3 ve skriptu Početní praktikum). V obecných ortogonálních souřadnicích může být zapsána ve formě ⃗∇ · ⃗A = ∂ ∂xj (hk Ak ) + Γk jlhl Al δk j = ∂ ∂xj (hj Aj ) + Γj jlhl Al . (3.9) Kapitola 3. Křivočaré souřadnice S využitím rovnice (2.1) lze tento výraz přepsat rovněž do tvaru ⃗∇ · ⃗A = ∂ ∂xj (hkAk) − Γl jkhlAl δjk = ∂ ∂xj (hjAj) − Γl jjhlAl. (3.10) Členy hi jsou tzv. Laméovy koeficienty (viz kapitola 4 ve skriptu Početní praktikum), často také nazývané škálovací faktory (nezaměňovat se stejnojmennými Laméovými koeficienty v mechanice kontinua), pojmenované po francouzském matematikovi Gabrieli Lamé, kde v příslušném metrickém tenzoru platí hihi = gii, hi hi = gii (3.11) (proto nyní uvažujeme jen ortogonální soustavy, jejichž metrické tenzory mají nenulové prvky pouze na hlavní diagonále). Výraz Γl jk je tzv. Christoffelův symbol (viz kapitola 2.3 ve skriptu Početní praktikum) pojmenovaný po německém matematikovi a fyzikovi Elwin Bruno Christoffelovi, definující tzv. členy křivosti v křivočarých souřadných soustavách, Γl jk = 1 2 glm ∂gkm ∂xj + ∂gjm ∂xk − ∂gjk ∂xm , (3.12) kde indexy l, m jsou tzv. volné indexy, které mohou kdykoli nabývat kterékoli z hodnot 1, 2, 3, respektive x, y, z. Explicitní výraz pro divergenci vektoru v obecné ortogonální soustavě lze zapsat formou (kde i ̸= j ̸= k) ⃗∇ · ⃗A = 1 hihjhk ∂ ∂xi (hjhkAi) + ∂ ∂xj (hkhiAj) + ∂ ∂xk (hihjAk) , (3.13) Ta je zcela ekvivalentní kompaktnější formě zápisu, ⃗∇ · ⃗A = 1 √ g ∂ ∂xi (hjhkAi) = 1 √ g ∂ ∂xi √ g hi Ai . (3.14) Složky hiAi (v literatuře se většinou zkráceně uvádí pouze Ai) vektoru ⃗A odpovídají (viz rovnice (2.1)) hiAi = gij(hjAj), g je determinant metrického tenzoru, který je identický s druhou mocninou příslušného Jakobiánu souřadnicové transformace. Platí tedy |det gij| = J, |det gij| = J−1 . (3.15) Obecně platí, že divergencí tenzoru řádu n je tenzor řádu n−1, divergencí tenzoru druhého řádu tak bude vektor. Kompaktní forma zápisu divergence tenzoru druhého řádu bude mít tvar ∇jAij = Ai. (3.16) Explicitní zápis divergence tenzoru druhého řádu v kartézském systému (prakticky se jedná o maticové násobení vektoru s transponovanou maticí; při skalárním součinu dvou vektorů se také jedná o maticové násobení dvou vektorů, kdy druhý z vektorů je transponovaný, tedy sloupcový (viz kapitola 2.3 ve skriptu Početní praktikum), bude vypadat (viz Arfken & Weber (2005)) ⃗∇ · Aij = ^x ∂ ∂x + ^y ∂ ∂y +^z ∂ ∂z    ^x ^y ^z ^x Axx Axy Axz ^y Ayx Ayy Ayz ^z Azx Azy Azz    T = (3.17) ^x ∂Axx ∂x + ∂Axy ∂y + ∂Axz ∂z + ^y ∂Ayx ∂x + ∂Ayy ∂y + ∂Ayz ∂z +^z ∂Azx ∂x + ∂Azy ∂y + ∂Azz ∂z . Kapitola 3. Křivočaré souřadnice • Rotací vektoru (vektorového pole) ⃗A(x, y, z) v kartézské soustavě nazýváme vektor ⃗∇ × ⃗A = ^x ∂Az ∂y − ∂Ay ∂z + ^y ∂Ax ∂z − ∂Az ∂x +^z ∂Ay ∂x − ∂Ax ∂y . (3.18) Obecný výraz pro vektor rotace ⃗∇× ⃗A vektoru ⃗A v libovolné ortogonální souřadné soustavě lze definovat způsobem ⃗∇ × ⃗A = ϵijk 1 hjhk [∇j(hkAk)]^xi = ϵijk 1 hjhk ∂ ∂xj (hkAk) − Γl jkhlAl ^xi . (3.19) V rovnici (3.19) výraz ϵijk (kde všechny tři indexy i, j, k mohou odpovídat postupně všem třem souřadnicovým směrům) odpovídá antisymetrickému, (tzv. Levi-Civitovu, viz rovnice 2.50 ve skriptu Početní praktikum) symbolu, který nabývá hodnoty +1 pro sudé permutace indexů, −1 pro liché permutace indexů a 0 pokud se dva nebo více indexů opakuje. Díky symetrii indexů ve složkách vektoru rotace a díky úplné antisymetričnosti LeviCivitova ϵ-symbolu, se výrazy Γl jkAl v rovnici (3.19) vyruší, celý výraz se tak zjednoduší do podoby ⃗∇ × ⃗A = ϵijk 1 hjhk ∂ ∂xj (hkAk) ^xi . (3.20) V kartézské soustavě, kde h1, h2, h3 = 1, bude rovnice (3.20) odpovídat rovnici (3.18). Zapíšeme-li vektor rotace znovu po složkách, dostáváme ⃗∇ × ⃗A = ∂Az ∂y − ∂Ay ∂z , ∂Ax ∂z − ∂Az ∂x , ∂Ay ∂x − ∂Ax ∂y . (3.21) • Laplacián (Laplaceův operátor) je definován jako divergence gradientu, tedy ⃗∇·⃗∇ (používá se pro něj symbol ∆), jedná se tedy o skalární operátor, který může působit na skalární funkce, vektory (po jednotlivých složkách), tenzory (po jednotlivých prvcích), aniž by měnil jejich řád (t.j. skalár zůstává skalárem, vektor vektorem, atd.). V kartézské soustavě má laplacián zcela jednoduchý tvar: analogicky k rovnici (3.8), kde složky vektoru ⃗A nahradíme složkami vektoru gradientu, můžeme psát ∆ = ⃗∇ · ⃗∇ = div grad = ∂2 ∂x2 + ∂2 ∂y2 + ∂2 ∂z2 . (3.22) 3.1.2 Plochy, objemy Označme Sk souřadnicovou plochu (viz kapitola 4.1 ve skriptu Početní praktikum) s konstantní hodnotou souřadnice xk, ohraničenou souřadnicovými křivkami xi, xi + ∆xi, xj, xj + ∆xj, i ̸= j ̸= k. V kartézské soustavě půjde např. o plochu s konstantní hodnotou z = z0, ohraničenou přímkami x = x0, x = x0 + ∆x, y = y0, y = y0 + ∆y. Výpočet velikosti takové plochy je zde samozřejmě zcela triviální, půjde o obdélník (čtverec) s obsahem ∆x∆y. Obecný vztah pro výpočet velikosti takové plochy bude mít tvar Sk = x0i+∆xiˆ x0i x0j+∆xjˆ x0j J′ ij dxi dxj, (3.23) Kapitola 3. Křivočaré souřadnice kde J′ ij je druhá odmocnina absolutní hodnoty determinantu (minoru) příslušné submatice metrického tenzoru. V uvedeném případě by se jednalo o determinant J′ ij = |giigjj − gijgji|. Integrand rovnice (3.23) definujeme jako plošný element dSk = J′ ij dxi dxj. V kartézské soustavě budou determinanty všech tří submatic J′ ij = 1. Dále, označíme-li V objem, vymezený souřadnicovými plochami s konstantními souřadnicemi xi, xi + ∆xi, xj, xj + ∆xj, xk, xk + ∆xk, i ̸= j ̸= k, obecný vztah pro výpočet velikosti takového objemu bude mít tvar V = x0i+∆xiˆ x0i x0j+∆xjˆ x0j x0k+∆xkˆ x0k J dxi dxj dxk, (3.24) kde J je druhá odmocnina absolutní hodnoty determinantu metrického tenzoru (Jakobiánu, viz rovnice (3.15)). Integrand rovnice (3.24) vyjadřuje objemový element dV = J dxi dxj dxk. V kartézské soustavě opět J = 1, vymezený prostor bude mít tvar pravoúhlého kvádru o objemu ∆x∆y∆z. 3.1.3 Vektory polohy, rychlosti a zrychlení V kartézské soustavě je zápis vektorů velmi jednoduchý, polohový vektor ⃗r, vektor rychlosti ⃗v a vektor zrychlení ⃗a budou mít postupně tvar, ⃗r = x^x + y^y + z^z = (x, y, z), (3.25) ⃗v = d⃗r dt = ˙x^x + ˙y^y + ˙z^z = vx^x + vy^y + vz^z = (vx, vy, vz), (3.26) ⃗a = d⃗v dt = ¨x^x + ¨y^y + ¨z^z = ax^x + ay^y + az^z = (ax, ay, az), (3.27) kde ˙x = dx/dt, ˙y = dy/dt a ˙z = dz/dt. 3.2 Válcová soustava Válcová soustava může být vhodná pro popis celé řady osově symetrických a rotačních jevů, např. elektrického a magnetického pole okolo přímých vodičů, vírů v tekutinách, galaxií, hvězdných disků, atd. Souřadnicové směry jsou (viz rovněž kapitola 4.2 ve skriptu Početní praktikum): ρ - vzdálenost od osy válcové symetrie, ϕ - azimutální úhel, z - výška. Převod z válcové do kartézské soustavy je dán vztahy1 x = ρ cos ϕ, y = ρ sin ϕ, z = z. (3.28) Pro zpětnou transformaci z kartézské do válcové soustavy platí ρ = x2 + y2, ϕ = arccos x x2 + y2 , ϕ = arcsin y x2 + y2 , ϕ = arctg y x . (3.29) Jednotkové vektory válcové báze budou mít v kartézské soustavě tvar (viz obrázek 3.1) ^ρ = ^x cos ϕ + ^y sin ϕ = (cos ϕ, sin ϕ, 0), ^ϕ = −^x sin ϕ + ^y cos ϕ = (− sin ϕ, cos ϕ, 0), ^z = (0, 0, 1). (3.30) 1 V dalším popisu budeme rozlišovat ρ pro radiální válcovou souřadnici, r pro radiální kulovou souřadnici. Kapitola 3. Křivočaré souřadnice eφ eρ ex ey φ Obrázek 3.1: Schéma vzájemné transformace jednotkových bázových vektorů kartézské a válcové souřadné soustavy (viz rovnice (3.30)). Osa z je pro obě soustavy shodná a míří z počátku směrem k nám. Jediným konstantním bázovým vektorem tak bude vektor ^z, ostatní bázové vektory mění směr v závislosti na úhlu ϕ. Nenulové derivace bázových vektorů ve směru souřadnicových os a nenulové časové derivace bázových vektorů budou (z rovnice (3.30)) ∂^ρ ∂ϕ = (− sin ϕ, cos ϕ, 0) = ^ϕ, ∂^ρ ∂t = ∂^ρ ∂ϕ ∂ϕ ∂t = ^ϕ ˙ϕ, ∂^ϕ ∂ϕ = (− cos ϕ, − sin ϕ, 0) = −^ρ, ∂^ϕ ∂t = ∂^ϕ ∂ϕ ∂ϕ ∂t = −^ρ ˙ϕ. (3.31) Pokud budeme derivovat jednotkové vektory válcové báze ve směru kartézských souřadnicových os, potom např. ve směru osy x dostaneme ∂^ρ ∂x = ∂ ∂x (cos ϕ, sin ϕ, 0) = ∂ ∂x x x2 + y2 , y x2 + y2 , 0 = −^ϕ sin ϕ ρ , ∂^ϕ ∂x = ∂ ∂x (− sin ϕ, cos ϕ, 0) = ^ρ sin ϕ ρ . (3.32) Obdobně získáme derivace ve všech ostatních směrech. Zpětná transformace jednotkových bázových vektorů (viz rovnice (3.30)) bude ^x = ^ρ cos ϕ − ^ϕ sin ϕ, ^y = ^ρ sin ϕ + ^ϕ cos ϕ, ^z = ^z. (3.33) Metrickou formu válcové soustavy snadno odvodíme, uvědomíme-li si, že vzdálenost dvou bodů v prostoru musí být nezávislá na volbě souřadného systému, tedy ds2 z rovnice (3.2) se musí pro všechny souřadné soustavy rovnat. Z rovnice (3.28) dostaneme, dx = cos ϕ dρ − ρ sin ϕ dϕ, dy = sin ϕ dρ + ρ cos ϕ dϕ, dz = dz, (3.34) dosazením do rovnice (3.2) dostáváme metrickou formu válcové souřadnicové soustavy, ds2 = dρ2 + ρ2 dϕ2 + dz2 . (3.35) Můžeme tedy napsat kovariantní (gij) i kontravariantní (gij) metrický tenzor a také (viz rovnice (3.11)) příslušné Laméovy koeficienty válcové souřadnicové soustavy, gij =   1 0 0 0 ρ2 0 0 0 1   , gij =     1 0 0 0 1 ρ2 0 0 0 1     , hρ = 1, hϕ = ρ, hz = 1. (3.36) Nenulové Christoffelovy symboly válcové metriky z rovnice (3.12) budou Γρ ϕϕ = −ρ, Γϕ ϕρ (Γϕ ρϕ) = 1 ρ . (3.37) Kapitola 3. Křivočaré souřadnice 3.2.1 Diferenciální operátory • Gradient skalární funkce f(ρ, ϕ, z) ve válcové soustavě odvodíme z rovnice (3.5), kam za jednotkové bázové vektory dosadíme výrazy z rovnice (3.33) a jednotlivé složky gradientu rozvineme řetězovým pravidlem pro derivace. Po rozepsání dostáváme ⃗∇f = ^ρ cos ϕ − ^ϕ sin ϕ ∂f ∂ρ ∂ρ ∂x + ∂f ∂ϕ ∂ϕ ∂x + ∂f ∂z ∂z ∂x + + ^ρ sin ϕ + ^ϕ cos ϕ ∂f ∂ρ ∂ρ ∂y + ∂f ∂ϕ ∂ϕ ∂y + ∂f ∂z ∂z ∂y +^z ∂f ∂z . (3.38) Jednotlivé nenulové parciální derivace vypočítáme z rovnice (3.29), ∂ρ ∂x = x x2 + y2 = cos ϕ, ∂ϕ ∂x = − y x2 + y2 = − sin ϕ ρ , ∂ρ ∂y = y x2 + y2 = sin ϕ, ∂ϕ ∂y = x x2 + y2 = cos ϕ ρ . (3.39) Po dosazení a úpravě dostaneme výslednou podobu gradientu skalární funkce, ⃗∇f = ^ρ ∂f ∂ρ + ^ϕ 1 ρ ∂f ∂ϕ +^z ∂f ∂z = ∂f ∂ρ , 1 ρ ∂f ∂ϕ , ∂f ∂z . (3.40) Nyní již za jednotkové vektory válcové báze nedosazujeme jejich složky z rovnice (3.30), kde jsme je „viděli“ ze soustavy kartézské. Analogicky k rovnici (3.6) (tenzorový součin) a s použitím rovnice (3.40) je potom gradient vektorového pole ⃗A(ρ, ϕ, z) ve válcové soustavě definován jako tenzor druhého řádu ve tvaru ⃗∇ ⃗A = ^ρ ∂ ∂ρ + ^ϕ 1 ρ ∂ ∂ϕ +^z ∂ ∂z Aρ^ρ + Aϕ ^ϕ + Az^z . (3.41) Na rozdíl od kartézské soustavy zde již jednotkové bázové vektory ^ρ a ^ϕ nejsou konstantní, operátor gradientu tedy fakticky působí i na ně (jejich derivace jsou rozepsány v rovnici (3.31)). Pomocí maticového formalismu můžeme tenzor gradientu vektorového pole ve válcové soustavě zapsat ⃗∇ ⃗A =          ^ρ ^ϕ ^z ^ρ ∂Aρ ∂ρ ∂Aϕ ∂ρ ∂Az ∂ρ ^ϕ 1 ρ ∂Aρ ∂ϕ − Aϕ ρ 1 ρ ∂Aϕ ∂ϕ + Aρ ρ 1 ρ ∂Az ∂ϕ ^z ∂Aρ ∂z ∂Aϕ ∂z ∂Az ∂z          . (3.42) Stejného výsledku docílíme i jiným postupem, např. s použitím formalismu Christoffelových symbolů (viz rovnice (3.37)), kde na rozdíl od rovnice (3.19) zapíšeme ⃗∇ ⃗A = 1 hjhk [∇j(hkAk)]^xj^xk = 1 hjhk ∂ ∂xj (hkAk) − Γl jkhlAl ^xj^xk. (3.43) Postup podle rovnice (3.43) lze ovšem použít pouze pro ortogonální souřadné soustavy, postup podle rovnice (3.41) platí zcela obecně. Kapitola 3. Křivočaré souřadnice • Divergence vektoru (vektorového pole) ⃗A(ρ, ϕ, z) je ve válcových souřadnicích ve smyslu rovnice (3.41), analogicky k rovnici (3.8), definována jako skalár (skalární pole) ⃗∇ · ⃗A = 1 ρ ∂ ∂ρ (ρAρ) + 1 ρ ∂Aϕ ∂ϕ + ∂Az ∂z . (3.44) Porovnáním s rovnicí (3.42) opět vidíme, že divergence je stopou tenzoru gradientu vektorového pole. Divergencí tenzoru druhého řádu, popsaného maticí 3×3, bude vektor (tenzor 1. řádu). Explicitní formu zápisu divergence tenzoru druhého řádu ve válcových souřadnicích (srovnej s rovnicí (3.17) zde již uvádět nebudu, zájemce odkazuji na literaturu, např. Abramowitz & Stegun (1972), Young (1993), Arfken & Weber (2005), atd. • Rotaci vektoru (vektorového pole) ⃗A(ρ, ϕ, z) ve válcové soustavě, kde hρ = 1, hϕ = ρ, hz = 1, odvodíme podle již uvedeného vztahu (3.20). Dostáváme ⃗∇ × ⃗A = 1 ρ ∂Az ∂ϕ − ∂Aϕ ∂z ^ρ + ∂Aρ ∂z − ∂Az ∂ρ ^ϕ + 1 ρ ∂ ∂ρ (ρAϕ) − ∂Aρ ∂ϕ ^z. (3.45) • Laplacián odvodíme (viz rovnice (3.22)), nahradíme-li v rovnici divergence (3.44) složky vektoru ⃗A odpovídajícími složkami vektoru gradientu z rovnice (3.40). Dostáváme ∆ = 1 ρ ∂ ∂ρ ρ ∂ ∂ρ + 1 ρ2 ∂2 ∂ϕ2 + ∂2 ∂z2 . (3.46) 3.2.2 Plochy, objemy Stejně jako v kartézské soustavě označme Sk souřadnicovou plochu s konstantní hodnotou souřadnice xk, ohraničenou souřadnicovými křivkami xi, xi + ∆xi, xj, xj + ∆xj, i ̸= j ̸= k. Ve válcové soustavě půjde např. o plochu s konstantní hodnotou z = z0, ohraničenou polopřímkami ϕ = ϕ1, ϕ = ϕ2 a křivkami (kružnicemi) ρ = ρ1, ρ = ρ2. Výpočet velikosti takové plochy již není tak zcela triviální, jako v kartézské soustavě, půjde o průnik kruhové výseče s plochou mezi dvěma soustřednými kružnicemi. Pokud budeme uvažovat jinou plochu, např. s konstantní souřadnicí ρ = ρ0, ohraničenou souřadnicovými plochami ϕ = ϕ1, ϕ = ϕ2, z = z1, z = z2, půjde o část válcové plochy. Při výpočtech velikostí těchto ploch vyjdeme z rovnic (3.23) a (3.36), Sρ = ϕ2ˆ ϕ1 z2ˆ z1 √ gϕϕ gzz dϕ dz = ϕ2ˆ ϕ1 z2ˆ z1 ρ dϕ dz = ρ∆ϕ∆z, Sϕ = z2ˆ z1 ρ2ˆ ρ1 √ gzz gρρ dz dρ = z2ˆ z1 ρ2ˆ ρ1 dz dρ = ∆z∆ρ, (3.47) Sz = ρ2ˆ ρ1 ϕ2ˆ ϕ1 √ gρρ gϕϕ dρ dϕ = ρ2ˆ ρ1 ϕ2ˆ ϕ1 ρ dρ dϕ = ρ2 2 − ρ2 1 2 ∆ϕ. Ve válcovém souřadnicovém systému budou nediagonální členy submatic J′ ij (viz rovnice (3.23)) nulové. Označíme-li V objem, vymezený souřadnicovými plochami s konstantními souřadnicemi ρ1, ρ2, ϕ1, ϕ2, z1, z2, velikost tohoto objemu dle rovnice (3.24) bude V = ρ2ˆ ρ1 ϕ2ˆ ϕ1 z2ˆ z1 ρ dρ dϕ dz = ρ2 2 − ρ2 1 2 ∆ϕ∆z. (3.48) Kapitola 3. Křivočaré souřadnice Obdobným způsobem můžeme pomocí stanovení integračních mezí vypočítat v daném souřadnicovém systému velikost jakéhokoli jiného složitějšího útvaru. 3.2.3 Vektory polohy, rychlosti a zrychlení Při popisu vektorů ve válcové soustavě vyjdeme z jejich popisu v soustavě kartézské a dosadíme všechny rovnice pro derivace jednotkových vektorů i vektorových složek (rovnice (3.28) - (3.33)). Polohový vektor a vektor rychlosti ve válcové soustavě budou ⃗r = x^x + y^y + z^z = ρ^ρ + z^z, ⃗v = d⃗r dt = ˙ρ^ρ + ρ ˙ϕ^ϕ + ˙z^z. (3.49) Tento tvar lze očekávat, vzhledem k tomu, že polohový vektor vždy vychází z počátku souřadnic. Vektory rychlosti a zrychlení jsou zároveň definovány jako ⃗v = vρ^ρ + vϕ ^ϕ + vz^z, ⃗a = d⃗v dt = aρ^ρ + aϕ ^ϕ + az^z. (3.50) Derivováním rovnice (3.49) podle času dostáváme jednotlivé složky vektoru zrychlení, aρ = ¨ρ − ρ ˙ϕ2 = dvρ dt − ρ ˙ϕ2 , aϕ = ρ¨ϕ + 2 ˙ρ ˙ϕ = dvϕ dt + ˙ρ ˙ϕ, az = ¨z = dvz dt . (3.51) Protože d/dt = ∂/∂t + ⃗v · ⃗∇ (řetězové pravidlo pro derivování, v tomto případě pro parciální derivace ⃗v = ⃗v(t, ρ, ϕ, z)), potom zrychlení, vyjádřené pomocí složek vektoru rychlosti bude aρ = ∂vρ ∂t + vρ ∂vρ ∂ρ + vϕ ρ ∂vρ ∂ϕ + vz ∂vρ ∂z (⃗v·⃗∇)vρ − v2 ϕ ρ , (3.52) aϕ = ∂vϕ ∂t + vρ ∂vϕ ∂ρ + vϕ ρ ∂vϕ ∂ϕ + vz ∂vϕ ∂z (⃗v·⃗∇)vϕ + vρvϕ ρ , (3.53) az = ∂vz ∂t + vρ ∂vz ∂ρ + vϕ ρ ∂vz ∂ϕ + vz ∂vz ∂z (⃗v·⃗∇)vz . (3.54) 3.3 Kulová soustava Kulová soustava je vhodná pro popis jevů s centrální symetrií, jako jsou např. fyzikální pole, tvořená hmotnými body, astronomickými tělesy, atd. Její základní popis naleznete již v kapitole 4.3 ve skriptu Početní praktikum. Mimo jiné se implicitně používá také v kartografii, kde soustava poledníků a rovnoběžek je vlastně soustava azimutálních a elevačních úhlových souřadnic (viz dále). Zde je ovšem elevační úhel počítán jiným způsobem, v „matematické konvenci“ roste od 0 do π (polární úhel), v „kartografické konvenci“ roste od −π/2 do π/2 (elevační úhel), navíc v opačném smyslu vůči směru nárůstu azimutální souřadnice. Souřadnicové směry jsou: r - vzdálenost od středu kulové symetrie, θ - polární úhel, ϕ - azimutální úhel. Převod z kulové do kartézské soustavy je dán vztahy x = r sin θ cos ϕ, y = r sin θ sin ϕ, z = r cos θ. (3.55) Kapitola 3. Křivočaré souřadnice ex ey ez er eθ eφ φ θ r P x y z Obrázek 3.2: Schéma vzájemné transformace jednotkových bázových vektorů kartézské a kulové souřadné soustavy (viz rovnice (3.55)). Bázové vektory ortonormální kartézské báze jsou vyznačeny silně černě, bázové vektory ortonormální kulové báze jsou vyznačeny silně červeně. Obecný bod P je určen svým polohovým vektorem ⃗r, směr bázového vektoru ⃗er je totožný se směrem vektoru ⃗r. Čárkovaně červeně je znázorněna část poloroviny Sϕ procházející osou z s konstantní souřadnicí ϕ (rostoucí od osy x k polorovině Sϕ), bázový vektor ⃗eϕ je k této polorovině kolmý a je (v pravotočivé soustavě) vůči ní kladně orientován. Bázový vektor ⃗eθ je k oběma předchozím bázovým vektorům rovněž kolmý a je orientován ve směru narůstu souřadnice θ (rostoucí od osy z k vektoru ⃗r), tedy tak aby bázové vektory kulové soustavy v pořadí podle rovnice (3.57) tvořily pravotočivou soustavu. Pro zpětnou transformaci z kartézské do kulové soustavy platí r = x2 + y2 + z2, θ = arccos z x2 + y2 + z2 , θ = arcsin x2 + y2 x2 + y2 + z2 , (3.56) ϕ = arccos x x2 + y2 , ϕ = arcsin y x2 + y2 , ϕ = arctg y x . Analogicky k rovnici (3.30) budou mít jednotkové vektory kulové báze v kartézské soustavě tvar (viz obrázek 3.2) ^r = ^x sin θ cos ϕ + ^y sin θ sin ϕ +^z cos θ = (sin θ cos ϕ, sin θ sin ϕ, cos θ), ^θ = ^x cos θ cos ϕ + ^y cos θ sin ϕ −^z sin θ = (cos θ cos ϕ, cos θ sin ϕ, − sin θ), (3.57) ^ϕ = −^x sin ϕ + ^y cos ϕ = (− sin ϕ, cos ϕ, 0). V kulové soustavě není žádný z vektorů báze konstantní. Derivace bázových vektorů ve směru jednotlivých souřadnicových os budou (z rovnice (3.57)), ∂^r ∂r = 0, ∂^r ∂θ = ^θ, ∂^r ∂ϕ = ^ϕ sin θ, ∂^θ ∂r = 0, ∂^θ ∂θ = −^r, ∂^θ ∂ϕ = ^ϕ cos θ, (3.58) ∂^ϕ ∂r = 0, ∂^ϕ ∂θ = 0, ∂^ϕ ∂ϕ = −^r sin θ − ^θ cos θ. Kapitola 3. Křivočaré souřadnice Časové derivace bázových vektorů budou ∂^r ∂t = ∂^r ∂θ ∂θ ∂t + ∂^r ∂ϕ ∂ϕ ∂t = ^θ ˙θ + ^ϕ ˙ϕ sin θ, ∂^θ ∂t = ∂^θ ∂θ ∂θ ∂t + ∂^θ ∂ϕ ∂ϕ ∂t = −^r ˙θ + ^ϕ ˙ϕ cos θ, (3.59) ∂^ϕ ∂t = ∂^ϕ ∂ϕ ∂ϕ ∂t = −^r ˙ϕ sin θ − ^θ ˙ϕ cos θ. Zpětnou transformací jednotkových bázových vektorů (viz rovnice (3.57)) dostáváme ^x = ^r sin θ cos ϕ + ^θ cos θ cos ϕ − ^ϕ sin ϕ, ^y = ^r sin θ sin ϕ + ^θ cos θ sin ϕ + ^ϕ cos ϕ, (3.60) ^z = ^r cos θ − ^θ sin θ. Metrickou formu pro kulovou soustavu dostaneme diferencováním rovnice (3.55), dx = sin θ cos ϕ dr + r cos θ cos ϕ dθ − r sin θ sin ϕ dϕ, dy = sin θ sin ϕ dr + r cos θ sin ϕ dθ + r sin θ cos ϕ dϕ, (3.61) dz = cos θ dr − r sin θ dθ, dosazením do rovnice (3.2) dostáváme kulovou metrickou formu ds2 = dr2 + r2 dθ2 + r2 sin2 θ dϕ2 . (3.62) Kovariantní (gij) i kontravariantní (gij) metrický tenzor a také (viz rovnice (3.11)) příslušné Laméovy koeficienty kulové souřadné soustavy budou, gij =   1 0 0 0 r2 0 0 0 r2 sin2 θ   , gij =      1 0 0 0 1 r2 0 0 0 1 r2 sin2 θ      , hr = 1, hθ = r, hϕ = r sin θ. (3.63) Podle rovnice (3.12) odvodíme nenulové Christoffelovy symboly kulové metriky, Γr θθ = −r, Γθ θr (Γθ rθ) = Γϕ ϕr (Γϕ rϕ) = 1 r , Γr ϕϕ = −r sin2 θ, Γθ ϕϕ = − sin θ cos θ, Γϕ ϕθ (Γϕ θϕ) = cotg θ. (3.64) 3.3.1 Diferenciální operátory • Gradient skalární funkce f(r, θ, ϕ) v kulové soustavě odvodíme podle rovnice (3.5), kam za jednotkové bázové vektory dosadíme výrazy z rovnice (3.60) a jednotlivé složky gradientu rozvineme řetězovým pravidlem pro derivace. Po rozepsání dostáváme ⃗∇f = ^r sin θ cos ϕ + ^θ cos θ cos ϕ − ^ϕ sin ϕ ∂f ∂r ∂r ∂x + ∂f ∂θ ∂θ ∂x + ∂f ∂ϕ ∂ϕ ∂x + + ^r sin θ sin ϕ + ^θ cos θ sin ϕ + ^ϕ cos ϕ ∂f ∂r ∂r ∂y + ∂f ∂θ ∂θ ∂y + ∂f ∂ϕ ∂ϕ ∂y + (3.65) + ^r cos θ − ^θ sin θ ∂f ∂r ∂r ∂z + ∂f ∂θ ∂θ ∂z . Kapitola 3. Křivočaré souřadnice Jednotlivé parciální derivace vypočítáme z rovnice (3.56), ∂r ∂x = x x2 + y2 + z2 = sin θ cos ϕ, ∂θ ∂x = xz x2 + y2 (x2 + y2 + z2) = cos θ cos ϕ r , ∂r ∂y = y x2 + y2 + z2 = sin θ sin ϕ, ∂θ ∂y = yz x2 + y2 (x2 + y2 + z2) = cos θ sin ϕ r , ∂r ∂z = z x2 + y2 + z2 = cos θ, ∂θ ∂z = − x2 + y2 x2 + y2 + z2 = − sin θ r , ∂ϕ ∂x = − y x2 + y2 = − sin ϕ r sin θ , ∂ϕ ∂y = x x2 + y2 = cos ϕ r sin θ . (3.66) Po dosazení a úpravě dostaneme výslednou podobu gradientu ⃗∇f = ^r ∂f ∂r + ^θ 1 r ∂f ∂θ + ^ϕ 1 r sin θ ∂f ∂ϕ = ∂f ∂r , 1 r ∂f ∂θ , 1 r sin θ ∂f ∂ϕ . (3.67) Opět zde za jednotkové vektory kulové báze již nedosazujeme jejich složky z rovnice (3.57), kde jsme je „viděli“ ze soustavy kartézské. Analogicky k rovnici (3.6) (tenzorový součin), s použitím rovnice (3.67), je potom gradient vektorového pole ⃗A(r, θ, ϕ) v kulové soustavě definován jako tenzor 2. řádu ve tvaru ⃗∇ ⃗A = ^r ∂ ∂r + ^θ 1 r ∂ ∂θ + ^ϕ 1 r sin θ ∂ ∂ϕ Ar^r + Aθ ^θ + Aϕ ^ϕ . (3.68) Na rozdíl od válcové soustavy zde operátor gradientu již působí na všechny jednotkové bázové vektory (jejich derivace - viz rovnice (3.58)). Pomocí maticového formalismu můžeme tenzor gradientu vektorového pole v kulové soustavě zapsat (Arfken & Weber, 2005) ⃗∇ ⃗A =          ^r ^θ ^ϕ ^r ∂Ar ∂r ∂Aθ ∂r ∂Aϕ ∂r ^θ 1 r ∂Ar ∂θ − Aθ r 1 r ∂Aθ ∂θ + Ar r 1 r ∂Aϕ ∂θ ^ϕ 1 r sin θ ∂Ar ∂ϕ − Aϕ r 1 r sin θ ∂Aθ ∂ϕ − Aϕ r cotg θ 1 r sin θ ∂Aϕ ∂ϕ + Ar r + Aθ r cotg θ          . (3.69) Stejného výsledku docílíme i v tomto případě např. s použitím formalismu Christoffelových symbolů (viz rovnice (3.37)) dle obecného vztahu (3.43), tento postup lze ovšem použít pouze pro ortogonální souřadné soustavy, zatímco postup podle rovnice (3.68) platí zcela obecně. • Divergence vektoru (vektorového pole) ⃗A(r, θ, ϕ) je v kulových souřadnicích ve smyslu rovnice (3.68), analogicky k rovnici (3.8), definována jako skalár (skalární pole) ⃗∇ · ⃗A = 1 r2 ∂ ∂r r2 Ar + 1 r sin θ ∂ ∂θ (sin θAθ) + 1 r sin θ ∂Aϕ ∂ϕ . (3.70) Porovnáním s rovnicí (3.69) opět vidíme, že divergence je stopou tenzoru gradientu vektorového pole. Kapitola 3. Křivočaré souřadnice • Rotaci vektoru (vektorového pole) ⃗A(r, θ, ϕ) v kulové soustavě, kde hr = 1, hθ = r, hϕ = r sin θ, odvodíme podle rovnice (3.20), v tomto případě dostaneme ⃗∇ × ⃗A = 1 r sin θ ∂ ∂θ (sin θ Aϕ) − ∂Aθ ∂ϕ ^r + 1 r 1 sin θ ∂Ar ∂ϕ − ∂ ∂r (rAϕ) ^θ + 1 r ∂ ∂r (rAθ) − ∂Ar ∂θ ^ϕ. (3.71) • Laplacián odvodíme (viz rovnice (3.22)), nahradíme-li v rovnici divergence (3.70) složky vektoru ⃗A odpovídajícími složkami vektoru gradientu z rovnice (3.67), výsledný tvar, zapsaný v kompaktní formě bude ∆ = 1 r2 ∂ ∂r r2 ∂ ∂r + 1 r2 sin θ ∂ ∂θ sin θ ∂ ∂θ + 1 r2 sin2 θ ∂2 ∂ϕ2 . (3.72) 3.3.2 Plochy, objemy Stejně jako v předchozích soustavách označme Sk souřadnicovou plochu s konstantní hodnotou souřadnice xk, ohraničenou souřadnicovými křivkami xi, xi + ∆xi, xj, xj + ∆xj, i ̸= j ̸= k. V kulové soustavě půjde např. o plochu s konstantní hodnotou r = r0, ohraničenou dvojicemi křivek (kružnicemi) se souřadnicemi θ = θ1, θ = θ2 a ϕ = ϕ1, ϕ = ϕ2. Výpočet velikosti takové plochy již zde není vůbec triviální, půjde o část plochy s dvojí křivostí, ohraničenou dvěma rozbíhajícími se souřadnicovými plochami (v nichž leží křivky se souřadnicemi ϕ = ϕ1, ϕ = ϕ2) a dvěma kružnicemi se středy na společné ose, avšak ležícími v různých rovinách, kolmých na tuto osu (křivky se souřadnicemi θ = θ1, θ = θ2). Pokud budeme uvažovat jinou plochu, např. s konstantní souřadnicí ϕ = ϕ0, ohraničenou souřadnicovými plochami θ = θ1, θ = θ2, r = r1, r = r2, půjde o část kruhové výseče, omezené dvěma soustřednými kružnicemi. Při výpočtech velikostí těchto ploch vyjdeme opět z rovnice (3.23) a z rovnice (3.63), tedy Sr = θ2ˆ θ1 ϕ2ˆ ϕ1 √ gθθ gϕϕ dθ dϕ = θ2ˆ θ1 ϕ2ˆ ϕ1 r2 sin θ dθ dϕ = r2 (cos θ1 − cos θ2) ∆ϕ, Sθ = ϕ2ˆ ϕ1 r2ˆ r1 √ gϕϕ grr dϕ dr = ϕ2ˆ ϕ1 r2ˆ r1 r sin θ dϕ dr = r2 2 − r2 1 2 sin θ∆ϕ, (3.73) Sϕ = r2ˆ r1 θ2ˆ θ1 √ grr gθθ dr dθ = r2ˆ r1 θ2ˆ θ1 r dr dθ = r2 2 − r2 1 2 ∆θ. V kulovém, tedy opět ortogonálním souřadném systému, budou všechny nediagonální členy submatic J′ ij (viz rovnice (3.23)) nulové. Označme tradičně V objem, vymezený souřadnicovými plochami s konstantními souřadnicemi r1, r2, θ1, θ2, ϕ1, ϕ2, tvar takového útvaru odpovídá v tomto případě průniku jehlanu s koncentrickou sférickou mezivrstvou (mezikoulím). Vztah pro výpočet velikosti takového objemu bude mít dle rovnice (3.24) tvar V = r2ˆ r1 θ2ˆ θ1 ϕ2ˆ ϕ1 r2 sin θ dr dθ dϕ = r3 2 − r3 1 3 (cos θ1 − cos θ2) ∆ϕ. (3.74) V ortogonálním kulovém souřadném systému obdobně jako ve válcovém systému můžeme Jakobián J stanovit jako √ grr gθθ gϕϕ = r2 sin θ. Tato metoda umožní při vhodném stanovení integračních mezí vypočítat v kulovém souřadnicovém systému velikosti jakkoli složitějších útvarů. Kapitola 3. Křivočaré souřadnice 3.3.3 Vektory polohy, rychlosti a zrychlení Při popisu vektorů v kulové soustavě vyjdeme z jejich základního popisu v soustavě kartézské, zahrneme všechny rovnice pro derivace jednotkových vektorů i složek vektorů (rovnice (3.55)(3.60)). Polohový vektor a vektor rychlosti v kulové soustavě budou ⃗r = x^x + y^y + z^z = r^r, ⃗v = d⃗r dt = d r^r dt = ˙r^r + r ˙θ^θ + ˙ϕ^ϕ sin θ . (3.75) Tento závěr lze opět očekávat, uvědomíme-li si, že polohový vektor vychází z počátku souřadnic. Vektory rychlosti a zrychlení jsou zároveň definovány jako ⃗v = vr^r + vθ ^θ + vϕ ^ϕ, ⃗a = d⃗v dt = ar^r + aθ ^θ + aϕ ^ϕ. (3.76) Derivováním rovnice (3.75) podle času dostáváme jednotlivé složky vektoru zrychlení v kulové souřadné soustavě, ar = ¨r − r ˙θ2 − r ˙ϕ2 sin2 θ = dvr dt − r ˙θ2 − r ˙ϕ2 sin2 θ, (3.77) aθ = r¨θ + 2 ˙r ˙θ − r ˙ϕ2 sin θ cos θ = dvθ dt + ˙r ˙θ − r ˙ϕ2 sin θ cos θ, (3.78) aϕ = r ¨ϕ sin θ + 2 ˙r ˙ϕ sin θ + 2r ˙θ ˙ϕ cos θ = dvϕ dt + ˙r ˙ϕ sin θ + r ˙θ ˙ϕ cos θ. (3.79) Protože d/dt = ∂/∂t + ⃗v · ⃗∇ (řetězové pravidlo pro derivování, v tomto případě pro parciální derivace ⃗v = ⃗v(t, r, θ, ϕ)), potom zrychlení, vyjádřené v kulové souřadné soustavě pomocí složek vektoru rychlosti bude ar = ∂vr ∂t + vr ∂vr ∂r + vθ r ∂vr ∂θ + vϕ r sin θ ∂vr ∂ϕ (⃗v·⃗∇)vr − v2 θ + v2 ϕ r , (3.80) aθ = ∂vθ ∂t + vr ∂vθ ∂r + vθ r ∂vθ ∂θ + vϕ r sin θ ∂vθ ∂ϕ (⃗v·⃗∇)vθ + vrvθ r − v2 ϕ cotg θ r , (3.81) aϕ = ∂vϕ ∂t + vr ∂vϕ ∂r + vθ r ∂vϕ ∂θ + vϕ r sin θ ∂vϕ ∂ϕ (⃗v·⃗∇)vϕ + vrvϕ r + vθvϕ cotg θ r . (3.82) Bylo by jistě možné popsat mnohem více podrobností, např. operace s vektory a tenzory v rámci popisovaných soustav, atd., zde jsou ukázány alespoň některé postupy spíše z praktického pohledu. V dalších odstavcích ukážeme stručně alespoň jednu neortogonální souřadnou soustavu, jejíž popis byl do jisté míry vyvolán tvorbou numerické výpočetní sítě pro hydrodynamické modelování konkrétního fyzikálního jevu. 3.4 Eliptická soustava Dále stručně uvedeme tři specifické ortogonální soustavy, které mohou souviset s předchozí tématikou nebo s uvedenými příklady (případně mohou mít zajímavé fyzikální uplatnění) - eliptickou, parabolickou, a „anuloidovou“. Dvourozměrná eliptická souřadná soustava (viz obrázek Kapitola 3. Křivočaré souřadnice 3.3) je definována dvěma třídami souřadnicových křivek s konstantními parametry σ ∈ ⟨0, ∞) a τ ∈ ⟨0, 2π) (toto značení není zcela ustálené, v různých literaturách může být různé), se dvěma společnými ohnisky v bodech [−a, 0], [a, 0]. V trojrozměrné verzi přibude ještě (válcová symetrie vzhledem k ose z, soustava se potom nazývá eliptická-válcová) azimutální úhlový parametr ϕ. x y Obrázek 3.3: Schéma dvourozměrné eliptické soustavy v rovině x, y, společná ohniska jsou v bodech [−a, 0], [a, 0]. Modře vyznačené jsou eliptické křivky s konstantním parametrem σ, s posloupností (od nejužších k nejširším) σ = 0; 0,2; 0,4; 0,6; 0,8; 1, červeně vyznačené jsou hyperbolické křivky s konstantním parametrem τ, s posloupností (zprava do leva) od τ = 0 do τ = π s intervalem π/12. V trojrozměrné verzi (viz popis) potom vyobrazenému směru y odpovídá směr z. Transformační rovnice z kartézské do eliptické soustavy v trojrozměrném případě budou x = a cosh σ cos τ cos ϕ, y = a cosh σ cos τ sin ϕ, z = a sinh σ sin τ. (3.83) Z definice hyperbolického sinu a kosinu sinh x = ex − e−x 2 , (3.84) cosh x = ex + e−x 2 (3.85) a z exponenciálního vyjádření sinu a kosinu sin x = eix − e−ix 2i , (3.86) cos x = eix + e−ix 2 (3.87) snadno odvodíme zpětné transformační vztahy, které ovšem budou mít (v pravotočivém pořadí proměnných σ, ϕ, τ) komplexní tvar (rovinu ρ-z, kde ρ = x2 + y2, si můžeme představit jako Gaussovu rovinu), σ = 1 2 argcosh ρ + iz a + argcosh ρ − iz a , ϕ = arctg y x , τ = 1 2i argcosh ρ + iz a − argcosh ρ − iz a . (3.88) Kapitola 3. Křivočaré souřadnice Metrická forma takové eliptické soustavy bude mít tvar ds2 = a2 cosh2 σ sin2 τ + sinh2 σ cos2 τ dσ2 + dτ2 + cosh2 σ cos2 τ dϕ2 = = a2 sinh2 σ + sin2 τ dσ2 + dτ2 + cosh2 σ cos2 τ dϕ2 = = a2 cosh2 σ − cos2 τ dσ2 + dτ2 + cosh2 σ cos2 τ dϕ2 . (3.89) Kovariantní metrický tenzor gij a příslušné Laméovy koeficienty eliptické souřadné soustavy v pořadí směrů σ, ϕ, τ budou, gij =    a2 sinh2 σ + sin2 τ 0 0 0 a2 cosh2 σ cos2 τ 0 0 0 a2 sinh2 σ + sin2 τ    , (3.90) hσ = a sinh2 σ + sin2 τ, hϕ = a cosh σ cos τ, hτ = a sinh2 σ + sin2 τ. (3.91) Kontravariantní metrický tenzor gij diagonální metriky bude tenzor s převrácenými hodnotami prvků na hlavní diagonále. Jakobián souřadnicové transformace z kartézské do eliptické soustavy bude J = a3 sinh2 σ + sin2 τ cosh σ cos τ = a3 cosh2 σ − cos2 τ cosh σ cos τ, (3.92) jakobiánem zpětné transformace bude výraz J−1. Nenulové Christoffelovy symboly eliptické metriky (viz rovnice (3.12)) budou (kde S = cosh 2σ − cos 2τ), Γσ σσ = −Γσ ττ = Γτ στ (Γτ τσ) = sinh 2σ S , Γτ ττ = −Γτ σσ = Γσ στ (Γσ τσ) = sin 2τ S , Γσ ϕϕ = − sinh 2σ cos2 τ S , Γτ ϕϕ = cosh2 σ sin 2τ S , Γϕ σϕ(Γϕ ϕσ) = tanh σ, Γϕ ϕτ (Γϕ τϕ) =− tg τ. (3.93) Diferenciální operátory gradientu skalární funkce, divergence a rotace vektoru a laplaciánu budou mít (s použitím formalismu Laméových koeficientů pro ortogonální soustavy a také rovnic (3.14) a (3.20)) v této eliptické souřadné soustavě postupně tvar, ⃗∇f = ∂f ∂σ a sinh2 σ + sin2 τ , ∂f ∂ϕ a cosh σ cos τ , ∂f ∂τ a sinh2 σ + sin2 τ , (3.94) ⃗∇ · ⃗A = ∂ ∂σ sinh2 σ + sin2 τ cosh σ Aσ a sinh2 σ + sin2 τ cosh σ + + ∂Aϕ ∂ϕ a cosh σ cos τ + ∂ ∂τ sinh2 σ + sin2 τ cos τ Aτ a sinh2 σ + sin2 τ cos τ , (3.95) ⃗∇ × ⃗A = cosh σ ∂ ∂τ (cos τ Aϕ) − sinh2 σ + sin2 τ ∂Aτ ∂ϕ a sinh2 σ + sin2 τ cosh σ cos τ ^σ+ + ∂ ∂σ sinh2 σ + sin2 τ Aτ − ∂ ∂τ sinh2 σ + sin2 τ Aσ a sinh2 σ + sin2 τ ^ϕ+ + sinh2 σ + sin2 τ ∂Aσ ∂ϕ − cos τ ∂ ∂σ (cosh σ Aϕ) a sinh2 σ + sin2 τ cosh σ cos τ ^τ, (3.96) Kapitola 3. Křivočaré souřadnice ∆ = ∂ ∂σ cosh σ ∂ ∂σ + ∂ ∂τ cos τ ∂ ∂τ a2 sinh2 σ + sin2 τ cosh σ cos τ + ∂2 ∂ϕ2 a2 cosh2 σ cos2 τ . (3.97) Ostatní operátorové identity a geometrické parametry odvodíme analogickým způsobem jako v případě válcové nebo sférické souřadné soustavy. 3.5 Parabolická soustava Parabolická souřadná soustava je ve dvourozměrné verzi (viz obrázek 3.4) definována dvěma třídami parabolických souřadnicových křivek s konstantními parametry u a v (toto značení opět není zcela ustálené, v různých literaturách může být různé) a se společným ohniskem v bodě [0, 0]. V trojrozměrné verzi přibude ještě (válcová symetrie vzhledem k ose z, soustava se potom nazývá parabolická-válcová) azimutální úhlový parametr ϕ. x y Obrázek 3.4: Schéma dvourozměrné parabolické soustavy v rovině x, y. Modře vyznačené jsou křivky s konstantním parametrem u = 0,5 (nejužší); 1; 1,5; 2; 2,5; 3 (nejširší), červeně vyznačené jsou křivky se stejnou posloupností konstantních parametrů v. V trojrozměrném případě (viz popis) potom vyobrazenému směru y odpovídá směr z. Transformační rovnice v trojrozměrném případě budou x = uv cos ϕ, y = uv sin ϕ, z = u2 − v2 2 . (3.98) Zpětné transformační vztahy v pravotočivém pořadí proměnných u, v, ϕ budou mít tvar u = x2 + y2 + z2 + z, v = x2 + y2 + z2 − z, ϕ = arctg y x . (3.99) Metrická forma parabolické soustavy bude mít tvar ds2 = u2 + v2 du2 + dv2 + u2 v2 dϕ2 . (3.100) Kovariantní metrický tenzor gij a příslušné Laméovy koeficienty parabolické souřadné soustavy v pořadí směrů u, v, ϕ budou, gij =   u2 + v2 0 0 0 u2 + v2 0 0 0 u2v2   , hu = u2 + v2, hv = u2 + v2, hϕ = uv. (3.101) Kapitola 3. Křivočaré souřadnice Kontravariantní metrický tenzor gij diagonální metriky bude tenzor s převrácenými hodnotami prvků na hlavní diagonále. Jakobián souřadnicové transformace z kartézské do parabolické soustavy bude J = uv u2 + v2 , (3.102) jakobiánem zpětné transformace bude výraz J−1. Nenulové Christoffelovy symboly parabolické metriky (viz rovnice (3.12)) budou, Γu uu = Γv uv (Γv vu) = u u2 + v2 , Γv vv = Γu uv (Γu vu) = v u2 + v2 , Γv uu = − v u2 + v2 , Γu vv = − u u2 + v2 , Γu ϕϕ = − uv2 u2 + v2 , Γv ϕϕ = − u2v u2 + v2 , Γϕ uϕ (Γϕ ϕu) = 1 u , Γϕ vϕ (Γϕ ϕv) = 1 v . (3.103) Diferenciální operátory gradientu skalární funkce, divergence a rotace vektoru a laplaciánu budou mít (s použitím formalismu Laméových koeficientů pro ortogonální soustavy a také rovnic (3.14) a (3.20)) v parabolické souřadné soustavě postupně tvar, ⃗∇f = ∂f ∂u√ u2 + v2 , ∂f ∂v√ u2 + v2 , 1 uv ∂f ∂ϕ , (3.104) ⃗∇ · ⃗A = ∂ ∂u u √ u2 + v2 Au u(u2 + v2) + ∂ ∂v v √ u2 + v2 Av v(u2 + v2) + 1 uv ∂Aϕ ∂ϕ , (3.105) ⃗∇ × ⃗A = ∂ ∂v (uvAϕ) − √ u2 + v2 ∂Av ∂ϕ uv √ u2 + v2 ^u + √ u2 + v2 ∂Au ∂ϕ − ∂ ∂u (uvAϕ) uv √ u2 + v2 ^v+ + ∂ ∂u √ u2 + v2 Av − ∂ ∂v √ u2 + v2 Au u2 + v2 ^ϕ, (3.106) ∆ = 1 u ∂ ∂u u ∂ ∂u + 1 v ∂ ∂v v ∂ ∂v (u2 + v2) + 1 u2v2 ∂2 ∂ϕ2 . (3.107) Ostatní operátorové identity a geometrické parametry odvodíme obdobně jako v případě válcové nebo sférické souřadné soustavy. 3.6 „Anuloidová“ soustava V tomto případě také nebudeme uvádět úplný popis všech vztahů a operátorů, i s ohledem na to, že daná soustava je příliš „specifická“, resp. týká se pouze jednoho typu geometrického tělesa, tzv. anuloidu (toroidu) - viz obrázek 3.5 (popis soustavy rovněž odkazuje k příkladům 7.55 a 7.66 ve skriptu Početní praktikum). Ukážeme pouze, jak je možné flexibilně adaptovat principy, odvozené pro předchozí „univerzální“ geometrické systémy na (v podstatě jakýkoli) speciální případ. Anuloidem nazýváme těleso, které vznikne rotací kružnice okolo osy, která leží v rovině této kružnice a nemá s ní společný bod (vznikne tak válcově symetrická trubice - torus, připomínající „duši pneumatiky“). Kapitola 3. Křivočaré souřadnice osaanuloidu a r t R ρ = x2 + y2 z φ Obrázek 3.5: Příčný řez anuloidem v rovině ρ-z, jednotlivé směry odpovídají válcové soustavě. Označíme-li R poloměr osy toru, a poloměr trubice (toru), r radiální vzdálenost uvnitř trubice vzhledem k ose trubice, t úhlovou souřadnici vnitřku trubice a značení ostatních směrů bude odpovídat standardní cylindrické notaci, tj. ρ bude odpovídat radiální vzdálenosti od osy celého anuloidu, ϕ bude azimutální úhel anuloidu a z vertikální souřadnice (vše je vyznačené v obrázku 3.5), můžeme za anuloidové (proměnné) souřadnice považovat r, ϕ, t (v pravotočivém smyslu). Transformační vztahy můžeme zapsat následovně, x = (R + r cos t) cos ϕ, y = (R + r cos t) sin ϕ, z = r sin t. (3.108) Vztahy pro zpětnou transformaci budou mít v tomto případě tvar r = x2 + y2 − R 2 + z2, ϕ = arctg y x , t = arcsin z x2 + y2 − R 2 + z2 . (3.109) Kovariantní metrický tenzor gij a příslušné Laméovy koeficienty anuloidové souřadné soustavy budou, gij =   1 0 0 0 (R + r cos t)2 0 0 0 r2   , hr = 1, hϕ = R + r cos t, ht = r. (3.110) Vzhledem k tomu, že jde o diagonální metriku, bude kontravariantním metrickým tenzorem gij zpětné transformace rovněž tenzor s převrácenými hodnotami prvků na hlavní diagonále. Jakobián souřadnicové transformace z kartézské do anuloidové soustavy tedy bude J = r(R + r cos t), (3.111) jakobiánem zpětné transformace bude opět výraz J−1. Ostatní parametry lze snadno odvodit analogickým způsobem jako v předchozích soustavách. 3.7 Příklad neortogonální soustavy Podívejme se nyní na jiný možný geometrický případ, který může vyžadovat zavedení neortogonální souřadné soustavy. Jedná se o geometrický popis rozsáhlého plynného disku, rozprostírajícího se okolo velmi rychle rotující a tudíž silně zploštělé hvězdy, který je v blízkosti hvězdy Kapitola 3. Křivočaré souřadnice velmi tenký a ve velkých vzdálenostech od hvězdy se výrazně vertikálně rozšiřuje. Zároveň je samozřejmě rotačně (válcově) symetrický. Obrázek 3.6 schématicky znázorňuje tuto soustavu ve vertikální rovině ρ-θ (ϕ = konst.), souřadnicové směry zde jsou: ρ ∈ ⟨0, ∞) - radiální cylindrická souřadnice, ϕ ∈ ⟨0, 2π) - azimutální úhel, θ ∈ (−π/2, π/2) - elevační úhel, který je počítán v kladném a záporném směru od rovníkové roviny. I když elevační úhel může být definován v uvedeném intervalu (s vyloučením krajních bodů), prakticky vzhledem k charakteru popisovaných jevů přichází v úvahu interval θ ∈ ⟨−π/4, π/4⟩. Volné parametry (kromě zvoleného rovníkového poloměru hvězdy Req) jsou maximální cylindrická radiální vzdálenost ρ = Rmax a maximální elevační úhel, označený jako θmax (zrcadlově k němu je θmin). Soustava je válcově z = 0 θ = 0 P osasoustavy ρ=ρmax z ρ θ Req ρ=0 ρ=Req θ = θmax θ = θmin Obrázek 3.6: Schématický obrázek cylindricko-kónické souřadné soustavy v rovině ρ-θ (ϕ = konst.). Modrá čárkovaná čára, procházející obecným bodem P vyznačuje průnik souřadnicových ploch Sϕ a Sθ. Rotačně zploštělá hvězda je zvýrazněná barevnou elipsou. symetrická, osa symetrie je kolmá k rovině disku (z = 0 ∧ θ = 0) a prochází středem hvězdy (ρ = 0). Můžeme ji tedy nazývat například cylindricko-kónickou soustavou2 (standardní, tzv. kónická souřadná soustava znamená něco poněkud jiného - jde o ortogonální soustavu, definovanou soustřednými kulovými plochami a dvěma třídami vzájemně ortogonálních obecně eliptických kuželových ploch s osami x a z, s vrcholy v počátku souřadného systému). 2 Jako zkrácený pracovní název budeme v dalším textu používat výraz disková soustava. Radiální a azimutální souřadnice jsou shodné se soustavou válcovou, jednotlivé souřadnicové směry tedy značíme ρ, ϕ, θ, jednotkové bázové vektory značíme ^ρ, ^ϕ, ^θ. Kapitola 3. Křivočaré souřadnice Transformační rovnice z této cylindricko-kónické do kartézské souřadné soustavy jsou (pro lepší grafickou přehlednost budeme v rovnicích této souřadné soustavy pro tangens používat v anglicky psané literatuře zavedené označení tan, namísto v české literatuře běžného tg) x = ρ cos ϕ, y = ρ sin ϕ, z = ρ tan θ. (3.112) Pro zpětnou transformaci z kartézské do diskové soustavy dostáváme3 ρ = x2 + y2, ϕ = arctg y x , θ = arctg z x2 + y2 . (3.113) Analogicky k rovnicím (3.30) a (3.57) budou mít jednotkové vektory diskové báze v kartézské soustavě tvar (viz pravidla pro sčítání vektorů) ^ρ = ^x cos ϕ + ^y sin ϕ, ^ϕ = −^x sin ϕ + ^y cos ϕ, ^θ = −(^x cos ϕ + ^y sin ϕ) sin θ +^z cos θ. (3.114) Zpětnou transformací jednotkových bázových vektorů (viz rovnice (3.114)) dostáváme ^x = ^ρ cos ϕ − ^ϕ sin ϕ, ^y = ^ρ sin ϕ + ^ϕ cos ϕ, ^z = ^ρ sin θ + ^θ cos θ . (3.115) V diskové soustavě není žádný z vektorů báze konstantní. Derivace bázových vektorů ve směru jednotlivých souřadnicových os budou (z rovnice (3.114)) ∂^ρ ∂ρ = 0, ∂^ρ ∂ϕ = ^ϕ, ∂^ρ ∂θ = 0, ∂^ϕ ∂ρ = 0, ∂^ϕ ∂ϕ = −^ρ, ∂^ϕ ∂θ = 0, (3.116) ∂^θ ∂ρ = 0, ∂^θ ∂ϕ = −^ϕ sin θ, ∂^θ ∂θ = − ^ρ + ^θ sin θ cos θ . Časové derivace bázových vektorů budou ∂^ρ ∂t = ∂^ρ ∂ϕ ∂ϕ ∂t ^ϕ ˙ϕ, ∂^ϕ ∂t = ∂^ϕ ∂ϕ ∂ϕ ∂t = −^ρ ˙ϕ, ∂^θ ∂t = ∂^θ ∂ϕ ∂ϕ ∂t + ∂^θ ∂θ ∂θ ∂t = − ^ρ ˙θ cos θ − ^ϕ ˙ϕ sin θ − ^θ ˙θ tan θ. (3.117) Metrickou formu pro diskovou soustavu odvodíme diferencováním rovnice (3.112), dx = cos ϕ dρ − ρ sin ϕ dϕ, dy = sin ϕ dρ + ρ cos ϕ dϕ, dz = tan θ dρ + ρ cos2 θ dθ, (3.118) dosazením do rovnice (3.2) dostáváme nediagonální diskovou metrickou formu ve tvaru ds2 = dρ2 cos2 θ + 2ρ sin θ cos3 θ dρ dθ + ρ2 dϕ2 + dθ2 cos4 θ . (3.119) 3 V této soustavě platí pro azimutální souřadnici ϕ úplně stejné transformační rovnice jako v případě válcových souřadnic. Kapitola 3. Křivočaré souřadnice Kovariantní a kontravariantní metrické tenzory soustavy se souřadnicemi v pořadí ρ, ϕ, θ budou gij =       1 cos2 θ 0 ρ sin θ cos3 θ 0 ρ2 0 ρ sin θ cos3 θ 0 ρ2 cos4 θ       , gij =        1 0 − sin θ cos θ ρ 0 1 ρ2 0 − sin θ cos θ ρ 0 cos2 θ ρ2        . (3.120) Jacobiho matice transformace z kartézské soustavy a matice inverzní transformace budou Jij =     cos ϕ −ρ sin ϕ 0 sin ϕ ρ cos ϕ 0 tan θ 0 ρ cos2 θ     , J−1 ij =       cos ϕ sin ϕ 0 − sin ϕ ρ cos ϕ ρ 0 − cos ϕ sin θ cos θ ρ − sin ϕ sin θ cos θ ρ cos2 θ ρ       , (3.121) příslušné jakobiány tedy budou, J = |det Jij| = |det gij| = ρ2 cos2 θ , J−1 = det J−1 ij = |det gij| = cos2 θ ρ2 . (3.122) Nenulové Christoffelovy symboly diskové metriky jsou Γϕ ρϕ (Γϕ ϕρ) = Γθ ρθ (Γθ θρ) = 1 ρ , Γρ ϕϕ = −ρ, Γθ ϕϕ = sin θ cos θ, Γθ θθ = 2 tg θ. (3.123) Protože se nejedná o ortogonální metriku (vyjádřenou diagonálním metrickým tenzorem), nedefinujeme zde žádné Laméovy koeficienty. 3.7.1 Diferenciální operátory • Gradient skalární funkce f(ρ, ϕ, θ) v diskové soustavě odvodíme stejným způsobem, jako v předchozích soustavách. Jednotlivé nenulové parciální derivace pro diskovou soustavu z rovnice (3.113) budou ∂ρ ∂x = x x2 + y2 = cos ϕ, ∂ϕ ∂x = − y x2 + y2 = − sin ϕ ρ , ∂ρ ∂y = y x2 + y2 = sin ϕ, ∂ϕ ∂y = x x2 + y2 = cos ϕ ρ , ∂θ ∂x = − xz x2 + y2 (x2 + y2 + z2) = − cos ϕ sin θ cos θ ρ , ∂θ ∂y = − yz x2 + y2 (x2 + y2 + z2) = − sin ϕ sin θ cos θ ρ , ∂θ ∂z = x2 + y2 x2 + y2 + z2 = cos2 θ ρ . Stejně jako v předchozích souřadných soustavách dostáváme gradient skalární funkce, ⃗∇f = ^ρ ∂f ∂ρ + ^ϕ 1 ρ ∂f ∂ϕ + ^θ cos θ ρ ∂f ∂θ = ∂f ∂ρ , 1 ρ ∂f ∂ϕ , cos θ ρ ∂f ∂θ . (3.124) Kapitola 3. Křivočaré souřadnice Stejným postupem jako v předchozích souřadných soustavách můžeme také získat tenzor gradientu vektorového pole, který můžeme pomocí maticového formalismu v diskové soustavě zapsat, ⃗∇ ⃗A =          ^ρ ^ϕ ^θ ^ρ ∂Aρ ∂ρ ∂Aϕ ∂ρ ∂Aθ ∂ρ ^ϕ 1 ρ ∂Aρ ∂ϕ − Aϕ ρ 1 ρ ∂Aϕ ∂ϕ + Aρ ρ − Aθ sin θ ρ 1 ρ ∂Aθ ∂ϕ ^θ cos θ ρ ∂Aρ ∂θ − Aθ ρ cos θ ρ ∂Aϕ ∂θ cos θ ρ ∂Aθ ∂θ − Aθ sin θ ρ          . (3.125) • Divergence vektoru (vektorového pole) ⃗A(ρ, ϕ, θ) je v diskových souřadnicích opět definována jako skalární součin vektoru gradientu s obecným vektorem, tedy ⃗∇ · ⃗A = ^ρ ∂ ∂ρ + ^ϕ 1 ρ ∂ ∂ϕ + ^θ cos θ ρ ∂ ∂θ · Aρ^ρ + Aϕ ^ϕ + Aθ ^θ , (3.126) kde ovšem, na rozdíl od ortogonálních systémů, nejsou obecně skalární součiny rozdílných vektorů báze nulové, tedy nemusí platit eiej = δj i . Jmenovitě v tomto systému bude nenulový součin ei ej i̸=j = ^ρ · ^θ = − sin θ. (3.127) Přímým výpočtem a po úpravách dostáváme ⃗∇ · ⃗A = 1 ρ ∂ ∂ρ (ρAρ) + 1 ρ ∂Aϕ ∂ϕ + cos θ ρ ∂Aθ ∂θ − sin θ ρ ∂ ∂ρ (ρAθ) + cos θ ∂Aρ ∂θ . (3.128) Na rozdíl od ortogonálních soustav není v tomto případě divergence jednoduchou stopou tenzoru gradientu vektorového pole (3.125), nýbrž je třeba ještě přičíst prvky na vedlejší diagonále (respektive ty, které odpovídají nenulovým prvkům metrického tenzoru (3.120)), násobené skalárním součinem příslušných jednotkových vektorů, v tomto případě rovnicí (3.127). • Rotaci vektoru (vektorového pole) ⃗A(ρ, ϕ, θ) v diskových souřadnicích nemůžeme odvodit podle rovnice (3.20) (soustava není ortogonální), v tomto případě musíme provést přímý výpočet z definice rotace vektoru, ⃗∇ × ⃗A = ^ρ ∂ ∂ρ + ^ϕ 1 ρ ∂ ∂ϕ + ^θ cos θ ρ ∂ ∂θ × Aρ^ρ + Aϕ ^ϕ + Aθ ^θ , (3.129) kde musíme nejprve provést všechny (nenulové) derivace jednotkových bázových vektorů (viz rovnice (3.116)), potom vektorové součiny. Ponecháme-li pouze nenulové komponenty, tj. vypustíme-li nulové derivace jednotkových bázových vektorů a také členy se stejnými bázovými vektory a tedy s nulovým vektorovým součinem, dostáváme explicitní výraz ⃗∇ × ⃗A = ^ρ × ^ϕ ∂Aϕ ∂ρ + Aϕ ρ − 1 ρ ∂Aρ ∂ϕ + ^ϕ × ^θ 1 ρ ∂Aθ ∂ϕ − cos θ ρ ∂Aϕ ∂θ + +^θ × ^ρ cos θ ρ ∂Aρ ∂θ − ∂Aθ ∂ρ − Aθ ρ . (3.130) Kapitola 3. Křivočaré souřadnice Vektorové součiny bázových vektorů zde ovšem nebudou tak jednoduché, jako v případě ortogonálních soustav, na základě rovnice (3.114) pro sudé permutace dostaneme ^ρ × ^ϕ = ^ρ sin θ + ^θ cos θ , ^ϕ × ^θ = ^ρ + ^θ sin θ cos θ , ^θ × ^ρ = ^ϕ cos θ. (3.131) Po dosazení a úpravách dostaneme výslednou podobu rotace vektoru v diskové soustavě, ⃗∇ × ⃗A =^ρ tan θ ρ ∂ ∂ρ (ρAϕ) − ∂Aρ ∂ϕ + 1 ρ 1 cos θ ∂Aθ ∂ϕ − ∂Aϕ ∂θ + ^ϕ cos θ ρ cos θ ∂Aρ ∂θ − ∂ ∂ρ (ρAθ) + ^θ 1 ρ cos θ ∂ ∂ρ (ρAϕ) − ∂Aρ ∂ϕ + sin θ ρ 1 cos θ ∂Aθ ∂ϕ − ∂Aϕ ∂θ . (3.132) • Laplacián odvodíme z rovnice divergence (3.126), ve které nahradíme složky vektoru ⃗A odpovídajícími složkami vektoru gradientu z rovnice (3.124), výsledný tvar (není nutné zde opakovat podrobný vektorový zápis, postup je zcela obdobný, jako v předchozích případech), zapsaný v kompaktní formě bude ∆ = 1 ρ ∂ ∂ρ ρ ∂ ∂ρ + 1 ρ2 ∂2 ∂ϕ2 + cos θ ρ2 ∂ ∂θ cos θ ∂ ∂θ − sin 2θ ρ ∂2 ∂ρ ∂θ . (3.133) 3.7.2 Plochy, objemy Stejně jako v předchozích soustavách odvodíme velikosti základních ploch a základního objemu prostorové buňky, tj. plochy a objem, ohraničené jednotlivými souřadnicovými plochami (včetně stejného způsobu značení, další značení viz také obr. 3.6). Objem jedné buňky souřadnicové sítě bude V = ρ2ˆ ρ1 ρ2 dρ ϕ2ˆ ϕ1 dϕ θ2ˆ θ1 dθ cos2 θ = ρ3 2 − ρ3 1 3 ϕ2 − ϕ1 |tan θ2| − |tan θ1| . (3.134) Determinanty submatic metrického tenzoru, odpovídající jednotlivým plochám prostorové buňky (způsob značení je popsán v rámci popisu válcové a kulové soustavy) budou J′ ρ = ρ2 cos2 θ , J′ ϕ = ρ cos2 θ , J′ θ = ρ cos θ (3.135) a plochy jednotlivých buněk sítě budou mít velikost Sρ = ρ2 ϕ2ˆ ϕ1 dϕ θ2ˆ θ1 dθ cos2 θ = ρ2 ϕ2 − ϕ1 |tan θ2| − |tan θ1| , (3.136) Sϕ = θ2ˆ θ1 dθ cos2 θ ρ2ˆ ρ1 ρ dρ = ρ2 2 − ρ2 1 2 |tan θ2| − |tan θ1| , (3.137) Sθ = 1 cos θ ρ2ˆ ρ1 ρ dρ ϕ2ˆ ϕ1 dϕ = ρ2 2 − ρ2 1 2 (ϕ2 − ϕ1) cos θ . (3.138) Kapitola 3. Křivočaré souřadnice 3.7.3 Vektory polohy, rychlosti a zrychlení Při popisu vektorů v diskové soustavě vyjdeme jako obvykle z jejich základního popisu v soustavě kartézské, zahrneme všechny rovnice pro derivace jednotkových vektorů i vektorových složek (rovnice (3.112)-(3.117)). Polohový vektor v diskové soustavě bude ⃗r = x^x + y^y + z^z = ^ρρ + ^θρ sin θ cos2 θ . (3.139) Tento závěr již není tak názorný a snadno představitelný, jako v případě předchozích typů souřadnic. Vektor rychlosti ⃗v bude ⃗v = ^ρ ˙ρ + ρ ˙θ tan θ cos2 θ + ^ϕρ ˙ϕ + ^θ ˙ρ tan θ cos θ + ρ ˙θ cos3 θ . (3.140) Vektory rychlosti a zrychlení musí být zároveň definovány jako ⃗v = vρ^ρ + vϕ ^ϕ + vθ ^θ, ⃗a = d⃗v dt = aρ^ρ + aϕ ^ϕ + aθ ^θ. (3.141) Derivováním rovnice (3.140) podle času dostáváme jednotlivé složky vektoru zrychlení v diskové souřadné soustavě aρ = ¨ρ + tan θ[ρ¨θ + 2 ˙θ( ˙ρ + ρ ˙θ tan θ)] cos2 θ − ρ ˙ϕ2 = dvρ dt − ρ ˙ϕ2 − ˙θ cos2 θ ˙ρ tan θ + ρ ˙θ cos2 θ , aϕ = ρ¨ϕ + 2 ˙ρ ˙ϕ = dvϕ dt + ˙ρ ˙ϕ, (3.142) aθ = 1 cos θ ¨ρ tan θ + ρ¨θ + 2 ˙θ ( ˙ρ + ρ ˙θ tan θ) cos2 θ = dvθ dt − tan θ ˙θ cos θ ˙ρ tan θ + ρ ˙θ cos2 θ . Z uvedených rovnic snadno zjistíme, že pro hlavní členy složek rychlosti platí ˙ρ = vρ − vθ sin θ, ˙ϕ = vϕ ρ , ˙θ = (vθ − vρ sin θ) cos θ ρ . (3.143) Protože d⃗v/dt = ∂⃗v/∂t + ⃗v · ⃗∇⃗v, můžeme napsat zrychlení, vyjádřené v diskové souřadné soustavě, pomocí složek vektoru rychlosti aρ = ∂vρ ∂t + vρ ∂vρ ∂ρ + vϕ ρ ∂vρ ∂ϕ + vθ cos θ ρ ∂vρ ∂θ (⃗v·⃗∇)vρ − v2 ϕ + v2 θ ρ + vρvθ sin θ ρ , (3.144) aϕ = ∂vϕ ∂t + vρ ∂vϕ ∂ρ + vϕ ρ ∂vϕ ∂ϕ + vθ cos θ ρ ∂vϕ ∂θ (⃗v·⃗∇)vϕ + vρvϕ ρ − vϕvθ sin θ ρ , (3.145) aθ = ∂vθ ∂t + vρ ∂vθ ∂ρ + vϕ ρ ∂vθ ∂ϕ + vθ cos θ ρ ∂vθ ∂θ (⃗v·⃗∇)vθ − v2 θ sin θ ρ + vρvθ sin2 θ ρ . (3.146) Členy na pravých stranách rovnic (3.144)-(3.146), spojené svorkou, vyjadřují (nelineární) advekci, zbývající členy reprezentující tzv. fiktivní (setrvačné) síly - odstředivá síla, Coriolisova síla, Eulerova síla. Kapitola 3. Křivočaré souřadnice Porovnáním rovnic (3.112) a (3.143) můžeme zapsat složky vektoru rychlosti vρ, vϕ, vθ v diskové soustavě pomocí složek vektoru rychlosti vρ, cyl, vϕ, cyl, vz ve standardní válcové souřadné soustavě (odstavec 3.2). Dostáváme tak vzájemný vztah mezi velikostmi složek rychlosti v obou soustavách, vρ = vρ, cyl + z ρ vz = vρ, cyl + vz tan θ, vϕ = vϕ, cyl, vθ = ρ2 + z2 ρ vz = vz cos θ . (3.147) Vezmeme-li dále v úvahu vertikální hydrostatickou rovnováhu v takovém disku, dP/dz = −ρgz, kde P je skalární tlak a gz je vertikální složka gravitačního zrychlení, dostáváme pro vertikální složku rychlosti vz = 0. Pohybové rovnice (3.144)-(3.146) tak budou identické s odpovídajícími pohybovými rovnicemi (3.52)-(3.54) ve standardní válcové geometrii. Kapitola 4 Stručný úvod do parciálních diferenciálních rovnic Parciální diferenciální rovnice obsahují na rozdíl od obyčejných diferenciálních rovnic (viz kapitola 3 ve skriptu Početní praktikum) parciální derivace podle více proměnných. Jedná se například o vývojové (transportní) rovnice prvního řádu (tzv. Burgersova rovnice), které jsou jednosměrné v čase a zpravidla směřují k nějakému ustálenému stavu, o rovnice druhého řádu, popisující termodynamické děje, tedy tzv. parabolické parciální diferenciální rovnice, o parciální diferenciální rovnice, popisující periodické děje (vlnová rovnice) - tzv. hyperbolické parciální diferenciální rovnice, nebo se jedná o tzv. eliptické parciální diferenciální rovnice (Poissonova rovnice, Laplaceova rovnice), atd. Dělení parciálních diferenciálních rovnic na jednotlivé typy je i z praktického hlediska podstatné, poněvadž každý z nich se zpravidla řeší jiným způsobem. 4.1 Parciální diferenciální rovnice 1. řádu 4.1.1 Homogenní parciální diferenciální rovnice 1. řádu Nejjednoduššími parciálními diferenciálními rovnicemi jsou lineární homogenní rovnice 1. řádu dvou nezávisle proměnných x, y, vyskytují se zde tedy pouze první (parciální) derivace v lineárním výrazu a(x, y) ∂u(x, y) ∂x + b(x, y) ∂u(x, y) ∂y = 0. (4.1) Řešením takové rovnice bude funkce u(x, y). Funkci dvou proměnných, reprezentovanou plochou, můžeme charakterizovat pomocí vrstevnic x = x(s), y = y(s), kde s je parametr. Funkce u x(s), y(s) je tedy na vrstevnicích konstantní, můžeme ji považovat za funkci jedné proměnné (parametru s), du x(s), y(s) ds = ∂u ∂x dx ds + ∂u ∂y dy ds = 0, (4.2) kdy hledáme řešení systému obyčejných diferenciálních rovnic (tzv. charakteristické soustavy) dx ds = a(x, y), dy ds = b(x, y), (4.3) které označujeme jako charakteristiky (také 1. integrál). Obecnou rovnici charakteristik potom definujeme jako φ(x, y) = C a obecné řešení rovnice dvou proměnných lze zapsat jako u(x, y) = Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Φ φ(x, y) , kdy funkci Φ lze považovat za libovolnou funkci jedné proměnné φ. V případě rovnice n nezávisle proměnných bude mít obecné řešení tvar u(x1, . . . , xn) = Φ φ1(x1, . . . , xn), . . . , φn−1(x1, . . . , xn) . (4.4) • Příklady řešení lineárních homogenních parciálních diferenciálních rovnic: 1. Mějme zadanou jednoduchou homogenní rovnici dvou nezávisle proměnných, x2 ∂u ∂x + y2 ∂u ∂y = 0, (4.5) charakteristická soustava tedy bude dx/ds = x2, dy/ds = y2, jejím řešením budou charakteristiky −1/x = s + C1, −1/y = s + C2 a po vyloučení parametru s dostáváme 1/y − 1/x = C = φ(x, y). Výsledné obecné řešení tedy bude u(x, y) = Φ 1 y − 1 x . (4.6) 2. Jiný jednoduchý příklad může představovat například homogenní rovnice ∂u ∂x = 6x2 ∂u ∂y , (4.7) jejíž charakteristická soustava bude dx/ds = 1, dy/ds = −6x2, kdy řešením první rovnice soustavy bude charakteristika x = s + C1 a protože dy = −6 (s + C1)2ds, druhá charakteristika bude y = −2s3 − 6s2 C1 − 6s C2 1 + C2. Vyjádříme-li z první charakteristiky s = x − C1 a tento výraz dosadíme do druhé charakteristiky, dostáváme rovnici y + 2x3 = 2 C3 1 + C2 = C = φ(x, y). Výsledné obecné řešení tedy bude u(x, y) = Φ y + 2x3 . (4.8) K tomuto výsledku lze ovšem dospět mnohem rychleji, uvědomíme-li si, že v případě homogenní rovnice dostaneme vydělením rovnic charakteristické soustavy obyčejnou diferenciální rovnici 1. řádu, tedy (dy/ds)/(dx/ds) = dy/dx = −6x2 a tedy y = −2x3 + C. 3. Mějme zadánu homogenní rovnici tří proměnných x, y, z, (z − y) ∂u ∂x + (x − z) ∂u ∂y + (y − x) ∂u ∂z = 0, (4.9) s okrajovou podmínkou u(0, y, z) = yz. Charakteristická soustava v tomto případě bude dx/ds = (z − y), dy/ds = (x − z), dz/ds = (y − x), po jejím sečtení dostáváme dx/ds + dy/ds + dz/ds = 0 a po integraci podle s dostáváme x + y + z = C1. Protože zadaná rovnice obsahuje tři proměnné, potřebujeme ještě jednu obecnou rovnici charakteristik, například vynásobením každé charakteristiky odpovídající proměnnou dostaneme výrazy x dx/ds = (z − y)x, y dy/ds = (x − z)y, z dz/ds = (y − x)z. Po jejím sečtení (opět s nulovým součtem), po její integraci podle s a po vynásobení dvěma (kdy x′ = dx/ds, atd.) dostáváme 2xx′ + 2yy′ + 2zz′ = 0 a tedy x2 + y2 + z2 = C2. Obecné řešení bude u(x, y, z) = Φ x + y + z, x2 + y2 + z2 . (4.10) Po dosazení okrajové podmínky dostaneme Φ y + z, y2 + z2 = yz, označíme-li y + z = ξ, y2 + z2 = η, můžeme psát Φ ξ, η = (ξ2 − η)/2. Explicitním řešením okrajové úlohy bude funkce u(x, y, z) = (x + y + z)2 − (x2 + y2 + z2) 2 = xy + xz + yz. (4.11) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic • Nelineární homogenní parciální diferenciální rovnice - neviskózní Burgersova rovnice: Jedná se o nelineární rovnici (nazývanou také transportní rovnice) funkce u(t, x) dvou nezávisle proměnných t, x (kdy v prostorovém členu je tato funkce násobkem, tj. vyšší mocninou), která popisuje nelineární postupnou vlnu. V jednorozměrném případě má podobu ∂u ∂t + u ∂u ∂x = 0. (4.12) Charakteristické rovnice vzhledem k rovnici (4.12) budou dt ds = 1, dx ds = u, a také du dt = 0. (4.13) Z první rovnice vyplývá t = s, jako parametr můžeme tedy zvolit přímo t. Třetí rovnice říká, že u je konstantní podél charakteristik, ze druhé rovnice potom vyplývá, že charakteristiky budou přímkami v rovině x, t. Řešení druhé a třetí charakteristické rovnice je jednoduché: x = ut + C1, u = C2. (4.14) Uvědomíme-li si, že C2 musí být funkcí C1, tedy C2 = C2(C1), substitucí x−ut za C1 dostáváme obecné řešení parciální diferenciální rovnice: u(x, t) = C2(x − ut) = Φ(x − ut). (4.15) Pro jednoznačné určení obecné funkce Φ zavedeme počáteční (okrajovou) podmínku, například u(x, 0) = x. Potom můžeme psát u(x, 0) = C2 x−u(x, 0) · 0 = x a tedy C2(x) = x. Dostáváme rovnici u = x − ut, výsledné jednoznačné řešení v tomto případě bude u(x, t) = x 1 + t . (4.16) 4.1.2 Nehomogenní parciální diferenciální rovnice 1. řádu Nehomogenní parciální diferenciální rovnici 1. řádu dvou nezávisle proměnných můžeme obecně zapsat ve tvaru a(x, y) ∂u(x, y) ∂x + b(x, y) ∂u(x, y) ∂y = f(x, y). (4.17) Obdobně jako v případě homogenní rovnice můžeme psát du x(s), y(s) ds = ∂u ∂x dx ds + ∂u ∂y dy ds = f(x, y), (4.18) kde potom hledáme řešení systému charakteristických rovnic dx ds = a(x, y), dy ds = b(x, y), du ds = f(x, y). (4.19) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic • Příklady řešení lineárních nehomogenních parciálních diferenciálních rovnic: 1. Uvažujme jednoduchou nehomogenní parciální diferenciální rovnici dvou nezávisle proměn- ných ∂u ∂x + ∂u ∂y = x s okrajovou podmínkou u(x, a) = 1, (4.20) kde a je konstanta. Ze systému rovnic (4.19) vyplývá charakteristická soustava dx/ds = 1, dy/ds = 1, du/ds = x. Vydělením prvních dvou charakteristických rovnic a například třetí a první, dostáváme charakteristiky C1 = y − x, C2 = u − x2/2. Dostáváme tedy obecné řešení parciální diferenciální rovnice ve tvaru: Φ(y − x, u − x2 /2) = 0, (4.21) kde Φ je libovolná funkce charakteristik. Přepíšeme nyní rovnici pomocí okrajové podmínky jako funkci charakteristik a konstant, tj. Φ(a − x, 1 − x2/2) = Φ(C1, C2) = 0, z první charakteristiky potom vyplývá x = a − C1, z druhé charakteristiky dostáváme C2 = 1−(a−C1)2/2. Poslední výraz můžeme přepsat jako 1−(a−C1)2/2−C2 = Φ(C1, C2) = 0, po dosazení do charakteristik dostaneme explicitní výraz 1− a2 −2a(y−x)+(y−x)2 /2− u + x2/2 = 0. Výsledné řešení okrajové úlohy pro zadanou rovnici potom bude u(x, y) = xy + a(y − x) − y2 + a2 2 + 1. (4.22) 2. Nehomogenní parciální diferenciální rovnice dvou nezávisle proměnných má tvar y ∂u ∂x − x ∂u ∂y = y2 − x2 , s okrajovou podmínkou u(x, a) = x2 − a2 , (4.23) kde a je konstanta. Ze systému rovnic (4.19) vyplývá charakteristická soustava dx/ds = y, dy/ds = −x, du/ds = y2−x2. Všimněme si, že v tom případě platí y dx/ds+x dy/ds = du/ds. Rovnice dy/dx = −x/y, její integrace dává první charakteristiku x2 + y2 = C1. Rovnici y dx/ds + x dy/ds = du/ds můžeme zapsat jako d(xy)/ds = du/ds, po její integraci dostáváme druhou charakteristiku u−xy = C2. Obecné řešení parciální diferenciální rovnice bude mít tvar: Φ(x2 + y2 , u − xy) = 0, (4.24) kde Φ je libovolná funkce charakteristik. Přepíšeme nyní opět rovnici pomocí okrajové podmínky jako funkci charakteristik a konstant, tj. Φ(x2 + a2, x2 − a2 − ax) = Φ(C1, C2) = 0. Z první charakteristiky vyplývá x = ± √ C1 − a2, z druhé charakteristiky potom vyplyne rovnice pro obě charakteristiky ve tvaru C1 − 2a2 ∓ a √ C1 − a2 − C2 = 0. Po dosazení původních výrazů do charakteristik dostaneme explicitní výraz x2 + y2 − 2a2 ∓ a ± x2 + y2 − a2 − u + xy = 0. Výsledné řešení okrajové úlohy pro zadanou rovnici bude u(x, y) = x2 + y2 + xy − a x2 + y2 − a2 − 2a2 . (4.25) • Příklady řešení nelineárních nehomogenních parciálních diferenciálních rovnic: 1. Nehomogenní nelineární parciální diferenciální rovnice dvou nezávisle proměnných má tvar xu ∂u ∂x + yu ∂u ∂y = −xy, s okrajovou podmínkou u x, a2 x = h, (4.26) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic kde a, h jsou konstanty. Ze systému rovnic (4.19) vyplývá charakteristická soustava dx/ds = xu, dy/ds = yu, du/ds = −xy. Integrace rovnice dy/dx = y/x dává první charakteristiku y/x = C1. Všimněme si, že v tomto případě platí y dx/ds + x dy/ds = 2 uxy, tuto rovnici můžeme tedy zapsat jako d(xy)/ds = −2u du/ds = −du2/ds, po její integraci dostáváme druhou charakteristiku u2+xy = C2. Obecné řešení parciální diferenciální rovnice bude mít tvar: Φ y x , u2 + xy = 0, (4.27) kde Φ je libovolná funkce charakteristik. Přepíšeme nyní opět rovnici pomocí okrajové podmínky jako funkci charakteristik a konstant, tj. Φ(a2/x2, h2 + a2) = Φ(C1, C2) = 0. Z první charakteristiky vyplývá x = ± a2/C1, z druhé charakteristiky potom vyplyne rovnice pro obě charakteristiky ve tvaru h2 + a2 − C2 = 0. Po dosazení původních výrazů do charakteristik dostaneme explicitní výraz h2 + a2 − u2 − xy = 0. Výsledné řešení okrajové úlohy pro zadanou rovnici bude u(x, y) = h2 + a2 − xy. (4.28) 2. Nehomogenní nelineární parciální diferenciální rovnice dvou nezávisle proměnných má tvar yu ∂u ∂x − xu ∂u ∂y = x − y, s okrajovou podmínkou u(x, x) = h, (4.29) kde h je konstanta. Ze systému rovnic (4.19) vyplývá charakteristická soustava dx/ds = yu, dy/ds = −xu, du/ds = x − y. Opět zde integrace rovnice dy/dx = −x/y dává první charakteristiku x2 + y2 = C1. Rovnici dx/ds + dy/ds = d(x + y)/ds můžeme zapsat jako d(x + y)/ds = u(x − y) = u du/ds, po její integraci dostáváme druhou charakteristiku u2 + 2x + 2y = C2. Obecné řešení parciální diferenciální rovnice bude mít tvar: Φ(x2 + y2 , u2 + 2x + 2y) = 0, (4.30) kde Φ je libovolná funkce charakteristik. Přepíšeme nyní opět rovnici pomocí okrajové podmínky jako funkci charakteristik a konstant, tj. Φ(2x2, h2 + 4x) = Φ(C1, C2) = 0. Z první charakteristiky vyplývá x = ± C1/2, z druhé charakteristiky potom vyplyne rovnice pro obě charakteristiky ve tvaru h2 ± 4 C1/2 − C2 = 0. Po dosazení původních výrazů do charakteristik dostaneme explicitní výraz h2 +2 √ 2 x2 + y2 −u2 −2x−2y = 0. Výsledné řešení okrajové úlohy pro zadanou rovnici bude u(x, y) = 2 2(x2 + y2) − 2x − 2y + h2. (4.31) Analogickým způsobem lze řešit (téměř) jakoukoli parciální diferenciální rovnici 1. řádu. Podstatné je vždy nalezení jisté symetrie v zadání rovnice, která umožní sestavení charakteristických rovnic a nalezení příslušných charakteristik. Zájemce o hlubší porozumění této problematice odkazuji například na skripta Arsenin (1977); Pospíšíl (2006); Franců (2011). Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic 4.2 Parciální diferenciální rovnice 2. řádu 4.2.1 Klasifikace parciálních diferenciálních rovnic 2. řádu Obecná parciální diferenciální rovnice 2. řádu funkce u(x, y) (pro jednoduchost se omezíme pouze na funkce dvou proměnných) má tvar: a11(x, y) ∂2u ∂x2 + a12(x, y) ∂2u ∂x∂y + a22(x, y) ∂2u ∂y2 + + b1(x, y) ∂u ∂x + b2(x, y) ∂u ∂y + c(x, y)u + d(x, y) = 0. (4.32) nebo, ve zjednodušené notaci, používané v dalším textu (ux = ∂u/∂x, uxx = ∂2u/∂x2, atd.) : a11(x, y)uxx + a12(x, y)uxy + a22(x, y)uyy+ + b1(x, y)ux + b2(x, y)uy + c(x, y)u + d(x, y) = 0. (4.33) Typ rovnice (v případě funkce dvou proměnných) je určen následujícími podmínkami: a11a22 − a2 12 = 0 rovnice parabolická, (4.34) a11a22 − a2 12 < 0 rovnice hyperbolická, (4.35) a11a22 − a2 12 > 0 rovnice eliptická. (4.36) Úpravou obecného tvaru rovnice transformací do nových proměnných prostřednictvím kvadratické formy lze získat kanonický tvar rovnic: a11(x, y)ux − a22(x, y)uyy + . . . = 0 rovnice parabolická, a11(x, y)uxx − a22(x, y)uyy + . . . = 0 rovnice hyperbolická, a11(x, y)uxx + a22(x, y)uyy + . . . = 0 rovnice eliptická. (4.37) V případě rovnice více proměnných je situace komplikovanější, typ rovnice je jednoznačně určen tzv. maticí kvadratické formy, resp. druhem její definitnosti. Příkladem transformace obecného polynomu druhého stupně na kvadratickou formu může být: 3x2 + 2xy + 2y2 = 3 x2 + 2 3 xy + 2 3 y2 = 3 x + 1 3 y 2 − 1 9 y2 + 2 3 y2 = = 3 x + 1 3 y 2 + 5 9 y2 = 3 x + 1 3 y 2 + 5 3 y2 . (4.38) Substitucí x + 1 3y = ξ1 y = ξ2 dostáváme 3 ξ2 1 + 5 3 ξ2 2, což lze zapsat jako: ξ1 ξ2   3 0 0 5 3   ξ1 ξ2 . (4.39) Obdobným způsobem můžeme transformovat obecnou parciální diferenciální rovnici 2. řádu: pokud je diagonální matice kvadratické formy pozitivně nebo negativně definitní, tj. její vlastní hodnoty (viz rovnice 2.17 - 2.19 ve skriptu Početní praktikum) jsou buď všechny kladné nebo všechny záporné, potom se jedná o rovnici eliptickou. Pokud je diagonální matice kvadratické Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic formy indefinitní (tj. kdy některé vlastní hodnoty jsou kladné, některé záporné), potom se jedná buď o rovnici hyperbolickou (odlišuje se znaménko pouze jedné vlastní hodnoty) nebo ultrahyperbolickou. Pokud je diagonální matice kvadratické formy semidefinitní (některé vlastní hodnoty jsou nulové), potom se jedná se o rovnici parabolickou (jedna vlastní hodnota je nulová), případně tzv. parabolickou v širším smyslu. Kanonický tvar jednotlivých typů rovnic, například pro obecnou funkci čtyř proměnných u = u(x1, x2, x3, x4), vypadá potom schématicky následovně: ∂2u ∂x2 1 + ∂2u ∂x2 2 + ∂2u ∂x2 3 ± ∂u ∂x4 + . . . . . . = 0 parabolická, (4.40) ∂2u ∂x2 1 + ∂2u ∂x2 2 ± ∂u ∂x3 ± ∂u ∂x4 + . . . . . . = 0 parabolická v širším smyslu, (4.41) ∂2u ∂x2 1 + ∂2u ∂x2 2 + ∂2u ∂x2 3 − ∂2u ∂x2 4 + . . . . . . = 0 hyperbolická, (4.42) ∂2u ∂x2 1 + ∂2u ∂x2 2 − ∂2u ∂x2 3 − ∂2u ∂x2 4 + . . . . . . = 0 ultrahyperbolická, (4.43) ∂2u ∂x2 1 + ∂2u ∂x2 2 + ∂2u ∂x2 3 + ∂2u ∂x2 4 + . . . . . . = 0 eliptická. (4.44) V dalším výkladu ukážeme řešení některých vybraných parciálních diferenciálních rovnic parabolických, hyperbolických a eliptických. • Fyzikální podoba parabolických parciálních diferenciálních rovnic Nejobvyklejší tvar parabolické parciální diferenciální rovnice (např. rovnice vedení tepla) je: ut = k(uxx + uyy + . . .), (4.45) kde „konstanta“ k (což nemusí být doslova konstanta, člen k pouze neobsahuje funkci proměnných x, y, . . .) má význam: k = λ/(cpρ), kde λ znamená součinitel tepelné vodivosti, cp tepelnou kapacitu (při stálém tlaku) a ρ hustotu. 4.2.2 Metoda fundamentálního řešení (metoda Greenovy funkce) Řešení rovnic pomocí formalismu Fourierovy transformace a konvoluce funkcí, zavedených v odstavci 10.2 ve skriptu Početní praktikum, si detailněji ukážeme na následujících řešených příkladech (v dalším textu budeme vždy uvádět zkratkami LS levou stranu rovnice a PS její pravou stranu) parabolických parciálních diferenciálních rovnic: • Homogenní rovnice, nehomogenní obecná počáteční podmínka: Homogenní úlohou rozumíme rovnici bez bez zdroje tepla, tj. bez pravé strany, nehomogenní pravá strana znamená dodatečný zdroj tepla. V případě homogenních počátečních respektive okrajových podmínek je příslušná funkce v čase t = 0, případně na definovaných okrajích, nulová. Uvažujme rovnici ve tvaru ut = a2 uxx, t > 0, (4.46) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic s nehomogenní počáteční podmínkou u(0, x) = φ(x). Levá a pravá strana rovnice budou LS: ut(t, ξ) = ˆ ∞ −∞ ut(t, x) e−ixξ dx = ut(t, x), (4.47) PS: uxx(t, ξ) = ˆ ∞ −∞ uxx(t, x) e−ixξ dx = ux e−ixξ ∞ −∞ 0 +iξ ∞ˆ −∞ ux(t, x) e−ixξ dx = −ξ2 u(ξ). (4.48) Dostáváme tedy obyčejnou diferenciální rovnici 1. řádu s jednoduše separovatelnými proměnnými: ut(ξ) = −a2ξ2 u(ξ), jejíž řešení snadno určíme jako u(ξ) = C e−a2ξ2t, respektive u(t, ξ) = C(ξ) e−a2ξ2t. Funkci C(ξ) určíme z počáteční podmínky (4.46): u(0, ξ) = φ(ξ) = C(ξ), u(t, ξ) = C(ξ) e−a2ξ2t. Zavedeme funkci G(t, x) (Greenovu funkci) jako zpětný Fourierův obraz (vzor) funkce G(t, ξ) = e−a2ξ2t, dostáváme tedy u(t, ξ) = φ(ξ)·G(t, ξ) = (φ ∗ G)(t, ξ), a tedy u(t, x) = (φ ∗ G)(t, x): G(t, x) = 1 2π ˆ ∞ −∞ G(t, ξ) eiξx dξ = 1 2π ˆ ∞ −∞ e−a2ξ2t eiξx dξ = 1 2π ˆ ∞ −∞ e−(a2ξ2t−iξx) dξ = = 1 2π ˆ ∞ −∞ e −(aξ √ t− ix 2a √ t )2 e− x2 4a2t dξ = aξ √ t − ix 2a √ t = η a √ t dξ = dη = 1 2a √ πt e− x2 4a2t = G(x, t). (4.49) Výsledné řešení zadané parabolické parciální diferenciální rovnice potom bude u(t, x) = (φ ∗ G)(t, x) = ˆ ∞ −∞ φ(y) G(t, x − y) dy = 1 2a √ πt ˆ ∞ −∞ φ(y) e− (x−y)2 4a2t dy. (4.50) V obecném případě, kdy u(τ, x) = φ(x) dostáváme výslednou funkci ve tvaru: u(t, x) = 1 2a √ πt ˆ ∞ −∞ φ(y) e − (x−y)2 4a2(t−τ) dy. (4.51) • Nehomogenní rovnice s homogenní počáteční podmínkou: Předpokládejme nehomogenní rovnici ve tvaru ut = a2 uxx + f, t > 0, (4.52) s homogenní počáteční podmínkou u(0, x) = 0. Její řešení předpokládáme ve tvaru u(t, x) = ˆ t 0 w(t, x, σ) dσ, (4.53) Její časová derivace dává ut(t, x) = w(t, x, t) + ˆ t 0 wt(t, x, σ) dσ, uxx(t, x) = ˆ t 0 wxx(t, x, σ) dσ, w(t, x, t) + ˆ t 0 wt(t, x, σ) dσ = a2 ˆ t 0 wxx(t, x, σ) dσ + f(t, x). (4.54) Předpokládáme-li ˆ t 0 wt(t, x, σ) − a2 wxx(t, x, σ) dσ = f(t, x) − w(t, x, t) = 0, (4.55) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic bude její řešení wt(t, x, σ) = a2wxx(t, x, σ) s počáteční podmínkou w(σ, x, σ) = f(σ, x) mít tvar w(t, x, σ) = 1 2a π(t − σ) ˆ ∞ −∞ f(σ, y) e − (x−y)2 4a2(t−σ) dy. (4.56) Výsledné řešení bude u(t, x) = 1 2a ˆ t 0 ˆ ∞ −∞ f(σ, y) √ t − σ e − (x−y)2 4a2(t−σ) dσ dy. (4.57) • Nehomogenní rovnice s nehomogenní počáteční podmínkou: Předpokládejme nehomogenní rovnici ve tvaru ut = a2 uxx + f, t > 0, (4.58) s nehomogenní počáteční podmínkou u(0, x) = φ(x). Z linearity vyplývá, že funkci u lze rozdělit na dvě funkce u(t, x) = v(t, x) + w(t, x), kdy 1. funkce: vt(t, x) = a2 vxx + f, v(0, x) = 0, (4.59) 2. funkce: wt(t, x) = a2 wxx, w(0, x) = φ(x). (4.60) Z počáteční podmínky φ(x) = v(0, x) + w(0, x) = w(0, x), kde ovšem v(0, x) = 0, dostáváme: u(t, x) = ˆ ∞ −∞ φ(y) G(x, y, t) dy + ˆ t 0 ˆ ∞ −∞ f(σ, y) G(x, y, t − σ) dσ dy = = 1 2a √ πt ˆ ∞ −∞ φ(y) e− (x−y)2 4a2t dy + 1 2a ˆ t 0 ˆ ∞ −∞ f(σ, y) √ t − σ e − (x−y)2 4a2(t−σ) dσ dy. (4.61) 4.2.3 Řešení parabolických parciálních diferenciálních rovnic Fourierovou metodou (metodou separace proměnných) Metodu, která se velmi často používá při řešení parciálních diferenciálních rovnic 2. řádu, si opět detailněji ukážeme na řešených příkladech parabolických parciálních diferenciálních rovnic. • Homogenní jednorozměrná úloha, homogenní okrajové podmínky, obecná počáteční podmínka: Předpokládejme rovnici ve tvaru ut = a2 uxx, t > 0, x ∈ ⟨0, ℓ⟩, (4.62) s podmínkami u(0, x) = φ(x), u(t, 0) = 0 = u(t, ℓ). Předpokládejme dále, že funkci u(t, x) lze vyjádřit jako součin dvou funkcí jen jedné z obou proměnných, u(t, x) = T(t)X(x). Rovnici (4.62) lze potom vyjádřit následujícím způsobem: ˙TX = a2TX′′, rovnici následně separujeme do podoby ˙T a2T = X′′ X = −λ. (4.63) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Řešení PS potom bude X′′ + λX = 0, z toho vyplývá X(x) = v(x) = A sin √ λx + B cos √ λx. Zahrnutím okrajové podmínky získáme příslušné koeficienty PS: X(0) = B = 0, X(ℓ) = A sin √ λℓ = 0, a tedy √ λ = kπ ℓ , (4.64) kde konstanta A může nabývat libovolné hodnoty (např. A = 1). PS můžeme tedy zapsat jako Xk = vk = sin kπ ℓ x . (4.65) LS řešíme jako obyčejnou diferenciální rovnici 1. řádu, ˙T/T = −a2λ, z toho vyplývá T = Ck e−a2λk t = Ck e−(akπ ℓ ) 2 t . (4.66) Obě takto nalezené separátní funkce potom spojíme do součinu: u(t, x) = ∞ k=1 Ck e−(akπ ℓ ) 2 t sin kπ ℓ x . (4.67) Tzv. Fourierův koeficient Ck získáme z počáteční podmínky, φ(x) = ∞ k=1 Ck sin kπ ℓ x = ∞ k=1 Ck vk, tedy Ck = 1 ∥vk∥2 ˆ ℓ 0 φ(ξ) vk(ξ) dξ. (4.68) Normu ∥vk∥ řešíme jako normu spojitě definovaného vektoru (viz rovnice 2.1 ve skriptu Početní praktikum), tedy ∥vk∥2 = ˆ ℓ 0 v2 k(ξ) dξ = ˆ ℓ 0 sin2 kπ ℓ ξ dξ = ℓ 2 , Ck = 2 ℓ ˆ ℓ 0 φ(ξ) sin kπ ℓ ξ dξ. (4.69) Výslednou funkci můžeme potom zapsat ve tvaru u(t, x) = 2 ℓ ∞ k=1 ˆ ℓ 0 φ(ξ) sin kπ ℓ ξ dξ e−(akπ ℓ ) 2 t sin kπ ℓ x . (4.70) • Homogenní dvourozměrná úloha, homogenní okrajové podmínky, obecná počáteční podmínka: Vedení tepla v pravoúhlých směrech: předpokládejme rovnici ve tvaru ut = a2 (uxx + uyy) , t > 0, x ∈ ⟨0, ℓ1⟩, y ∈ ⟨0, ℓ2⟩, (4.71) s podmínkami u(0, x, y) = φ(x, y), u(t, 0, y) = 0 = u(t, ℓ1, y), u(t, x, 0) = 0 = u(t, x, ℓ2). Předpokládáme součin tří funkcí (srovnej rovnici (4.63)), kdy každá je funkcí jen jedné ze tří proměnných: u = T(t)X(x)Y (y). Obě strany rovnice (4.71) lze potom vyjádřit následovně: ˙TXY = a2 (TX′′ Y + TXY ′′ ), tedy ˙T a2T = X′′ X + Y ′′ Y = −(λ1 + λ2). (4.72) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Dále předpokládáme X′′/X = −λ1, Y ′′/Y = −λ2, což je opodstatněné vzhledem k následným úpravám LS rovnice. Dostáváme tak řešení PS ve tvaru Xm = sin mπ ℓ1 x , Yn = sin nπ ℓ2 y . (4.73) LS opět řešíme jako obyčejnou diferenciální rovnici 1. řádu T = Cmn e −a2 mπ ℓ1 2 + nπ ℓ2 2 t . (4.74) Všechny tři nalezené separátní funkce potom spojíme do součinu u(t, x, y) = ∞ m,n=1 Cmn e −a2 mπ ℓ1 2 + nπ ℓ2 2 t × sin mπ ℓ1 x sin nπ ℓ2 y . (4.75) Fourierův koeficient Cmn získáme z počáteční podmínky, Cmn = 1 ∥vmn∥2 ˆ ℓ1 0 ˆ ℓ2 0 φ(ξ, η) sin mπξ ℓ1 sin nπη ℓ2 dξ dη, (4.76) Norma ∥vmn∥ funkce vmn = XmYn je analogicky k rovnici (4.69) dána jako ∥vmn∥2 = ˆ ℓ1 0 ˆ ℓ2 0 sin2 mπξ ℓ1 sin2 nπη ℓ2 dξ dη = 1 2 ξ ℓ1 0 × 1 2 η ℓ2 0 = ℓ1 ℓ2 4 . (4.77) Výslednou funkci můžeme zapsat ve tvaru u(t, x, y) = 4 ℓ1 ℓ2 ∞ m,n=1 ˆ ℓ1 0 ˆ ℓ2 0 φ(ξ, η) sin mπξ ℓ1 sin nπη ℓ2 dξ dη × × e −a2 mπ ℓ1 2 + nπ ℓ2 2 t × sin mπ ℓ1 x sin nπ ℓ2 y . (4.78) • Homogenní jednorozměrná úloha, nehomogenní okrajové podmínky, homogenní počáteční podmínka: V případě nehomogenních okrajových podmínek bude nalezení partikulárního řešení komplikovanější. Uvažujme rovnici chladnutí tyče ut = a2 uxx, t > 0, x ∈ ⟨0, ℓ⟩, (4.79) s podmínkami u(0, x) = 0, u(t, 0) = T1, u(t, ℓ) = T2. Funkci linearizujeme: u(t, x) = v(t, x) + w(t, x), kdy funkce w(t, x) přejde na stacionární funkci w(x) a bude splňovat okrajové podmínky následujícím způsobem, w(t, 0) = T1, w(t, ℓ) = T2, v(t, 0) = v(t, ℓ) = 0. Pro stacionární funkce dále platí, w(x) = T1 + T2 − T1 ℓ x, v(0, x) = −T1 + T1 − T2 ℓ x, v(0, x) + w(0, x) = 0. (4.80) Rovnici (4.79) rozepíšeme pro obě funkce v a w, vt = a2vxx, wt = a2wxx. Prostorové derivace funkce w budou wx = (T2−T1)/ℓ, wxx = 0. Zahrneme-li dále podmínky pro funkci v, vt = a2vxx, v = XT, v(t, 0) = 0 = v(t, ℓ), dostáváme X(x) = A sin √ λx + B cos √ λx, tedy Xk = sin kπ ℓ x . (4.81) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic T1 T2 x T 0 Obrázek 4.1: Schématické znázornění průběhu funkce w(x) = T1 + T2−T1 ℓ x. Funkci v můžeme zapsat ve tvaru v(x, t) = ∞ k=1 Ck e−(akπ ℓ ) 2 t sin kπ ℓ x . (4.82) Z počáteční podmínky (4.80) dále vyplývá v(0, x) = ∞ k=1 Ck sin kπ ℓ x = −T1 + T1 − T2 ℓ x, (4.83) z toho vypočítáme Fourierův koeficient, Ck = 2 ℓ ˆ ℓ 0 −T1 + T1 − T2 ℓ x sin kπ ℓ ξ dξ = = 2 T1 kπ (−1)k − 1 − 2(T1 − T2) kπ (−1)k = (−1)k 2T2 kπ − 2T1 kπ . (4.84) Výsledná funkce bude mít tvar u(t, x) = T1 + T2 − T1 ℓ x + ∞ k=1 (−1)k 2T2 kπ − 2T1 kπ e−(akπ ℓ ) 2 t sin kπ ℓ x . (4.85) • Nehomogenní jednorozměrná úloha s konstantním zdrojem tepla T0, s homogenními podmínkami: Uvažujme rovnici chladnutí tyče s konstantním zdrojem tepla ut = a2 uxx + T0, t > 0, x ∈ ⟨0, ℓ⟩, (4.86) s podmínkami u(0, x) = 0, u(t, 0) = 0 = u(t, ℓ). Funkci separujeme způsobem u(t, x) = TX, X(x) = A sin √ λx + B cos √ λx, Xk(x) = vk(x) = sin kπ ℓ x . (4.87) Předpokládáme řešení ve tvaru u(t, x) = ∞ k=1 Ck(t) sin kπ ℓ x . (4.88) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Pomocí další podmínky získáme nehomogenní obyčejnou diferenciální rovnici ˙Ck(t) + a2 λkCk(t) = Fk(t), (4.89) kde Fk(t) je tzv. Fourierův koeficient nehomogenity. Tuto rovnici dále řešíme: f(t, x) = ∞ k=1 Fk(t) sin kπ ℓ x , (4.90) Fk(t) = 2 ℓ ℓˆ 0 f(t, ξ) sin kπ ℓ ξ dξ = 2T0 ℓ ℓ kπ − cos kπ ℓ ξ ℓ 0 = 2T0 kπ 1 − (−1)k . (4.91) Nejdříve řešíme homogenní rovnici ˙Ck(t) = −a2 kπ ℓ 2 Ck(t) = − akπ ℓ 2 K(t) e−(akπ ℓ ) 2 t + ˙K(t) e−(akπ ℓ ) 2 t . (4.92) Dosazením do nehomogenní rovnice dostáváme ˙Ck(t) + akπ ℓ 2 K(t) e−(akπ ℓ ) 2 t = 2T0 kπ 1 − (−1)k , (4.93) K(t) = ℓ akπ 2 2 T0 kπ 1 − (−1)k e(akπ ℓ ) 2 t + K2. (4.94) Z počáteční podmínky Ck(0) = 0 vyplývá, K2 = ℓ akπ 2 2T0 kπ (−1)k − 1 , (4.95) Ck(t) = 1 − e−(akπ ℓ ) 2 t 2T0 kπ ℓ akπ 2 1 − (−1)k . (4.96) Výsledná funkce bude mít tvar u(t, x) = ∞ k=1 1 − e−(akπ ℓ ) 2 t 2T0 kπ ℓ akπ 2 1 − (−1)k sin kπ ℓ x . (4.97) • Nehomogenní jednorozměrná úloha s nekonstantním zdrojem tepla, homogenní podmínky: Uvažujme rovnici chladnutí tyče s prostorově i časově závislým zdrojem tepla, ut = a2 uxx + tx, t > 0, x ∈ ⟨0, ℓ⟩, (4.98) s podmínkami u(0, x) = 0, u(t, 0) = 0 = u(t, ℓ). Funkci separujeme, u(t, x) = TX, X(x) = A sin √ λx + B cos √ λx, Xk(x) = vk(x) = sin kπ ℓ x . (4.99) Opět předpokládáme řešení ve tvaru u(t, x) = ∞ k=1 Ck(t) sin kπ ℓ x kde ˙Ck(t) + a2 λkCk(t) = Fk(t). (4.100) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Tuto rovnici dále řešíme: f(t, x) = ∞ k=1 Fk(t) sin kπ ℓ x , Fk(t) = (−1)k+1 2ℓ kπ t. (4.101) Řešení homogenní obyčejné diferenciální rovnice ˙Ck(t) = − akπ ℓ 2 K(t) e−(akπ ℓ ) 2 t + ˙K(t) e−(akπ ℓ ) 2 t . (4.102) Opět dosadíme do nehomogenní rovnice, dostáváme: ˙Ck(t) + akπ ℓ 2 K(t) e−(akπ ℓ ) 2 t = (−1)k+1 2ℓ kπ t, (4.103) K(t) = 2ℓ kπ (−1)k+1 t ℓ akπ 2 e(akπ ℓ ) 2 t − ℓ akπ 4 e(akπ ℓ ) 2 t + K2. (4.104) Z počáteční podmínky Ck(0) = 0 vyplývá, K2 = 2 ℓ kπ (−1)k+1 ℓ akπ 4 , (4.105) Ck(t) = 2ℓ kπ (−1)k+1 ℓ akπ 4 e−(akπ ℓ ) 2 t + t akπ ℓ 2 − 1 . (4.106) Výsledná funkce má tvar u(t, x) = ∞ k=1 2ℓ kπ (−1)k+1 ℓ akπ 4 e−(akπ ℓ ) 2 t + t akπ ℓ 2 − 1 sin kπ ℓ x . (4.107) • Nehomogenní jednorozměrná úloha s nehomogenními podmínkami (nástin řešení): Uvažujme rovnici ut = a2 uxx + tx, t > 0, x ∈ ⟨0, ℓ⟩, (4.108) s podmínkami u(0, x) = φ(x), u(t, 0) = u1(t), u(t, ℓ) = u2(t). Funkci u(t, x) opět rozložíme na součet u(t, x) = v(t, x)+w(t, x), kde w bude splňovat okrajové podmínky. Rozepíšeme-li rovnici (4.108) jako vt + wt = a2vxx + a2wxx + tx, dostáváme vt = a2 vxx + tx + a2 wxx − wt, (4.109) kde poslední tři členy reprezentují nehomogenitu. Počáteční podmínka pro funkci u dává φ(x) = v(0, x) + w(0, x) a tedy v(0, x) = φ(x) − w(0, x). Pomocí funkcí v a w řešíme úlohu v principu stejně jako v předchozích případech. 4.2.4 Jednoduché příklady prostorových úloh • Teplota v nekonečném rotačním válci (použití Besselových funkcí) : Uvažujme rovnici (kde c je poloměr válce) ut = a2 uρρ + 1 ρ uρ , t > 0, ρ ∈ ⟨0, c⟩, (4.110) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic reprezentující radiální část laplaciánu ve válcových souřadnicích (3.46), s podmínkami u(0, ρ) = f(ρ), u(t, 0) = 0 = u(t, c). Pomocí rozdělení funkce u = R(ρ)T(t) můžeme rovnici separovat, ˙T a2T = R′′ R + 1 ρ R′ R = −λ2 . (4.111) Po úpravě dostáváme pro obě strany LS: ˙T + a2 λ2 T = 0, PS: ρR′′ + R′ + λ2 ρR = 0. (4.112) Substitucí λρ = z a úpravami dR dρ = λ dR dz , d2 R dρ2 = λ2 d2 R dz2 (4.113) dostaneme tzv. Besselovu rovnici s indexem ν = 0, z d2 R dz2 + dR dz + zR = 0, (4.114) kdy obecná Besselova rovnice má tvar x2y′′ + xy′ + (x2 − ν2)y = 0. Řešením rovnice (4.114) a řešením obecné Besselovy rovnice jsou funkce J0(x) = ∞ k=0 (−1)k (k!)2 x 2 2k , Jν(x) = x 2 ν ∞ k=1 (−1)k k! Γ(ν + k + 1) x 2 2k , (4.115) kde výraz Γ(ν + k + 1) je tzv. Γ funkce, definovaná jako Γ(x) = ´ ∞ 0 e−ttx−1 dt. V našem případě dostáváme řešení PS rovnice (4.112) ve tvaru R(z) = J0(z), tedy R(ρ) = J0(λρ) a tedy J0(λnρ) = Rn(ρ), s okrajovou podmínkou J0(λnc) = 0 kde λn pro n = 1, 2, 3, . . . , je kořenem této rovnice. Řešením LS rovnice (4.112) bude funkce Tn(t) = e−a2λ2 nt . (4.116) Pomocí tzv. Fourierova-Besselova rozvoje, definovaného jako ∞ k=1 CnJν(λnx) = f(x) v každém bodě spojitosti funkce f(x), získáme koeficient Cn (Fourierův-Besselův koeficient), kdy pro J0 a obecné Jν z rovnice (4.115) platí Cn = 2 c2J2 1(λnc) ˆ c 0 ξ J0(λnξ)f(ξ) dξ, Cn = 2 c2J2 ν+1(λnc) ˆ c 0 ξ Jν(λnξ)f(ξ) dξ. (4.117) Výsledená funkce bude mít podobu u(t, ρ) = 2 c2 ∞ n=1 J0(λnρ) J2 1(λnc) ˆ c 0 [ξ J0(λnξ)f(ξ) dξ] e−a2λ2 nt . (4.118) • Chladnutí koule (homogenní rovnice) : Uvažujme funkci s laplaciánem ut = a2 ∆u, t > 0, r ∈ ⟨0, R⟩, (4.119) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic R T 0 T1 r Obrázek 4.2: Schématické znázornění průběhu funkce w(r) = T1 − T1 R r. pro kartézské souřadnice x2 +y2 +z2 ≤ R2 kde R je poloměr koule, s podmínkami u(0, x, y, z) = f x2 + y2 + z2 = f(r) a tedy u(0, r) = f(r), u(t, x, y, z) = u(t, r), u(t, 0) = T1, u(t, R) = 0. Jednotlivé parciální derivace budou ux = urrx + uθθx + uϕϕx 0 , tedy ux = ur x r , (4.120) uxx = urr x2 r2 + ur r − xx r r2 = urr x2 r2 + ur r2 − x2 r3 , (4.121) ∆u = urr x2 + y2 + z2 r2 + ur 3r2 − x2 + y2 + z2 r3 = urr + 2 r ur, tedy (4.122) ut = a2 urr + 2 r ur (sférická radiální část Laplaciánu - viz rovnice (3.72)). (4.123) Pomocí substituce v(r) = ru(r) tedy u = v/r dostáváme: ut = 1 r vt, ur = − 1 r2 v + 1 r vr, urr = 2 r3 v − 1 r2 vr − 1 r2 vr + 1 r vrr = 2 r3 v − 2 r2 vr + 1 r vrr, (4.124) ut = a2 urr + 2 r ur , tedy 1 r vt = a2 2 r3 v − 2 r2 vr + 1 r vrr − 2 r3 v + 2 r2 vr , a tedy (4.125) vt = a2 vrr, kde v(0, r) = rf(r) v(t, 0) = rT1, v(t, R) = 0. (4.126) Pomocí linearizace u = z + w dále dostáváme: u(0, r) = f(r), tedy z(0, r) = u(0, r) − w(r), (4.127) w(r) = T1 − T1 R r, z(0, r) = f(r) − T1 + T1 R r, z(0, r) = rz(0, r). (4.128) v(0, r) = rf(r), tedy z(0, r) = r f(r) − T1 + T1 R r dává (4.129) v = ru = r(z + w), zt = a2 zrr, z(t, 0) = z(t, R) = 0, z = TX, tedy (4.130) z(t, r) = ∞ k=1 Ck e−(akπ R ) 2 t sin kπ R r . (4.131) Fourierův koeficient bude mít tvar: Ck = 2 R ˆ R 0 r f(r) − T1 + T1 R r sin kπ R r dr. (4.132) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Výsledná funkce bude mít tvar: u(t, r) = T1 − T1 R r w + 2 R ˆ R 0 f(r) − T1 + T1 R r × ∞ k=1 e−(akπ R ) 2 t sin kπ R r dr. (4.133) 4.2.5 Řešení hyperbolických parciálních diferenciálních rovnic Fourierovou metodou Následující dva jednoduché řešené příklady ilustrují princip použití této metody v případě hyperbolických PDR: • Homogenní vlnová rovnice : Uvažujme rovnici utt = a2 uxx, t > 0, x ∈ ⟨0, ℓ⟩, (4.134) s Cauchyho počátečními podmínkami (viz odstavec 3.1.1 ve skriptu Početní praktikum) u(0, x) = φ(x), ut(0, x) = ψ(x) (4.135) a se smíšenými okrajovými podmínkami (viz odstavec 3.2.1 ve skriptu Početní praktikum), kde α, β ̸= 0, α u(t, 0) + β ux(t, 0) = 0, α u(t, ℓ) + β ux(t, ℓ) = 0. (4.136) Separací proměnných: u(t, x) = T(t)X(x) a tedy ¨T a2T = X′′ X = −λ2 , (4.137) po úpravě dostáváme LS: ¨T + a2 λ2 T = 0, PS: X′′ + λ2 X = 0. (4.138) Z rovnice (4.138) dostáváme Tk(t) = ak cos (λka t) + bk sin (λka t) , Xk(x) = ck cos (λk x) + dk sin (λk x) , (4.139) Obdobným způsobem jako v rovnici (4.64) dostáváme ze smíšených okrajových podmínek (4.136) α + βλ = 0, β − αλ = β2 + α2 ̸= 0, tedy sin (λk x) = 0 a tedyλk = kπ ℓ . (4.140) Pro prostorovou funkci tedy dostáváme řešení (viz rovnice (4.65)) Xk = ck cos kπ ℓ x + dk sin kπ ℓ x . (4.141) Obecné řešení lze tedy zapsat ve tvaru u(t, x) = ∞ k=1 Ak cos akπ ℓ t + Bk sin akπ ℓ t cos kπ ℓ x + sin kπ ℓ x . (4.142) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Z Cauchyho počáteční podmínky (4.135) dostáváme u(0, x) = ∞ k=1 Ak cos kπ ℓ x + sin kπ ℓ x = φ(x) (4.143) a z podmínky (4.135) dostáváme ut(0, x) = ∞ k=1 akπ ℓ Bk cos kπ ℓ x + sin kπ ℓ x = ψ(x) = ∞ k=1 akπ ℓ Bk vk. (4.144) Fourierovy koeficienty Ak, Bk najdeme z rovnic (4.143) a (4.144) (viz také rovnice (4.68)), Ak = 1 ∥vk∥2 ℓˆ 0 φ(ξ) vk(ξ) dξ, Bk = ℓ akπ∥vk∥2 ℓˆ 0 ψ(ξ) vk(ξ) dξ. (4.145) Normu ∥vk∥ funkce vk řešíme jako normu spojitě definovaného vektoru (viz rovnice 2.1 ve skriptu Početní praktikum), tedy ∥vk∥2 = ˆ ℓ 0 v2 k(ξ) dξ = ˆ ℓ 0 cos kπ ℓ ξ + sin kπ ℓ ξ 2 dξ = ˆ ℓ 0 dξ = ℓ. (4.146) Po dosazení dostáváme rovnici (4.142) ve tvaru u(t, x) = ∞ k=1 cos kπ ℓ x + sin kπ ℓ x × ×  1 ℓ ℓˆ 0 φ(ξ) vk(ξ) cos akπ ℓ t dξ + 1 akπ ℓˆ 0 ψ(ξ) vk(ξ) sin akπ ℓ t dξ   . (4.147) • Nehomogenní vlnová rovnice s homogenními počátečními podmínkami : Uvažujme rovnici utt = a2 uxx + f (kde f je zdroj energie vlnění), t > 0, x ∈ ⟨0, ℓ⟩, (4.148) s homogenními Cauchyho počátečními podmínkami (viz odstavec 3.1.1 ve skriptu Početní prak- tikum) u(0, x) = 0, ut(0, x) = 0 (4.149) a se smíšenými okrajovými podmínkami (viz odstavec 3.2.1 ve skriptu Početní praktikum), kde α, β ̸= 0, α u(t, 0) + β ux(t, 0) = 0, α u(t, ℓ) + β ux(t, ℓ) = 0. (4.150) Obdobně jako v předchozím příkladu: u(t, x) = TX, X(x) = A sin (λx) + B cos (λx) , Xk(x) = vk(x) = sin kπ ℓ x . (4.151) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Zvolíme rovnici ve tvaru: u(t, x) = ∞ k=1 Ck(t) vk(x) = ∞ k=1 Ck(t) sin kπ ℓ x . (4.152) Pomocí další podmínky získáme nehomogenní obyčejnou diferenciální rovnici: ¨Ck(t) + a2 λ2 kCk(t) = Fk(t) kde Fk(t) je tzv. Fourierův koeficient nehomogenity, (4.153) f(t, x) = ∞ k=1 Fk(t) sin kπ ℓ x a tedy Fk(t) = 2 ℓ ℓˆ 0 f(t, ξ) sin kπ ℓ ξ dξ. (4.154) Dále bychom museli řešit nehomogenní diferenciální rovnici 2. řádu (4.153) (například metodou variace konstant - viz oddíl 3.2.1 ve skriptu Početní praktikum) alespoň v obecné integrabilní podobě: Ck(t) = ℓ akπ tˆ 0 Fk(σ) sin akπ ℓ (t − σ) dσ. (4.155) Jejím dosazením do rovnice obecného řešení (4.152) dostaneme (viz řešení rovnice obdobného typu v případě parabolických parciálních diferenciálních rovnic v oddíle 4.2.3): u(t, x) = ∞ k=1 ℓ akπ sin kπ ℓ x tˆ 0 Fk(σ) sin akπ ℓ (t − σ) dσ. (4.156) 4.2.6 Ukázka možných způsobů řešení jednoduchých eliptických parciálních diferenciálních rovnic Následující řešené příklady demonstrují některé základní způsoby počítání eliptických PDR: • Laplaceova rovnice : Laplaceova rovnice je v kartézských souřadnicích v nejjednodušší formě definovaná ve tvaru uxx(x, y) + uyy(x, y) = 0. (4.157) V tomto příkladu budeme řešit Laplaceovu rovnici na obdélníkové oblasti s rozměry a, b, se smíšenými Dirichletovými a Neumannovými podmínkami (viz odstavec 3.2.1 ve skriptu Početní praktikum), v podobě u(x, 0) = 0, u(0, y) = 0, ux(a, y) = 0 (y ̸= 0), uy(x, b) = u0 sin π 2a x (x ̸= 0). (4.158) Separací proměnných u(x, y) = X(x)Y (y) dostáváme rovnici X′′ Y + XY ′′ = 0 a tedy X′′ X = − Y ′′ Y = λ, (4.159) kde konstanta λ může nabývat hodnot λ = 0, λ > 0, λ < 0. Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic 1. λ = 0: Budeme předpokládat separované funkce X(x) a Y (y) ve tvaru polynomů, vzhledem k okrajovým podmínkám budou dostatečné polynomy 1. stupně, tedy X(x) = Ax + B, Y (y) = Cx+D. Z okrajové podmínky u(0, y) = 0 vyplývá B = 0 ∨ C = D = 0, pokud ovšem C = D = 0, potom Y (y) = 0 a tedy u(x, y) = 0 všude. Pokračujeme-li s B = 0, dostáváme Ax(Cy + D) = 0 a tedy, zahrneme-li další okrajovou podmínku u(x, 0) = 0, musí být AxD = 0. Případ A = 0 dává X(x) = 0, tedy u(x, y) = 0 všude. Uvažujeme-li také D = 0, potom u(x, y) = AxCy = 0, z další okrajové podmínky ux(a, y) = 0 vyplývá ACy = 0, tedy A = 0 ∨ C = 0, v obou případech ovšem u(x, y) = 0. Případ λ = 0 dává tedy pouze triviální řešení. 2. λ > 0: Z rovnice (4.159) dostáváme obecné řešení ve tvaru u(x, y) = A cosh( √ λx) + B sinh( √ λx) C cos( √ λy) + D sin( √ λy) . (4.160) Z okrajové podmínky u(0, y) = 0 vyplývá A[C cos( √ λy) + D sin( √ λy)] = 0, tedy C = D = 0, potom ovšem Y (y) = 0 a tedy u(x, y) = 0 všude. Pokračujeme-li s A = 0, dostáváme u(x, y) = B sinh( √ λx)[C cos( √ λy)+D sin( √ λy)]. Zahrneme-li další okrajovou podmínku u(x, 0) = 0, musí být BC sinh( √ λx) = 0. Případ B = 0 dává X(x) = 0, tedy u(x, y) = 0 všude. Pokračujeme-li s C = 0, potom u(x, y) = BD sinh( √ λx) sin( √ λy) a z další okrajové podmínky ux(a, y) = 0 vyplývá √ λBD cosh( √ λa) sin( √ λy) = 0, tedy B = 0 ∨ D = 0, v obou případech ovšem u(x, y) = 0. Případ λ > 0 dává tedy také pouze triviální řešení. 3. λ < 0: Z rovnice (4.159) dostáváme obecné řešení ve tvaru u(x, y) = A cos( √ λx) + B sin( √ λx) C cosh( √ λy) + D sinh( √ λy) . (4.161) Z okrajové podmínky u(0, y) = 0 vyplývá A[C cosh( √ λy) + D sinh( √ λy)] = 0, tedy C = D = 0, potom Y (y) = 0 a tedy u(x, y) = 0 všude. Pokračujeme s A = 0, dostáváme u(x, y) = B sin( √ λx)[C cosh( √ λy) + D sinh( √ λy)]. Zahrneme-li další okrajovou podmínku u(x, 0) = 0, musí být BC sin( √ λx) = 0. Případ B = 0 dává X(x) = 0, tedy u(x, y) = 0 všude. Pokračujeme-li s C = 0, potom u(x, y) = BD sin( √ λx) sinh( √ λy) a z další okrajové podmínky ux(a, y) = 0 vyplývá √ λBD cos( √ λa) sinh( √ λy) = 0, tedy B = 0 ∨ D = 0 (v obou případech ovšem u(x, y) = 0) ∨ cos( √ λa) = 0. Poslední případ dává řešení cos( √ λa) = 0, tedy √ λ = (2k − 1)π 2a a tedy u(x, y) = ∞ k=1 Kk sin (2k − 1)π 2a x sinh (2k − 1)π 2a y , kde Kk = BD. (4.162) Uplatníme-li také čtvrtou okrajovou podmínku, dostáváme u0 sin π 2a x = ∞ k=1 Kk sin (2k − 1)π 2a x sinh (2k − 1)π 2a b . (4.163) Z argumentů funkce sinus vyplývá řešení pouze pro k = 1, tedy K1 = u0 / sinh[πb/(2a)]. Výsledné řešení se zahrnutím všech okrajových podmínek bude u(x, y) = u0 sinh πb 2a −1 sin πx 2a sinh πy 2a . (4.164) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic Další typickou eliptickou parciální diferenciální rovnicí může být například tzv. Poissonova rovnice typu ∆u(x, y) = f(x, y), tedy nehomogenní eliptická rovnice, nejčastěji používaná ve formě gravitační Poissonovy rovnice, ∆Φ = 4πGρ, kde Φ je gravitační potenciál, ρ je hustota hmoty a G je gravitační konstanta, nebo Poissonovy rovnice elektrostatického potenciálu, ∆Φ = −ρ/ϵ, kde ρ je hustota elektrického náboje a ϵ je permitivita. Řešení vícerozměrné Poissonovy rovnice je analogické k řešení Laplaceovy rovnice a také například k řešení nehomogenní hyperbolické parciální diferenciální rovnice: • Poissonova rovnice s konstantní pravou stranou: Řešme jednoduchou rovnici, definovanou na oblasti x > y2, tj. na oblasti ohraničené parabolou x = y2 s vrcholem v bodě [0, 0], jejíž osu tvoří kladná část osy x, uxx(x, y) + uyy(x, y) = 2, (4.165) s Dirichletovou podmínkou na hranici oblasti, u(y2, y) = 0. Předpokládejme řešení ve formě všech členů polynomu 2. stupně s neurčitými koeficienty, u(x, y) = A + Bx + Cy + Dx2 + Exy + Fy2 , (4.166) kdy po jeho parciálním derivování ve smyslu rovnice (4.165) snadno zjistíme: F = 1 − D. Po dosazení okrajové podmínky, tedy z rovnice A + Cy + (B − D + 1) y2 + Ey3 + Dy4 = 0, (4.167) dostáváme nenulové hodnoty koeficientů pouze pro B = −1, F = 1. Hledaná rovnice tedy bude u(x, y) = y2 − x. (4.168) • Poissonova rovnice s konstantní pravou stranou na kruhové oblasti, s nehomogenní okrajovou podmínkou: Uvnitř kruhové oblasti s poloměrem R platí následující rovnice, uxx(x, y) + uyy(x, y) = 4, (4.169) kdy na hranici oblasti platí Dirichletova podmínka u(x, y1) = 1, z níž vyplývá y1 = ± √ R2 − x2. Analogicky k parabolickým rovnicím s nehomogenními okrajovými podmínkami rozdělíme hledanou funkci u(x, y) na součet dvou funkcí, například U(x, y) a v(x, y), pro které bude platit: u(x, y) = U(x, y) + v(x, y), Uxx + Uyy = 4, U(x, y1) = 0, vxx + vyy = 0, v(x, y1) = 1. (4.170) Obdobně jako v předchozím případě předpokládáme pro každou funkci úplný polynom 2. stupně s neurčitými koeficienty, U(x, y) = A + Bx + Cy + Dx2 + Exy + Fy2 , (4.171) v(x, y) = a + bx + cy + dx2 + exy + fy2 , (4.172) což dává F = 2−D, f = −d. Po dosazení okrajové podmínky můžeme rovnice (4.171) a (4.172) přepsat ve tvaru A + Bx ± (C + Ex) R2 − x2 + 2 (D − 1) x2 + (2 − D) R2 = 0, (4.173) a + bx ± (c + ex) R2 − x2 + 2dx2 − dR2 = 1, (4.174) jednotlivé nenulové koeficienty budou: A = −R2, D = 1, F = 1, a = 1. Po sečtení rovnic (4.173) a (4.174) dostáváme hledanou výslednou funkci u(x, y) = 1 − R2 + x2 + y2 . (4.175) Kapitola 4. Stručný úvod do parciálních diferenciálních rovnic • Poissonova rovnice s obecnou pravou stranou, smíšené okrajové podmínky: Řešme obdobným způsobem Poissonovu rovnici ve tvaru uxx(x, y) + 4uyy(x, y) = xy, (4.176) s okrajovými podmínkami u(0, y) = y2, ux(0, y) = 0. Abychom po derivování dostali členy potřebného stupně, musíme nyní ovšem předpokládat řešení ve tvaru úplného polynomu 4. stupně s neurčitými koeficienty, u(x, y) = A + Bx + Cy + Dx2 + Exy + Fy2 + Gx3 + Hx2 y + Ixy2 + Jy3 + +Kx4 + Lx3 y + Mx2 y2 + Nxy3 + Qy4 . (4.177) Příslušné druhé derivace tedy v tomto případě budou uxx = 2D + 6Gx + 2Hy + 12Kx2 + 6Lxy + 2My2 , (4.178) uyy = 2F + 2Ix + 6Jy + 2Mx2 + 6Nxy + 12Qy2 . (4.179) Pro jednotlivé koeficienty dostáváme D = −4F, G = − 4 3 I, H = −12J, K = − 2 3 M, L = 1 − 24N 6 , M = −24Q. (4.180) Dosazením Dirichletovy okrajové podmínky dostáváme A = 0, C = 0, F = 1, J = 0, Q = 0, z relací (4.180) ihned vyplývá D = −4, H = 0, K = 0, M = 0. Dosazením Neumannovy okrajové podmínky dostáváme B = 0, E = 0, I = 0, N = 0, z relací (4.180) následně vyplývá G = 0, L = 1/6. Dosazením nenulových koeficientů do rovnice (4.177) dostáváme hledanou výslednou funkci, u(x, y) = −4x2 + y2 + 1 6 x3 y. (4.181) Podrobně je tato problematika popsána např. v učebnici Franců (2011). Kapitola 5 Praktické základy numerických výpočtů Smyslem této kapitoly není podávat systematický popis základních metod numerické matematiky, v tomto směru odkazuji zájemce například na skriptum Humlíček (2009) nebo odpovídající učebnice (například Přikryl, 1985; Vitásek, 1987; Čermák & Hlavička, 2006, atd), ale pouze stručně a názorně ilustrovat některé principy a možné postupy při praktickém numerickém modelování nejčastěji se v praxi vyskytujících (a výše popsaných) analytických okruhů. Vybrané příklady jednoduchého modelování jsou také doprovázeny ukázkami velmi jednoduše sestavených programovacích skriptů pro daný konkrétní problém, případně obrázky a grafy výsledných modelů. Programové skripty jsou zde demonstrovány v co nejvíce elementární podobě, zbaveny všech podprogramů, modulů a dalších „programátorských vylepšení“, ve kterých by se ovšem podstata algoritmu, zejména pro začátečníky, mohla ztrácet. Rozsáhlé využívání numerické matematiky ve většině přírodovědných a technických disciplín přineslo také tvorbu celé řady hotových knihoven, rozepsaných do hlavních programových jazyků; jejich přehledné úložiště se nachází například na stránkách GAMS (Guide to Available Mathematical Software) http://gams.nist.gov/. Některé z nich jsou komerční (a poměrně komplexní), například NAG (Numerical Algorithmus Group) https://www.nag.com/ content/nag-library nebo IMSL (International Mathematics and Statistics Library) http: //www.roguewave.com/products-services/imsl-numerical-libraries, jiné jsou volně dostupné a bývají zpravidla zaměřené na specifickou oblast, například FFTPACK http://www. netlib.org/fftpack/ - (rychlá) Fourierova transformace, LAPACK (viz odstavec 5.1) - lineární algebra, MINPACK http://www.netlib.org/minpack/ - nelineární rovnice, atd. Jejich úplná nebo i částečná implementace do vlastních algoritmů může výrazně urychlit a usnadnit jejich tvorbu i kvalitu. 5.1 Numerické metody lineární algebry V tomto oddíle nebudeme probírat jednotlivé metody numerických řešení lineární algebry, k základům tohoto tématu existuje rozsáhlá literatura (např. Humlíček (2009)), popisující jak vlastní numerické rovnice tak jejich stabilitu a podmíněnost (tj. zejména stanovení přesnosti numerických maticových algoritmů), odhady chyb, atd. V současnosti existuje řada hotových balíčků (procedur), sestávajících z jednotlivých podprogramů (knihoven), určených pro řešení dílčích nebo i kombinovaných algebraických úloh (například řešení soustav lineárních rovnic, řešení tzv. tridiagonálních matic (tj. matic s nenulovými prvky pouze na hlavní a obou sousedních diagonálách), hledání determinantů, inverzních matic, vlastních hodnot a vlastních vektorů, atd. Kapitola 5. Praktické základy numerických výpočtů Jedním z nejvýkonnějších takových balíčků, který zde podrobněji představíme, je programový balíček LAPACK (Linear Algebra PACKage, Anderson et al. (1999)), který se vyvinul ze starších balíčků EISPACK a LINPACK a je určen pro fortran 77, fortran 90, existují také C++ verze. Existují rozšířené verze tohoto balíčku nebo další knihovny na něm postavené, se zabudovanými podprogramy pro paralelizaci na výkonných počítačových clusterech (viz odstavec 5.6), například ScaLAPACK, MAGMA, MORSE, CHAMELEON, atd. Programový balíček LAPACK je volně dostupná softwarová knihovna, její instalaci provedeme buď ze softwarového centra používané systémové distribuce, nebo z adresy http: //www.netlib.org/lapack. Při překladu (kompilaci) používaného programového souboru zadáme odkaz na LAPACK, například: gfortran název_souboru.f95 -llapack. Popis jednotlivých podprogramů a jejich využití (např. knihovna DGBSV pro řešení soustav reálných lineárních rovnic o libovolném počtu proměnných nebo DGTSV, vhodná pro řešení tridiagonálních matic, atd.) jsou dostupné v uživatelských příručkách, například v Anderson et al. (1999). • Ukázka schématu podprogramu DGBSV, určeného pro řešení soustavy lineárních rovnic (překlad): N (vstup, INTEGER) = počet rovnic = řád čtvercové matice A, N ≥ 0. KL (vstup, INTEGER) = počet spodních diagonál matice A, KL ≥ 0. KU (vstup, INTEGER) = počet horních diagonál matice A, KU ≥ 0. NRHS (vstup, INTEGER) = počet sloupců pravé strany (tj. matice B), NRHS ≥ 0. AB (vstup/výstup, DOUBLE PRECISION) = pole dimenze (LDAB,N). Na vstupu: matice A v pásovém uložení, v řádcích od KL+1 do 2*KL+KU+1; řádky 1 až KL pole nemusí být vypsány. j-tý sloupec pole A je uložen jako j-tý sloupec pole AB následovně: AB(KL+KU+1+i-j, j) = A(i,j) pro max(1, j-KU) ≤ i ≤ min(N, j+KL). Na výstupu: detaily faktorizace - matice U je uložena jako horní trojúhelníková pásová matice s KL+KU horními diagonálami v řádcích od 1 do KL+KU+1, multiplikátory M, použité během faktorizace jsou uchovány v řádcích od KL+KU+2 do 2*KL+KU+1 (viz schéma níže). LDAB (vstup, INTEGER) = určující dimenze pole AB. LDAB ≥ 2*KL+KU+1. IPIV (výstup, INTEGER) = pole dimenze (N), indexy pivotů, které definují permutační matici; i-tý řádek matice byl zaměněn za řádek IPIV(i). B (vstup/výstup, DOUBLE PRECISION) = pole dimenze (LDB,NRHS), na vstupu je N : NRHS matice pravé strany B. Na výstupu, pokud INFO = 0, je N : NRHS řešení matice X. LDB (vstup, INTEGER) = určující dimenze pole B. LDB ≥ max(1,N). INFO (výstup, INTEGER) = 0: úspěšný výstup, < 0: pokud INFO = -i, pak i-tý argument má nepovolenou hodnotu, > 0: pokud INFO = i, U(i,i) je přesně 0. Faktorizace je ukončena, ale faktor U je přesně singulární, řešení nemohlo být vypočteno. DALŠÍ DETAILY: Kapitola 5. Praktické základy numerických výpočtů Schéma pásového uložení je ilustrováno na následujícím příkladu, kdy M = N = 6, KL = 2, KU = 1: Na vstupu: Na výstupu: ∗ ∗ ∗ + + + ∗ ∗ ∗ u14 u25 u36 ∗ ∗ + + + + ∗ ∗ u13 u24 u35 u46 ∗ a12 a23 a34 a45 a56 ∗ u12 u23 u34 u45 u56 a11 a22 a33 a44 a55 a66 u11 u22 u33 u44 u55 u66 a21 a32 a43 a54 a65 ∗ m21 m32 m43 m54 m65 ∗ a31 a42 a53 a64 ∗ ∗ m31 m42 m53 m64 ∗ ∗ Prvky pole označené * nejsou používané ve výpočetním procesu; prvky označené + nemusí být uvedeny na vstupu, ale jsou nutné ve výpočetním procesu pro uložení prvků pole U z důvodu nedostatku místa, vyplývajícího z výměny řádků. • Ukázka schématu podprogramu DGTSV, určeného pro řešení tridiagonálních matic: N (vstup, INTEGER) = počet rovnic = řád čtvercové tridiagonální matice A, N ≥ 0. NRHS (vstup, INTEGER) = počet sloupců pravé strany (tj. matice B), NRHS ≥ 0. DL (vstup/výstup, DOUBLE PRECISION) = na vstupu pole prvků spodní (sub) diagonály matice A, dimenze N-1, na výstupu je toto pole přepsáno N-2 prvky druhé horní diagonály horní trojúhelníkové matice U, dané LU faktorizací. D (vstup/výstup, DOUBLE PRECISION) = pole dimenze N, na vstupu obsahuje diagonální prvky matice A, na výstupu je toto pole přepsáno diagonálními prvky matice U. DU (vstup/výstup, DOUBLE PRECISION) = pole dimenze N-1, na vstupu obsahuje N-1 prvků horní (super) diagonály matice A, na výstupu je toto pole přepsáno N-1 prvky první horní diagonály horní trojúhelníkové matice U. B (vstup/výstup, DOUBLE PRECISION) = pole dimenze (LDB,NRHS), na vstupu je N : NRHS matice pravé strany B. Na výstupu, pokud INFO = 0, je N : NRHS řešení matice X. LDB (vstup, INTEGER) = určující dimenze pole B. LDB ≥ max(1,N). INFO (výstup, INTEGER) = 0: úspěšný výstup, < 0: pokud INFO = -i, pak i-tý argument má nepovolenou hodnotu, > 0: pokud INFO = i, U(i,i) je přesně 0. Faktorizace je ukončena, ale faktor U je přesně singulární, řešení nemohlo být vypočteno. Obdobným způsobem jsou sestaveny i ostatní knihovny. Příklady řešení a programových skriptů s odkazem na LAPACK uvádíme v dalších odstavcích 5.2.1, 5.3.1, 5.3.2, 5.3.3, 5.5.1, 5.5.7, atd. 5.2 Interpolace Interpolací rozumíme nahrazení složitější funkční závislosti závislostí jednodušší, tedy aproximace dané funkce jinou vhodnou funkcí. Interpolační aproximací rozumíme interpolaci diskrétní funkce, tj. funkce, dané konečným souborem bodů definičního oboru a jim přiřazených funkčních hodnot (reprezentovaných zpravidla tabulkou), pomocí funkce (případně i jejích derivací), nabývající v těchto bodech stejných hodnot jako původní zadaná funkce. Nejvhodnějšími interpolačními funkcemi jsou polynomy různého (zvoleného) stupně, např. tzv. Lagrangeův a Newtonův interpolační polynom (Humlíček, 2009; Vitásek, 1987) nebo tzv. splajny. V následujícím Kapitola 5. Praktické základy numerických výpočtů odstavci 5.2.1 je stručně ukázán často používaný tzv. kubický interpolační splajn pro jednorozměrné interpolace. V odstavcích 5.2.2 a 5.2.3 jsou dokumentovány dvourozměrné bilineární a bikubické interpolace pomocí polynomů 1. a 3. stupně, vedených ve dvou směrech. Při praktických výpočtech je třeba vždy zvážit, případně vyzkoušet, který typ interpolace je pro danou úlohu nejvhodnější. Jsou-li například velké disproporce mezi vzdálenostmi zadaných bodů (tj. zadaná „síť“ bodů je místy hustá a místy velmi řídká), je vhodnější použít jednodušší, „po částech“ lineární interpolaci, protože interpolace spojitou funkcí (například kubickým interpolačním splajnem, viz odstavec 5.2.1) může být v řídkých oblastech neúměrně „rozkmitaná“. Případně je možné použít pro různé úseky interpolované závislosti různé typy aproximací (a ve styčných bodech je vhodným způsobem navázat). 5.2.1 Kubický interpolační splajn (z anglického spline) je jednou z nejčastěji používaných interpolačních funkcí Jedná se o tzv. po částech (piecewise) interpolační polynom 3. stupně si ve tvaru S(x) = s1(x) pro x1 ≤ x < x2, s2(x) pro x2 ≤ x < x3, . . . , sn−1(x) pro xn−1 ≤ x < xn, (5.1) definovaný jako si(x) = ai(x − xi)3 + bi(x − xi)2 + ci(x − xi) + di, (5.2) jehož druhé derivace označíme jako Mi. Je to tedy soustava kubických funkcí, které na sebe v zadaných bodech [xi, yi] navazují jak funkční hodnotou, tak první a druhou derivací. Podle okrajových podmínek rozlišujeme různé typy těchto splajnů, například tzv. přirozený splajn je určen okrajovými podmínkami M1 = Mn = 0, parabolický ukončený splajn je určen okrajovými podmínkami M1 = M2, Mn = Mn−1 (extrapolace nultého řádu), kubický ukončený splajn je určen okrajovými podmínkami M1 = 2M2 − M3, Mn = 2Mn−1 − Mn−2 (extrapolace 1. řádu nebo také lineární extrapolace), atd. Z podmínek spojitosti funkčních hodnot i prvních a druhých derivací v bodech xi, vyplývá pro i = 0, . . . , n − 1 následující: si(xi) = yi, si(xi+1) = yi+1, (5.3) s′ i−1(xi) = s′ i(xi) = ci, s′′ i−1(xi) = s′′ i (xi) = Mi = 2bi, (5.4) tyto vnitřní podmínky jsou dále doplněny dvěma uvedenými okrajovými podmínkami, danými typem splajnu. Porovnáním všech uvedených podmínek ve všech uzlových bodech [xi, yi] dostáváme soustavu lineárních rovnic pro neznámé druhé derivace Mi ve vnitřních uzlových bodech: (xi+1 − xi) Mi+1 + 2 (xi+1 − xi−1) Mi + (xi − xi−1) Mi−1 = 6 yi+1 − yi xi+1 − xi − yi − yi−1 xi − xi−1 . (5.5) Tuto soustavu rovnic lze zapsat pomocí tzv. tridiagonální matice ve tvaru (kde zavedeme ∆xi = xi+1 − xi, ∆+xi = xi+1 − xi−1, ∆yi = yi+1 − yi, ∆j = ∆yj/∆xj, ∆i j = ∆yi/∆xi − ∆yj/∆xj):             2∆xn−1 ∆xn−1 ∆xn−1 2∆+xn−1 ∆xn−2 ∆xn−2 2∆+xn−2 ∆xn−3 ... ... ... ∆x2 2∆+x2 ∆x1 ∆x1 2∆x1                         Mn Mn−1 Mn−2 ... M2 M1             = 6             −∆n−1 ∆n−1 n−2 ∆n−2 n−3 ... ∆2 1 ∆1             , (5.6) Kapitola 5. Praktické základy numerických výpočtů kterou řešíme například pomocí vhodné knihovny balíčku LAPACK (odstavec 5.1). Jednotlivé koeficienty rovnice (5.2) potom snadno dopočítáme: di = yi, ci = yi+1 − yi xi+1 − xi − (Mi+1 + 2Mi) xi+1 − xi 6 , bi = Mi 2 , ai = Mi+1 − Mi 6 (xi+1 − xi) . (5.7) V případě konstantního kroku nezávisle proměnné xi+1 − xi = h = konst. se rovnice (5.5) zjednoduší do podoby Mi+1 + 4Mi + Mi−1 = 6 h2 (yi+1 − 2yi + yi−1) , (5.8) matice (5.6) bude mít potom tvar             2 1 1 4 1 1 4 1 ... ... ... 1 4 1 1 2                         Mn Mn−1 Mn−2 ... M2 M1             = 6 h2             −∆yn−1 ∆yn−1 − ∆yn−2 ∆yn−2 − ∆yn−3 ... ∆y2 − ∆y1 ∆y1             . (5.9) • Příklad programového skriptu pro přirozený kubický interpolační splajn (fortran 95): program nat3_splajn deklarace názvu programu implicit none příkaz, který ruší automatické přiřazování písmen i, j, k, l, m, n pro celočíselné proměnné a ostatních písmen pro reálné proměnné (tj. proměnné s desetinným rozvo- jem) tabulka hodnot [xi, yi]: [1,1], [2,3], [3,4], [4;1,5], [5;1,5], [6,5], [7,7], [8,5], [9,2], [10,0] integer :: i, j, np deklarace celočíselných proměnných: i = pořadové číslo nezávisle proměnné, j = pořadové číslo lineární rovnice, np = celkový počet diskrétních hodnot. parameter (np=10) zadání fixní hodnoty np, kterou nelze v programu dále měnit integer :: INFO,KL,KU,LDAB,LDB,N,RHS deklarace celočíselných proměnných procedury LAPACK - viz sekce 5.1. parameter(KL=np-3,KU=np-3,N=np-2,KUKL=KL+KU+1,LDAB=2*KL+KU+1,& LDB=N,RHS=1) zadání fixních hodnot celočíselných para- metrů integer :: IPIV(N) zadání parametru jako pole o N prvcích double precision, dimension(np) :: x, y deklarace reálných veličin x, y jako pole (vektoru) o np prvcích s tzv. dvojitou přesností, umožňující výpočet čísla na 16 desetinných míst a do mocniny cca 10300 (v závislosti na parametrech počítače). Kapitola 5. Praktické základy numerických výpočtů double precision, dimension(np) :: M(N,N),AB(LDAB,N),B(LDB,RHS) zadání parametrů jako dvojrozměrných polí double precision :: f(np), res(np), a(np), b(np), c(np), d(np) jiný způsob deklarace reálných veličin jako pole (vektoru) o np prvcích s dvojitou přes- ností. double precision :: h deklarace reálných skalárních veličin. parameter (h=1.d0) zadání fixní hodnoty intervalu nezávisle proměnné, kterou nelze v programu dále měnit x=(/(1.d0*i, i=1,np)/) vektor hodnot nezávisle proměnné. y=(/1.d0, 3.d0, 4.d0, 1.5d0, 1.5d0, 5.d0, 7.d0, 5.d0, 2.d0, 0.d0/) y-ové (naměřené) hodnoty, np = počet naměřených hodnot do i=1,N cyklus výpočtu druhých derivací M, zápis tridiagonální matice do j=1,N if(j.eq.i)then M(i,j)=4.d0 elseif(j.eq.i-1)then M(i,j)=1.d0 elseif(j.eq.i+1)then M(i,j)=1.d0 else M(i,j)=0.d0 endif end do end do do i=1,N výpočetní cyklus procedury LAPACK do j=1,N AB(KUKL+i-j, j)=M(i,j) end do end do do i=1,N výpočet pravé strany B(i,1)=6.d0/h**2.d0*(y(i)-2.d0*y(i+1)+y(i+2)) end do volání podprogramu DGBSV (viz oddíl 5.1): call DGBSV(N,KL,KU,1,AB,LDAB,IPIV,B,N,INFO) if(INFO.ne.0) write(*,*) “INFO=”,INFO,“!!!” a(1)=B(1,1)/6.d0/h výpočet koeficientů a,b,c,d v 1. poli splajnu b(1)=0.d0 c(1)=(y(2)-y(1))/h-B(1,1)/6.d0*h d(1)=y(1) do i=2,np-2 cyklus výpočtu koeficientů a,b,c,d v prostředních polích splajnu a(i)=(B(i,1)-B(i-1,1))/6.d0/h b(i)=B(i-1,1)/2.d0 Kapitola 5. Praktické základy numerických výpočtů 0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 y x cubic natural spline Obrázek 5.1: Graf kubického přirozeného interpolačního splajnu, popsaného v oddíle 5.2.1. c(i)=(y(i+1)-y(i))/h-(B(i,1)+2.d0*B(i-1,1))/6.d0*h d(i)=y(i) end do a(np-1)=-B(N,1)/6.d0/h výpočet koeficientů v posledním poli b(np-1)=B(N,1)/2.d0 c(np-1)=(y(np)-y(np-1))/h-2.d0*B(N,1)/6.d0*h d(np-1)=y(np-1) do i=1,np-1 zápis koeficientů do souboru fort.1 write(1,*) a(i), b(i), c(i), d(i) end do end program nat3_splajn ukončení programu 5.2.2 Bilineární interpolace V praxi jsou často velmi důležité interpolace funkcí dvou nebo více proměnných. Například tabulku naměřené hodnoty určité veličiny v různých časech a v různých vzdálenostech od zvoleného referenčního bodu, chceme interpolovat jak pro mezilehlé časy, tak pro mezilehlé polohy. Tyto interpolace se rovněž velmi často používají při úpravách obrazu, kdy se hodnoty barev a intenzit jednotlivých nasnímaných pixelů přepočítávají pro mezilehlé body a tím se docílí (zdánlivě) vyššího rozlišení. Nejjednodušší dvourozměrnou interpolací je tzv. bilineární interpolace funkce dvou proměnných, která je rozšířením lineární interpolace do dvou rozměrů, kde v každém mezikroku přiřadíme indexům i, j pro „vnitřní“ a „vnější“ okraj dílčí interpolované oblasti (buňky) v obou směrech hodnoty 0 a 1. Pro zadané i interpolované funkční hodnoty platí (připomínáme, že limx→0 x0 = 1) f(x, y) = 1 i=0 1 j=0 aijxi yj = a00 + a01y + a10x + a11xy, (5.10) Kapitola 5. Praktické základy numerických výpočtů 0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 0 5 10 15 20 25 f x y f Obrázek 5.2: Schématické znázornění bilineární interpolace. Zadané body funkce f(xα, yβ) se nacházejí v uzlech modré sítě (zvýrazněné modrými kotoučky), okrová síť představuje její interpolaci, kdy ve směru x je každá buňka modré sítě dělená na 12 dílčích intervalů a ve směru y na 9 dílčích intervalů. Vzhledem ke zvolenému výpočetnímu algoritmu je interpolace na „vnějších“ okrajích modrých buněk „nedokončená“, v případě dalších sousedních modrých buněk by se počítaly na jejich „vnitřních“ hranách. s neznámými prvky konstantní 1 × 4 matice a = aij (kde horní indexy i, j v rovnici (5.10) znamenají mocniny). Označme x, y relativní (vůči počátku buňky) souřadnice interpolované hodnoty (interpolantu), xα, yβ (α, β = 0, 1) souřadnice okrajů buňky se zadanými hodnotami f 0 = [f(x0, y0), f(x0, y1), f(x1, y0), f(x1, y1)], k = xiyj a A = xi αyj β (matice 4 × 4). Z rovnice (5.10) dostáváme f 0 = aA a tedy a = A−1 f 0. Zároveň musí platit f(x, y) = a · k = k · a, tedy f(x, y) = kA−1 f 0. (5.11) Uvedený princip si ukážeme na příkladu jedné „buňky“ se souřadnicemi okrajů x0 = 0, x1 = 20, y0 = 0, y1 = 15 a se zadanými hodnotami f(x0, y0) = 20, f(x0, y1) = 10, f(x1, y0) = 5, f(x1, y1) = 6,5 („levá spodní“ modrá buňka na obrázku 5.2). V rámci této buňky chceme zjistit bilineární interpolant f(x, y) například v bodě x = 10, y = 5. Explicitní zápis rovnice (5.11) v tomto případě bude f(10, 5) = (1, 5, 10, 50)     1 0 0 0 1 15 0 0 1 0 20 0 1 15 20 300     −1     20 10 5 6,5     = 133 12 . (5.12) Analogickým způsobem se budou počítat interpolace i v ostatních zadaných buňkách. Následující numerický algoritmus ilustruje způsob výpočtu bilineární interpolace dvourozměrné sítě, sestávající ze čtyř buněk se zadanými hodnotami v rozích, kdy ve směru x je každá buňka sítě rozdělená na 12 dílčích intervalů a ve směru y na 9 dílčích intervalů. Výsledek interpolace je znázorněn na obrázku 5.2. • Příklad programového skriptu pro bilineární interpolaci na čtyřech prostorových buňkách dvourozměrné diskrétní funkce (fortran 95): Kapitola 5. Praktické základy numerických výpočtů program bilinear deklarace názvu programu implicit none integer :: i, j, ii, jj deklarace celočíselných proměnných: i, j = pořadová čísla bodů „modré“ sítě, ii, jj = pořadová čísla bilineárních interpolačních uzlů (okrová síť). parameter (ni=3, nj=3, nii=13, njj=10) zadání rozsahu deklarovaných proměnných double precision :: x(ni), y(nj), f(ni,nj) zadání reálných proměnných s dvojitou přesností double precision :: p(ni,nii), q(nj,njj), ff(ni,nj, nii,njj) double precision, parameter :: dx=40.d0, dy=30.d0 zadání rozsahu celé domény výpočet souřadnic síťových uzlů se zadanými hodnotami funkce f: do i=1,ni x(i)=dx/dfloat(ni-1)*dfloat(i-1) end do do j=1,nj y(j)=dy/dfloat(nj-1)*dfloat(j-1) end do tabulkový výčet zadaných hodnot funkce f v uzlových bodech (1. pořadovému číslu odpovídá směr x, 2. směr y): f(1,1)=20.d0 f(2,1)=5.d0 f(3,1)=1.d0 f(1,2)=10.d0 f(2,2)=6.5d0 f(3,2)=18.d0 f(1,3)=15.d0 f(2,3)=6.d0 f(3,3)=21.d0 výpis (uzlové) sítě se zadanými hodnotami funkce f do souboru fort.10: do i=1,ni do j=1,nj write(10,*) x(i), y(j), f(i,j) end do write(10,*) end do volání podprogramu pro výpočet interpolací v jednotlivých buňkách uzlové sítě: call interpol(ni,nj,nii,njj,x,y,p,q,dx,dy,f,ff) stop end program bilinear konec hlavního programu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - podprogram pro výpočet interpolací: subroutine interpol(ni,nj,nii,njj,x,y,p,q,dx,dy,f,ff) implicit none Kapitola 5. Praktické základy numerických výpočtů integer :: i, j, k, ii, jj integer, intent(in) :: ni, nj, nii, njj double precision, intent(in) :: x(ni), y(nj), dx, dy, f(ni,nj) double precision :: xx(nii), yy(njj) double precision, intent(out) :: p(ni,nii), q(nj,njj), ff(ni,nj,nii,njj) double precision :: B1(ni-1,nj-1), B2(ni-1,nj-1), B3(ni-1,nj-1), B4(ni-1,nj-1) integer :: INFO integer, parameter :: N=4 integer,dimension(size(A,1)) :: IPIV double precision, dimension(N,N) :: A double precision, dimension(size(A,1),size(A,2)) :: AINV double precision, dimension(size(A,1)) :: WORK matice A: do i=1,N inicializace nulové matice do j=1,N A(i,j)=0.d0 end do end do A(1,1)=1.d0 nenulové prvky matice A A(2,1)=1.d0 A(2,3)=dy/dfloat(nj-1) A(3,1)=1.d0 A(3,2)=dx/dfloat(ni-1) A(4,1)=1.d0 A(4,2)=dx/dfloat(ni-1) A(4,3)=dy/dfloat(nj-1) A(4,4)=dx/dfloat(ni-1)*dy/dfloat(nj-1) Uložíme A jako AINV, abychom předešli jejímu přepsání AINV=A - - - - - procedura LAPACK pro výpočet inverzní matice - - - - procedura DGETRF počítá LU faktorizaci obecné matice A. call DGETRF(N,N,AINV,N,IPIV,INFO) if(INFO.ne.0) write(*,*) “Matrix is numerically singular” stop endif procedura DGETRI počítá inverzní matici. call DGETRI(N,AINV,N,IPIV,WORK,N,INFO) if(INFO.ne.0) write(*,*) “Matrix inversion failed” stop endif - - - - - Konec procedury LAPACK - - - - do ii=1,nii xx(ii)=dx/dfloat(ni-1)/dfloat(nii-1)*dfloat(i-1) end do do jj=1,njj Kapitola 5. Praktické základy numerických výpočtů yy(jj)=dy/dfloat(nj-1)/dfloat(njj-1)*dfloat(j-1) end do do i=1,ni-1 do j=1,nj-1 B1(i,j)=AINV(1,1)*f(i,j)+AINV(1,2)*f(i,j+1)+AINV(1,3)*f(i+1,j) & +AINV(1,4)*f(i+1,j+1) B2(i,j)=AINV(2,1)*f(i,j)+AINV(2,2)*f(i,j+1)+AINV(2,3)*f(i+1,j) & +AINV(2,4)*f(i+1,j+1) B3(i,j)=AINV(3,1)*f(i,j)+AINV(3,2)*f(i,j+1)+AINV(3,3)*f(i+1,j) & +AINV(3,4)*f(i+1,j+1) B4(i,j)=AINV(4,1)*f(i,j)+AINV(4,2)*f(i,j+1)+AINV(4,3)*f(i+1,j) & +AINV(4,4)*f(i+1,j+1) end do end do absolutní souřadnice p,q: do i=1,ni-1 do ii=1,nii-1 p(i,ii)=xx(ii)+x(i) end do end do do j=1,nj-1 do jj=1,njj-1 q(j,jj)=yy(jj)+y(j) end do end do výpočet interpolantu: do i=1,ni-1 do j=1,nj-1 do ii=1,nii-1 do jj=1,njj-1 ff(i,j,ii,jj)=B1(i,j)+yy(jj)*B2(i,j)+xx(ii)*B3(i,j)+xx(ii)*yy(jj)*B4(i,j) end do end do end do end do zápis interpolantů funkce f do souboru fort.11: do i=1,ni-1 do j=1,nj-1 do ii=1,nii-1 do jj=1,njj-1 write(11,*) p(i,ii), q(j,jj), ff(i,j,ii,jj) end do write(11,*) end do write(11,*) end do write(11,*) Kapitola 5. Praktické základy numerických výpočtů end do return end subroutine interpol 5.2.3 Bikubická interpolace Bilineární interpolace bývá často málo vhodná, vzhledem k tomu, že interpolované plochy jednotlivých buněk zadané funkce tvoří jako celek nespojitou plochu. Z toho důvodu je výhodnější použít tzv. bikubickou interpolaci, která je dvourozměrnou obdobou spojité interpolace jednorozměrné funkce polynomem třetího stupně, například kubickým interpolačním splajnem (viz odstavec 5.2.1). Na rozhraní jednotlivých interpolovaných buněk se musí shodovat nejen funkční hodnoty interpolačních kubických křivek, ale i jejich první derivace a také smíšená druhá derivace. Analogicky k rovnici (5.10) (včetně způsobu značení, zavedeného v odstavci 5.2.2) tak dostáváme f(x, y) = 3 i=0 3 j=0 aijxi yj , (5.13) fx(x, y) = 3 i=1 3 j=0 iaijxi−1 yj , (5.14) fy(x, y) = 3 i=0 3 j=1 jaijxi yj−1 , (5.15) fxy(x, y) = 3 i=1 3 j=1 ijaijxi−1 yj−1 , (5.16) kde horní indexy i, j, i − 1, j − 1 znamenají mocniny. Pro stejnou zadanou funkci f 0(xα, yβ) jako v odstavci 5.2.2 budou rovnice (5.13) - (5.16) pro „levou dolní“ buňku explicitně rozepsány ve tvaru: f0(0, 0) = a00, (5.17) f0(0, 15) = a00 + 15a01 + 225a02 + 3375a03, (5.18) f0(20, 0) = a00 + 20a10 + 400a20 + 8000a30, (5.19) f0(20, 15) = a00 + 15a01 + 225a02 + 3375a03 + 20a10 + 300a11 + 4500a12 + 67 500 a13+ + 400a20 + 6000a21 + 90 000 a22 + 1 350 000 a23 + 8000a30 + 120 000 a31 + 1 800 000 a32+ + 27 000 000 a33. (5.20) f0x(0, 0) = a10, (5.21) f0x(0, 15) = a10 + 15a11 + 225a12 + 3375a13, (5.22) f0x(20, 0) = a10 + 40a20 + 1200a30, (5.23) f0x(20, 15) = a10 + 15a11 + 225a12 + 3375a13 + 40a20 + 600a21 + 9000a22 + 135 000 a23+ + 1200a30 + 18 000 a31 + 270 000 a32 + 4 050 000 a33. (5.24) Kapitola 5. Praktické základy numerických výpočtů 0 5 10 15 20 25 30 35 40 0 5 10 15 20 25 30 0 5 10 15 20 25 f x y f Obrázek 5.3: Schématické znázornění bikubické interpolace stejné (modré) sítě jako na obrázku 5.2. f0y(0, 0) = a01, (5.25) f0y(0, 15) = a01 + 30a02 + 675a03, (5.26) f0y(20, 0) = a01 + 20a11 + 400a21 + 8000a31, (5.27) f0y(20, 15) = a01 + 30a02 + 675a03 + 20a11 + 600a12 + 13 500 a13 + 400a21 + 12 000 a22+ + 270 000 a23 + 8000a31 + 240 000 a32 + 5 400 000 a33. (5.28) f0xy(0, 0) = a11, (5.29) f0xy(0, 15) = a11 + 30a12 + 675a13, (5.30) f0xy(20, 0) = a11 + 40a21 + 1200a31, (5.31) f0xy(20, 15) = a11 + 30a12 + 675a13 + 40a21 + 1200a22 + 27 000 a23 + 1200a31 + 36 000 a32+ + 810 000 a33. (5.32) Označme opět (viz odstavec 5.2.2) x, y relativní souřadnice interpolantu a xα, yβ souřadnice okrajů buňky se zadanými hodnotami f 0 = [f(x0, y0), f(x0, y1), f(x1, y0), f(x1, y1)]. Na rozdíl od bilineární interpolace bude matice a = aij dimenze 1 × 16. Zavedeme vektor se 16 složkami, F0 =[f(x0, y0), f(x0, y1), f(x1, y0), f(x1, y1), fx(x0, y0), fx(x0, y1), fx(x1, y0), fx(x1, y1), fy(x0, y0), fy(x0, y1), fy(x1, y0), fy(x1, y1), fxy(x0, y0), fxy(x0, y1), fxy(x1, y0), fxy(x1, y1)], (5.33) vektor K = xi yj = 1, y, y2 , y3 , x, xy, xy2 , . . . , x3 y3 , (5.34) kde i, j = 0, 1, 2, 3, bude mít rovněž 16 složek a matice A, daná v tomto případě koeficienty Kapitola 5. Praktické základy numerických výpočtů rovnic (5.17) - (5.32), A =              1 0 0 0 0 0 · · · 0 1 y1 y2 1 y3 1 0 0 · · · 0 1 x1 x2 1 x3 1 0 0 · · · 0 1 y1 y2 1 y3 1 x1 x1y1 · · · x3 1y3 1 0 0 0 0 1 y1 · · · 0 0 0 0 0 1 0 · · · 0 ... ... ... ... ... ... ... ... 0 0 0 0 0 1 · · · 9x2 1y2 1              , (5.35) bude dimenze 16×16. Derivace v uzlových bodech sítě budou vypadat následovně: ve vnitřních bodech budou definovány jako fx(xα, yβ) = f(xα+1, yβ) − f(xα−1, yβ) xα+1 − xα−1 , (5.36) fy(xα, yβ) = f(xα, yβ+1) − f(xα, yβ−1) yβ+1 − yβ−1 , (5.37) fxy(xα, yβ) = f(xα+1, yβ+1) − f(xα−1, yβ+1) − f(xα+1, yβ−1) + f(xα−1, yβ−1) (xα+1 − xα−1)(yβ+1 − yβ−1) , (5.38) v „horních“ krajních bodech budou fx(xα, yβ) = f(xα, yβ) − f(xα−1, yβ) xα − xα−1 , (5.39) fy(xα, yβ) = f(xα, yβ) − f(xα, yβ−1) yβ − yβ−1 , (5.40) fxy(xα, yβ) = f(xα, yβ) − f(xα−1, yβ) − f(xα, yβ−1) + f(xα−1, yβ−1) (xα − xα−1)(yβ − yβ−1) (5.41) a v „dolních“ krajních bodech budou fx(xα, yβ) = f(xα+1, yβ) − f(xα, yβ) xα+1 − xα , (5.42) fy(xα, yβ) = f(xα, yβ+1) − f(xα, yβ) yβ+1 − yβ , (5.43) fxy(xα, yβ) = f(xα+1, yβ+1 − f(xα, yβ+1) − f(xα+1, yβ) + f(xα, yβ) (xα+1 − xα)(yβ+1 − yβ) . (5.44) Obdobným způsobem budou definovány i derivace v interpolovaných bodech. Analogicky k rovnici (5.11) bude mít výsledná rovnice pro výpočet interpolantů tvar: f(x, y) = KA−1 F0. (5.45) Numerický algoritmus bude v tomto případě výrazně rozsáhlejší, než v odstavci 5.2.2, nicméně jej lze sestavit zcela obdobně jako v případě bilineární interpolace. Z toho důvodu zde uvádíme pouze podobu matice A, členu B1 (kdy ostatní členy B budou zcela obdobné, vždy s prvním indexem sčítacím) a výpočtu výsledných interpolantů, ostatní operace budou (až na případnou dimenzi) shodné s odstavcem 5.2.2: Kapitola 5. Praktické základy numerických výpočtů matice A (N=16): do i=1,N inicializace nulové matice do j=1,N A(i,j)=0.d0 end do end do A(1,1)=1.d0 nenulové prvky matice A A(2,1)=1.d0 A(2,2)=dy/dfloat(nj-1) A(2,3)=(dy/dfloat(nj-1))**2.d0 A(2,4)=(dy/dfloat(nj-1))**3.d0 A(3,1)=1.d0 A(3,5)=dx/dfloat(ni-1) A(3,9)=(dx/dfloat(ni-1))**2.d0 A(3,13)=(dx/dfloat(ni-1))**3.d0 A(4,1)=1.d0 A(4,2)=dy/dfloat(nj-1) A(4,3)=(dy/dfloat(nj-1))**2.d0 A(4,4)=(dy/dfloat(nj-1))**3.d0 A(4,5)=dx/dfloat(ni-1) A(4,6)=dx/dfloat(ni-1)*dy/dfloat(nj-1) A(4,7)=dx/dfloat(ni-1)*(dy/dfloat(nj-1))**2.d0 A(4,8)=dx/dfloat(ni-1)*(dy/dfloat(nj-1))**3.d0 A(4,9)=(dx/dfloat(ni-1))**2.d0 A(4,10)=(dx/dfloat(ni-1))**2.d0*dy/dfloat(nj-1) A(4,11)=(dx/dfloat(ni-1))**2.d0*(dy/dfloat(nj-1))**2.d0 A(4,12)=(dx/dfloat(ni-1))**2.d0*(dy/dfloat(nj-1))**3.d0 A(4,13)=(dx/dfloat(ni-1))**3.d0 A(4,14)=(dx/dfloat(ni-1))**3.d0*dy/dfloat(nj-1) A(4,15)=(dx/dfloat(ni-1))**3.d0*(dy/dfloat(nj-1))**2.d0 A(4,16)=(dx/dfloat(ni-1))**3.d0*(dy/dfloat(nj-1))**3.d0 A(5,5)=1.d0 A(6,5)=1.d0 A(6,6)=dy/dfloat(nj-1) A(6,7)=(dy/dfloat(nj-1))**2.d0 A(6,8)=(dy/dfloat(nj-1))**3.d0 A(7,5)=1.d0 A(7,9)=2.d0*dx/dfloat(ni-1) A(7,13)=3.d0*(dx/dfloat(ni-1))**2.d0 A(8,5)=1.d0 A(8,6)=dy/dfloat(nj-1) A(8,7)=(dy/dfloat(nj-1))**2.d0 A(8,8)=(dy/dfloat(nj-1))**3.d0 A(8,9)=2.d0*dx/dfloat(ni-1) A(8,10)=2.d0*dx/dfloat(ni-1)*dy/dfloat(nj-1) A(8,11)=2.d0*dx/dfloat(ni-1)*(dy/dfloat(nj-1))**2.d0 A(8,12)=2.d0*dx/dfloat(ni-1)*(dy/dfloat(nj-1))**3.d0 A(8,13)=3.d0*(dx/dfloat(ni-1))**2.d0 Kapitola 5. Praktické základy numerických výpočtů A(8,14)=3.d0*(dx/dfloat(ni-1))**2.d0*(dy/dfloat(nj-1)) A(8,15)=3.d0*(dx/dfloat(ni-1))**2.d0*(dy/dfloat(nj-1))**2.d0 A(8,16)=3.d0*(dx/dfloat(ni-1))**2.d0*(dy/dfloat(nj-1))**3.d0 A(9,2)=1.d0 A(10,2)=1.d0 A(10,3)=2.d0*dy/dfloat(nj-1) A(10,4)=3.d0*(dy/dfloat(nj-1))**2.d0 A(11,2)=1.d0 A(11,6)=dx/dfloat(ni-1) A(11,10)=(dx/dfloat(ni-1))**2.d0 A(11,14)=(dx/dfloat(ni-1))**3.d0 A(12,2)=1.d0 A(12,3)=2.d0*dy/dfloat(nj-1) A(12,4)=3.d0*(dy/dfloat(nj-1))**2.d0 A(12,6)=dx/dfloat(ni-1) A(12,7)=dx/dfloat(ni-1)*2.d0*dy/dfloat(nj-1) A(12,8)=dx/dfloat(ni-1)*3.d0*(dy/dfloat(nj-1))**2.d0 A(12,10)=(dx/dfloat(ni-1))**2.d0 A(12,11)=(dx/dfloat(ni-1))**2.d0*2.d0*dy/dfloat(nj-1) A(12,12)=(dx/dfloat(ni-1))**2.d0*3.d0*(dy/dfloat(nj-1))**2.d0 A(12,14)=(dx/dfloat(ni-1))**3.d0 A(12,15)=(dx/dfloat(ni-1))**3.d0*2.d0*dy/dfloat(nj-1) A(12,16)=(dx/dfloat(ni-1))**3.d0*3.d0*(dy/dfloat(nj-1))**2.d0 A(13,6)=1.d0 A(14,6)=1.d0 A(14,7)=2.d0*dy/dfloat(nj-1) A(15,10)=2.d0*dx/dfloat(ni-1) A(15,14)=3.d0*(dx/dfloat(ni-1))**2.d0 A(16,6)=1.d0 A(16,7)=2.d0*dy/dfloat(nj-1) A(16,8)=3.d0*(dy/dfloat(nj-1))**2.d0 A(16,10)=2.d0*dx/dfloat(ni-1) A(16,11)=4.d0*dx/dfloat(ni-1)*dy/dfloat(nj-1) A(16,12)=6.d0*dx/dfloat(ni-1)*(dy/dfloat(nj-1))**2.d0 A(16,15)=6.d0*(dx/dfloat(ni-1))**2.d0*dy/dfloat(nj-1) A(16,16)=9.d0*(dx/dfloat(ni-1))**2.d0*(dy/dfloat(nj-1))**2.d0 do j=1,nj-1 členy B: fx, fy, fxy jsou příslušné parciální derivace do j=1,nj-1 B1(i,j)= & AINV(1,1)*f(i,j)+AINV(1,2)*f(i,j+1)+AINV(1,3)*f(i+1,j)+AINV(1,4)*f(i+1,j+1)+ & AINV(1,5)*fx(i,j)+AINV(1,6)*fx(i,j+1)+AINV(1,7)*fx(i+1,j)+AINV(1,8)*fx(i+1,j+1)+ & AINV(1,9)*fy(i,j)+AINV(1,10)*fy(i,j+1)+AINV(1,11)*fy(i+1,j)+AINV(1,12)*fy(i+1,j+1)+ & AINV(1,13)*fxy(i,j)+AINV(1,14)*fxy(i,j+1)+AINV(1,15)*fxy(i+1,j)+AINV(1,16)*fxy(i+1,j+1) ostatní členy B2 - B16 budou obdobné jako B1, vždy s prvním maticovým indexem sčítacím end do end do výpočet interpolantu: do i=1,ni-1 Kapitola 5. Praktické základy numerických výpočtů do j=1,nj-1 do ii=1,nii-1 do jj=1,njj-1 ff(i,j,ii,jj)= B1(i,j)+yy(jj)*B2(i,j)+yy(jj)**2.d0*B3(i,j)+yy(jj)**3.d0*B4(i,j)+ & xx(ii)*B5(i,j)+xx(ii)*yy(jj)*B6(i,j)+ & xx(ii)*yy(jj)**2.d0*B7(i,j)+xx(ii)*yy(jj)**3.d0*B8(i,j)+ & xx(ii)**2.d0*B9(i,j)+xx(ii)**2.d0*yy(jj)*B10(i,j)+ & xx(ii)**2.d0*yy(jj)**2.d0*B11(i,j)+xx(ii)**2.d0*yy(jj)**3.d0*B12(i,j)+ & xx(ii)**3.d0*B13(i,j)+xx(ii)**3.d0*yy(jj)*B14(i,j)+ & xx(ii)**3.d0*yy(jj)**2.d0*B15(i,j)+xx(ii)**3.d0*yy(jj)**3.d0*B16(i,j) end do end do end do end do Výsledná podoba bikubické interpolace stejně zadané sítě jako v odstavci 5.2.2, popsané rovnicemi (5.17) - (5.32), je vykreslena na obrázku 5.3. 5.3 Regrese Regresí (regresní analýzou) nazýváme hledání takové funkce (tzv. regresní funkce), která nejlépe vystihuje vztah mezi dvěma skupinami proměnných, např. závislost náhodných veličin (naměřených hodnot) na čase, atd. Předem je dáno, která proměnná je nezávislá (vysvětlující nebo také regresor) a která je závislá (vysvětlovaná nebo také odezva). Jednoduchá regrese popisuje závislost odezvy na jednom regresoru, naproti tomu vícenásobná regrese popisuje situaci, kdy odezva závisí na více regresorech. Podle charakteru a průběhu zkoumané závislosti volíme typ regresního modelu, například lineární regresi (proložení závisle proměnných hodnot přímkou), regresi polynomem n-tého stupně, atd., a také nejvhodnější statistickou metodu, například metodu nejmenších čtverců nebo tzv. robustní regresi, která eliminuje extrémně vychýlené hodnoty, atd. (viz také pojmy a statistické metody, uvedené v kapitole 12.2 ve skriptu Početní praktikum nebo například na stránkách http://physics.muni.cz/~mikulas/zvc.html. 5.3.1 Lineární regrese metodou nejmenších čtverců Souborem n diskrétních hodnot odezvy (vysvětlované proměnné) yi, i = 1, . . . , n, který je určen výčtem uspořádaných dvojic [xi, yi], proložíme přímku (polynom 1. stupně) fI(x) = kx + q tak, aby součet S druhých mocnin tzv. reziduí, tj. vzdáleností bodů yi od funkčních hodnot f(xi) v bodech xi byl minimální (2. mocniny se zde používají kvůli nezávislosti na znaménku odchylky). Dostáváme tedy rovnici S = i yi − fI (xi) 2 = i [yi − (kxi + q)]2 = min, (5.46) pro dvě neznámé hodnoty k a q. Minimalizaci této funkce provedeme položením ∂S/∂k = 0 a zároveň ∂S/∂q = 0, výsledek můžeme zapsat pomocí maticového formalismu jako i x2 i i xi i xi n   k q   = i xiyi i yi . (5.47) Kapitola 5. Praktické základy numerických výpočtů Snadno tak nalezneme výrazy pro oba hledané parametry v závislosti na uspořádané n-tici [xi, yi] (např. na naměřených hodnotách v závislosti na čase nebo poloze), k = n i xiyi − i xi i yi n i x2 i − i xi 2 , q = i x2 i i yi − i xi i xiyi n i x2 i − i xi 2 . (5.48) Metodu navrhl a poprvé použil Karl Friedrich Gauss pro výpočet geodetických chyb. • Příklad skriptu pro lineární regresi metodou nejmenších čtverců, program fortran 95: program linearni_regrese deklarace názvu programu implicit none tabulka hodnot [xi, yi]: [1,2], [2,1], [3,4], [4,12], [5,7], [6,8], [7,10], [8,14], [9,19], [10,17] integer :: i, np deklarace celočíselných proměnných: i = pořadové číslo dvojice proměnných, np = celkový počet diskrétních hodnot parameter (np=10) zadání fixní hodnoty np double precision, dimension(np) :: x, y deklarace reálných veličin x, y jako pole (vektoru) o np prvcích double precision :: f(np), res(np) jiný způsob deklarace reálných veličin f, res jako pole (vektoru) o np prvcích double precision :: k, q, sumres deklarace reálných skalárních veličin x=(/(1.d0*i, i=1,np)/) vektor hodnot regresoru y=(/2.d0, 1.d0, 4.d0, 12.d0, 7.d0, 8.d0, 10.d0, 14.d0, 19.d0, 17.d0/) vektor hodnot odezvy 1. možnost - přímé použití vzorce (5.48): hledané koeficienty lineární funkce: k=(np*SUM(x*y)-SUM(x)*SUM(y))/(np*SUM(x**2.d0)-(SUM(x))**2.d0) q=(SUM(x**2.d0)*SUM(y)-SUM(x)*SUM(x*y))/(np*SUM(x**2.d0)-(SUM(x))**2.d0) 2. možnost - použití soustavy rovnic (5.47) a procedury LAPACK - viz sekce 5.1: v záhlaví programu je nutné navíc deklarovat tyto proměnné: integer :: j, INFO, KL, KU, LDAB, LDB, N, RHS parameter(KL=1,KU=1,N=2,KUKL=KL+KU+1,LDAB=2*KL+KU+1,LDB=N,RHS=1) integer :: IPIV(N) double precision :: M(N,N),AB(LDAB,N),B(LDB,RHS) double precision :: max M(1,1)=SUM(x**2.d0) matice levé strany, M(N,N) M(1,2)=SUM(x) Kapitola 5. Praktické základy numerických výpočtů M(2,1)=SUM(x) M(2,2)=np do i=1,N výpočetní cyklus procedury LAPACK do j=1,N AB(KUKL+i-j, j)=M(i, j) end do end do B(1,1)=SUM(x*y) výpočet pravé strany procedurou LAPACK B(2,1)=SUM(y) volání podprogramu DGBSV: call DGBSV(N,KL,KU,1,AB,LDAB,IPIV,B,N,INFO) if(INFO.ne.0) write(*,*) “INFO=”,INFO,“!!!” k=B(1,1) q=B(2,1) společné pokračování: write(1,*) k, q tisk vypočítaných hodnot do souboru „fort.1“ write(1,*) oddělující řádek do i=1,np výpočetní cyklus f(i)=k*x(i)+q výpočet hodnot lineární funkce res(i)=(f(i)-y(i))**2.d0 výpočet reziduí sumres=SUM(res) výpočet sumy reziduí end do do i=1,np zápis cyklu do souboru write(1,*) x(i), y(i), f(i), res(i) end do write(1,*) write(1,*) sumres zápis sumy reziduí do souboru end program linearni_regrese ukončení programu 5.3.2 Polynomiální regrese metodou nejmenších čtverců Postup uvedený v předchozím odstavci 5.3.1 lze zobecnit pro polynom libovolného (m-tého) stupně, kdy analogii rovnice (5.46) můžeme přepsat do tvaru (horní indexy zde vždy znamenají mocniny) S = n i=1 yi − m j=0 pjxj i 2 = min, (5.49) kde koeficienty pj jsou koeficienty j-tého stupně polynomu, u lineární regrese tak platí p0 = q, p1 = k (viz rovnice (5.47)). Zároveň je jasné, že počet rovnic N v proceduře LAPACK odpovídá m + 1. Minimum rovnice (5.49) nalezneme, položíme-li ∂S/∂pj = 0, získáme tak soustavu Kapitola 5. Praktické základy numerických výpočtů 0 5 10 15 20 0 2 4 6 8 10 12 y x linear fit Obrázek 5.4: Vykreslení příkladu lineární regrese, tj. proložení uvedených 10 bodů přímkou s parametry vypočítanými metodou nejmenších čtverců. m + 1 = N lineárních rovnic, které můžeme vyjádřit pomocí maticového zápisu ve tvaru       i x2m i · · · i xm+1 i i xm i ... ... ... ... i xm+1 i · · · i x2 i i xi i xm i · · · i xi n               pm ... p1 p0         =      i xm i yi ... i xiyi i yi      . (5.50) Výpočetní cyklus procedury LAPACK (viz programový skript v kapitole 5.3.1) můžeme takto zobecnit do následující podoby (fortran 95): do i=1,N-1 matice levé strany, M(N,N) do j=1,N M(i,j)=SUM(x**(2*N-i-j)) end do end do i=N do j=1,N-1 M(N,j)=SUM(x**(N-j)) end do M(N,N)=np do i=1,N výpočetní cyklus procedury LAPACK do j=1,N AB(KUKL+i-j, j)=M(i, j) end do end do do i=1,N výpočet pravé strany procedurou LAPACK B(i,1)=SUM(x**(N-i)*y) end do Kapitola 5. Praktické základy numerických výpočtů V ostatních bodech zůstává programová procedura popsaná v odstavci 5.3.1 prakticky nezmě- něna. 5.3.3 Robustní regrese V případě, že chceme eliminovat vliv velmi vychýlených („ustřelených“) hodnot, zvolíme tzv. váženou nebo také robustní regresi. Robustních regresních modelů existuje celá řada (viz například Huber & Ronchetti (2009)), za všechny zde uvedeme jednoduchou tzv. Tukeyho metodu M-odhadu (Tukey′s bisquare method), založenou na vážení reziduí pomocí dvojí druhé mocniny. Nejprve spočítáme nevážená rezidua res_i = yi − f(xi) (stejně jako např. v odstavcích 5.3.1, 5.3.2), potom použijeme následující váhovou funkci: wi(res_i) = 1 − res_i 6 med 2 2 (5.51) kde med je medián absolutní odchylky reziduí, kterou můžeme zvolit jako samotné reziduum, nebo odchylku každého rezidua od jejich vlastního mediánu. Váha wi = 0, pokud absolutní hodnota rezidua |res_i| > 6 med. Extrémně odchýlené hodnoty jsou takto zcela vyřazeny, méně vychýlené hodnoty jsou ponechány, avšak se sníženou váhou. Naprogramování tohoto robustního (váženého) regresního modelu je snadné, do pravé strany rovnice (5.50) vložíme vypočítané váhy:       i x2m i · · · i xm+1 i i xm i ... ... ... ... i xm+1 i · · · i x2 i i xi i xm i · · · i xi n               pm ... p1 p0         =      i xm i wiyi ... i xiwiyi i wiyi      . (5.52) Pro výpočet mediánu existují v každém programovacím jazyce hotové moduly, jako příklad lze použít následující podprogram, výsledek je zahrnut do rovnice (5.51) (fortran 95): subroutine median(i, j, k, np, res, med) implicit none integer :: i, j, k, np double precision :: res(np) double precision, intent(out) :: med double precision :: temp Seřazení čísel ve vzestupném pořadí: do j=1,np-1 do k=j+1,np if(res(j)>res(k))then temp=res(k) res(k)=res(j) res(j)=temp endif end do end do Výpočet mediánu v případě sudého nebo lichého počtu čísel: if(mod(np,2)==0)then Kapitola 5. Praktické základy numerických výpočtů 0 5 10 15 20 0 2 4 6 8 10 12 y x W-bisquared pol2 fit least squares robust Obrázek 5.5: Porovnání kvadratické regrese, tj. proložení polynomem 2. stupně s parametry vypočítanými metodou nejmenších čtverců podle odstavce 5.3.2 (červená čára) a robustní Tukeyho metodou podle odstavce 5.3.3 (modrá čára). Soubor 10 bodů o souřadnicích [1;3,5], [2;3,6], [3;4,2], [4;17], [5;7,4], [6;8,7], [7;10,3], [8;12,8], [9;19], [10;17,1] obsahuje silně odchýlené hodnoty (hrubé chyby), na které robustní křivka reaguje slabě nebo vůbec. med=(res(np/2)+res(np/2+1))/2.d0 else med=res(np/2+1) endif end subroutine median Následuje výpočet vah: w(y(i))=(1.d0-(y(i)/6.d0*med)**2.d0)**2.d0, atd. 5.3.4 Kubický vyhlazovací splajn Tzv. vyhlazování (smoothing) může být užitečné v případě, že hustě naměřená nebo vypočítaná závislost jeví značný lokální rozptyl, přitom je ale patrný její celkový trend (viz obrázek 5.6), který je ovšem dostatečně nepravidelný či komplikovaný a nepodobá se tak žádné z jednoduchých funkcí (polynomu, exponenciále a podobně). Proložení takové bodové závislosti [xi, yi] kubickým vyhlazovacím splajnem, reprezentovaným funkcí S(x), jejíž nejjednodušší tvar nalezneme pomocí minimalizace (srovnej s rovnicí (5.46)) S = n i=1 [yi − S(xi)]2 + λ ˆ S′′ (x)2 dx = min, (5.53) probíhá de facto ve dvou krocích. V prvním kroku nalezneme nové body [xi, ˜Yi] s menším rozptylem (kdy S(xi) = ˜Yi), ve druhém kroku pak tyto nové body [xi, ˜Yi] proložíme kubickým interpolačním splajnem podle odstavce 5.2.1. Kladné číslo λ v rovnici (5.53) je tzv. vyhlazovací parametr, který řídí „hrubost“ nebo „jemnost“ vyhlazování, kdy větší λ znamená robustnější vyhlazení (viz porovnání křivek s různými parametry λ na obrázku 5.6). Protože se jedná o kubický splajn, budou jednotlivé segmenty funkce S′′(x) (druhé derivace funkce S(x)) lineárními úsečkami, které v bodech xi a xi+1 musí nabývat hodnot S′′(xi) = Mi, Kapitola 5. Praktické základy numerických výpočtů y x cubic smoothing spline Obrázek 5.6: Proložení soustavy bodů (naměřených nebo vypočítaných hodnot) sérií kubických vyhlazovacích splajnů s různými hodnotami parametru λ; černá čára s nejnižším λ se nejvíce přimyká k prokládaným bodům, červená čára s nejvyšším λ vyhlazuje celkovou závislost nejvíce. V případě λ = 0 získáme kubický interpolační splajn (viz odstavec 5.2.1), přímo procházející zadanými body, zatímco v případě λ → ∞ získáme lineární regresi dané soustavy bodů (viz odstavec 5.3.1). S′′(xi+1) = Mi+1 (viz rovnice (5.3)). V obecném bodě uvnitř jednotlivých segmentů musí tedy platit S′′ (x) = Mi + Mi+1 − Mi xi+1 − xi (x − xi). (5.54) Integrál v rovnici (5.53) bude tedy mít pro každý jednotlivý segment řešení ve tvaru ˆ xi+1 xi Mi + Mi+1 − Mi xi+1 − xi (x − xi) 2 dx = xi+1 − xi 3 M2 i+1 + Mi+1Mi + M2 i . (5.55) Podrobným rozborem rovnice (5.6), nyní ovšem na pravé straně s hledanými hodnotami ˜Yi, stručně maticově zapsané jako W M = RS, (5.56) zjistíme, že rovnice (5.55) je identicky řešitelná pomocí maticového násobení v následujícím pořadí, ˆ S′′ (x)2 dx = ST ~RT ~W −1 ~RS, (5.57) kde S je (sloupcový) n rozměrný vektor hlednaých hodnot ˜Yi, ~W je tridiagonální symetrická matice dimenze (n − 2) × (n − 2), s prvky Wi−1,i = Wi,i−1 = xi+1 − xi 6 , Wii = xi+2 − xi 3 (5.58) Kapitola 5. Praktické základy numerických výpočtů a ~R je matice dimenze (n − 2) × n s prvky ˜Rii = 1 xi+1 − xi , ˜Ri,i+1 = − 1 xi+1 − xi + 1 xi+2 − xi+1 , ˜Ri,i+2 = 1 xi+2 − xi+1 . (5.59) Přepíšeme-li tímto způsobem minimalizační rovnici (5.53), dostáváme její levou stranu ve tvaru (Y − S)T (Y − S) + λ ST ~RT ~W −1 ~RS. (5.60) Položíme-li její derivací vzhledem k S rovnu nule, dostaneme výsledný výraz pro hledané hodnoty v rámci výše popsaného prvního kroku, S = E + λ ~RT ~W −1 ~R −1 Y , (5.61) kde E je jednotková matice. Výpočet druhého kroku, tedy proložení nalezených bodů ˜Yi kubickým interpolačním splajnem, již provedeme podle odstavce 5.2.1. Pro numerické výpočty maticového násobení, inverzních matic, tridiagonálních matic a podobně, opět použijeme procedury například z balíčku LAPACK, popsané výše v rámci předchozích ukázek. 5.4 Numerické metody výpočtů funkcí jedné proměnné 5.4.1 Hledání kořene funkce jedné proměnné - Newtonova metoda Kořeny obecně nelineární funkce (rovnice) f(x) = 0 často nelze vyjádřit formou explicitního analytického vzorce. k nalezení řešení takové rovnice musíme potom použít některou z numerických (iteračních) metod, kdy pomocí určitého počtu počátečních aproximací hledaného kořene x0 generujeme posloupnost x1, x2, x3, . . . , která ke kořenu x0 konverguje. V některých případech je třeba zadat interval a, b, který podle předběžného předpokladu obsahuje hledaný kořen, čím lépe se k němu na počátku přiblížíme, tím rychleji daná metoda konverguje. V následujících příkladech předpokládejme reálnou spojitou funkci f(x) s odpovídajícím počtem spojitých derivací na vymezeném intervalu, s hledaným kořenem f(x0) = 0. Počáteční odhad intervalu (intervalů) kde se kořen (kořeny) mohou nalézat provedeme například grafickou metodou: pomocí vhodného výpočetního programu nebo vypisováním funkčních hodnot do tabulky vykreslíme funkci f(x) a vyhledáme její přibližné průsečíky s osou x. Například u funkce, dané předpisem f(x) = x3 − 3x2 + 2x − 3 (5.62) snadno zjistíme že existuje jeden reálný kořen, který musí s určitostí ležet uvnitř intervalu x0 ∈ (2, 3). Existuje celá řada možných numerických postupů (například metoda sečen, atd.), asi nejznámější je tzv. Newtonova metoda neboli metoda tečen. Vyjdeme z počáteční aproximace x0 a postupně počítáme x1, x2, x3, . . . . Známe-li určitou aproximaci xk a chceme určit lepší aproximaci xk+1, proložíme bodem [xk, f(xk)] tečnu ke křivce y = f(x), průsečík této tečny s osou x považujeme potom za hodnotu xk+1. Dostáváme tak rovnici popsané tečny ve tvaru f′ (xk) = {3x2 k − 6xk + 2} = f(xk) xk − xk+1 , (5.63) Kapitola 5. Praktické základy numerických výpočtů z níž odvodíme vztah pro výpočet každého následujícího kroku (iterace), xk+1 = xk − f(xk) f′(xk) . (5.64) Ukončení výpočtu s tím, že hodnota poslední iterace xk+1 je prohlášena za hledaný kořen x0 s požadovanou přesností, nastane (podle velikosti malého čísla ϵ které stanovuje požadovanou přesnost) například v těchto případech: |xk+1 − xk| ≤ ϵ nebo |f(xk+1)| ≤ ϵ. (5.65) • Příklad možného způsobu naprogramování rovnice (5.62) - program fortran 95: program newton deklarace názvu programu implicit none integer :: i deklarace celočíselných proměnných v záhlaví programu: i = pořadové číslo prostorového kroku double precision :: x, dx, f, df deklarace reálných veličin, kde výrazy x = xk, dx = xk−xk+1, f = f(xk), df = f′(xk), s dvojitou přesností x=3.d0 odhad vstupní hodnoty xk do výpočetní cyklus i = i+1 f = x**3 - 3.d0*x**2 + 2.d0*x - 3.d0 vlastní rovnice (5.62) df = 3.d0*x**2 - 6.d0*x + 2.d0 derivace funkce (5.62) dx = f/df rovnice (5.64) x = x-dx nová hodnota xk if (dabs(dx).lt.1.d-12) exit stop kritérium: |xk − xk+1| < 10−12 end do write (100,*) x zápis kořene funkce f do souboru fort.100 stop zastavení celého procesu end program newton konec programu • Tabulka výsledků programu výpočtu kořene funkce f(xk) pro jednotlivé iterace k: k xk f(xk) xk − xk+1 0 3.0000000000000000 3.0000000000000000 0.27272727272727271 1 2.7272727272727275 0.42599549211119836 5.3581553581554045E-002 2 2.6736911736911733 1.4723079585858834E-002 1.9886039436713345E-003 3 2.6717025697475019 1.9848200396133109E-005 2.6880854327577796E-006 4 2.6716998816620690 3.6242120415863610E-011 4.9083680000275664E-012 5 2.6716998816571604 1.7763568394002505E-015 2.4057679206275180E-016 5.4.2 Numerické derivování Nejjednodušší numerická aproximace 1. derivace má podobu tzv. dopředné diference, f′ (x) ≈ f(x + h) − f(x) h , (5.66) Kapitola 5. Praktické základy numerických výpočtů kde h = ∆x > 0, s chybou aproximace δf′(x) vyjádřenou pomocí Taylorova rozvoje x, tj. δf′(x) = −(h/2)f′′(ξ), kde ξ ∈ (x, x + h). Podobně jednoduchá je i tzv. zpětná diference, f′ (x) ≈ f(x) − f(x − h) h , (5.67) s chybou stejného řádu. Aproximací s vyšší přesností je tzv. centrální diference, f′ (x) ≈ f(x + h) − f(x − h) 2h , (5.68) s chybou aproximace δf′(x) = −(h2/6)f′′′(ξ), kde ξ ∈ (x − h, x + h), zabírající ovšem dva prostorové kroky (buňky) výpočetní sítě. Analogickým způsobem můžeme odvodit i 2. derivaci ve tvaru f′′ (x) ≈ f(x + h) − 2f(x) + f(x − h) h2 , (5.69) s chybou aproximace δf′′(x) = −(h2/12)f(4)(ξ), kde ξ ∈ (x − h, x + h). Existují i přesnější a propracovanější diferenční schémata (viz například van Leer, 1977, 1982; Vitásek, 1987; LeVeque, 2002), například jednostranná aproximace 1. derivace, která je 2. řádu přesnosti, f′ (x) ≈ −3f(x) + 4f(x + h) − f(x + 2h) 2h , (5.70) s chybou aproximace δf′(x) = (h2/3)f′′′(ξ), kde ξ ∈ (x, x + 2h), nebo aproximace 1. derivace, která je 4. řádu přesnosti, ve tvaru f′ (x) ≈ −f(x + 2h) + 8f(x + h) − 8f(x − h) + f(x − 2h) 12h , (5.71) tedy s chybou, která je řádu h4, atd. Jejich nevýhodou ovšem je, že zabírají několik prostorových intervalů (buněk) výpočetní sítě a také při složitých a objemných výpočtech díky nim mohou narůstat nároky na dobu výpočtu. Je proto vždy nutné zvážit výpočetní schéma, adekvátní dané úloze a její požadované přesnosti, odpovídající ale reálným možnostem používaného výpočetního zařízení. 5.4.3 Numerické integrování je vždy založené na nahrazení složitě ohraničeného geometrického útvaru (plochy pod křivkou dané funkce v případě jedné proměnné) jednodušším útvarem, nebo součtem takových útvarů. Používá se také název numerická kvadratura, ve smyslu konstrukce plošných (tedy dvourozměrných, kvadraturních) útvarů. Ukážeme zde příklady pouze nejběžnějších (většinou ovšem zcela dostačujících) způsobů numerické integrace funkce jedné proměnné pomocí tzv. NewtonCotesových vzorců, existuje samozřejmě celá řada jiných metod numerické integrace, například Gaussovy kvadraturní vzorce, Rombergova kvadratura, atd. Nebudeme zde uvádět ani přesnosti a způsob stanovení chyb, atd., vše je standardně dostupné v literatuře. • Newton-Cotesovy (kvadraturní) vzorce Obdélníková metoda: Tato metoda se formálně nepočítá mezi tzv. Newton-Cotesovy vzorce, představuje sice nejjednodušší ale zároveň nejméně přesnou numerickou integrační metodu, kdy se určitý integrál dané funkce (tj. velikost plochy pod křivkou grafu funkčních Kapitola 5. Praktické základy numerických výpočtů hodnot funkce f(x) v rámci intervalu ⟨a, b⟩) aproximuje obdélníkem. Tuto aproximaci můžeme zpřesnit, rozdělíme-li například interval ⟨a, b⟩ na zvolený počet n dílčích stejných intervalů, vypočítáme obdélníkovou aproximaci pro každý interval zvlášť a výsledky sečteme, tedy I = ˆ b a f(x) dx ≈ b − a n n−1 k=0 f a + k b − a n . (5.72) Lichoběžníková metoda: představuje přesnější numerickou integrační metodu, kdy se určitý integrál dané funkce aproximuje lichoběžníky (body funkce se spojí úsečkami). Rozdělímeli interval ⟨a, b⟩ na zvolený počet n dílčích stejných intervalů, vypočítáme lichoběžníkovou aproximaci opět pro každý interval zvlášť a výsledky sečteme, tedy I = ˆ b a f(x) dx ≈ b − a 2n n−1 k=0 [f(xk+1) + f(xk)] , (5.73) kde xk = a + k(b − a)/n. Simpsonovo pravidlo: založené na kvadratické (parabolické) interpolaci dílčích intervalů integrované funkce. V případě integrace polynomů dává tato metoda velmi přesné výsledky. Složená aproximace Simpsonovým pravidlem, kdy interval ⟨a, b⟩ je rozdělen na sudý počet n dílčích intervalů, má tvar (kdy xk = a + k(b − a)/n) I = ˆ b a f(x) dx ≈ b − a 3n n/2 k=1 [f(x2k−2) + 4f(x2k−1) + f(x2k)] . (5.74) Simpsonovo 3/8 pravidlo (nebo také druhé Simpsonovo pravidlo): založené na kubické interpolaci dílčích intervalů integrované funkce. Složená aproximace Simpsonovým 3/8 pravidlem, kdy interval ⟨a, b⟩ je rozdělen na n dílčích intervalů, kde n je dělitelné třemi, má tvar (kdy opět xk = a + k(b − a)/n) I = ˆ b a f(x) dx ≈ 3(b − a) 8n n/3 k=1 [f(x3k−3) + 3f(x3k−2) + 3f(x3k−1) + f(x3k)] . (5.75) Obdobným způsobem lze sestrojit Newton-Cotesovy formule libovolně vyšších řádů, vyšší řády než 4 (Booleovo pravidlo) se nicméně používají málo, jejich nevýhodou je velmi rychle (až exponenciálně) narůstající chyba integrace. • Numerická integrace ve vyšších dimenzích Uvedené metody lze aplikovat různými způsoby i pro vícenásobné integrování, jejich volba závisí například na tvaru integrační oblasti a na konkrétních funkcích, obsažených v integrandu. Zde ukážeme pouze dva základní způsoby. Lichoběžníková metoda ve 2D: uvažujme dvojný integrál (viz rovnice 7.3 ve skriptu Početní praktikum) I = ¨ S f(x, y) dx dy = ˆ b a ˆ ϕ2(x) ϕ1(x) f(x, y) dy dx. (5.76) Kapitola 5. Praktické základy numerických výpočtů a b y φ1(x) φ2(x) xxj yj,k Obrázek 5.7: Schématické znázornění hustoty sítě pro numerickou integraci dvojného integrálu s optimálním rozložením uzlů podle rovnice (5.81). Jednotlivým uzlům xj ve vodorovném směru x je přiřazen různý počet uzlů yj,k ve svislém směru y. Prázdné kroužky odpovídají vnitřním uzlům sítě, kde wj,k = 1, menší plné kroužky odpovídají uzlům na hranici integrační oblasti (vyznačené hnědou plochou), kde wj,k = 1/2, velké plné kroužky odpovídají uzlům v rozích integrační oblasti, kde wj,k = 1/4. Vnitřní integrál aproximujme jednorozměrnou numerickou kvadraturou, kde x vystupuje jako konstanta. Získané hodnoty potom použijeme k výpočtu vnějšího integrálu, rovněž pomocí jednorozměrného pravidla. Označme dva rozdělené jednoduché integrály následujícím způsobem, F(x) = ˆ ϕ2(x) ϕ1(x) f(x, y) dy, I = ˆ b a F(x) dx. (5.77) Výpočet vnitřní kvadratury F(x) v bodě xj provedeme například jako (viz rovnici (5.73)) F(x) = hj 1 2 f(xj, yj,0) + f(xj, yj,1) + . . . + f(xj, yj,nj−1) + 1 2 f(xj, yj,nj ) , (5.78) kde hj = ϕ2(xj) − ϕ1(xj) nj , yj,k = ϕ1(xj) + khj. (5.79) Četnost a velikost kroku nj vyplývá z toho, že obecně počet výpočetních bodů ve směru y může být různý pro různá xj (viz obrázek 5.7), v závislosti na tvaru integrační oblasti. Následně aproximujeme integrál I pomocí vnější (složené) jednorozměrné kvadratury, I = h 1 2 F(x0) + F(x1) + . . . + F(xm−1) + 1 2 F(xm) , (5.80) kde, za předpokladu rovnoměrného kroku m v x-ovém směru, h = (b−a)/m a xj = a+jh. Pokud integrand f(x, y) je hladká a pomalu rostoucí nebo klesající funkce, volíme četnost bodů nj zpravidla tak, aby hj ≈ h pro všechna j, což minimalizuje výpočetní nároky v rámci požadované přesnosti. Celkovou kvadraturu můžeme tedy zapsat jako I ≈ m j=0 nj k=0 wj,kf(xj, yj,k)hhj, (5.81) kde wj,k = 1 v bodech uvnitř integrační oblasti (j ̸= 0 ∧ j ̸= m ∧ k ̸= 0 ∧ k ̸= nj), wj,k = 1/2 na hranici integrační oblasti s výjimkou rohů (j = 0 ∨ j = m ∧ k ̸= 0 ∧ k ̸= nj Kapitola 5. Praktické základy numerických výpočtů nebo j ̸= 0 ∧ j ̸= m ∧ k = 0 ∨ k = nj) a wj,k = 1/4 v rozích integrační oblasti (j = 0 ∨ j = m ∧ k = 0 ∨ k = nj). Přesnost uvedené metody je druhého řádu, její chyba δI = O(h2 + max h2 j ). Lichoběžníková metoda ve 3D: V případě trojného integrálu (viz rovnice 7.6 ve skriptu Početní praktikum) I = ˆ b a ˆ ϕ2(x) ϕ1(x) ˆ ψ2(x,y) ψ1(x,y) f(x, y, z) dz dy dx (5.82) použijeme obdobnou strategii jako ve 2D případě; výsledná formule (analogie ke vzorci (5.81)) bude I ≈ m j=0 nj k=0 nj,k l=0 wj,k,lf(xj, yj,k, zj,k,l)hhjhj,k, (5.83) kde, opět za předpokladu rovnoměrného kroku m v x-ovém směru, h = (b − a)/m, xj = a + jh, a dále hj = ϕ2(xj) − ϕ1(xj) nj , yj,k = ϕ1(xj) + khj, (5.84) hj,k = ψ2(xj, yk) − ψ1(xj, yk) nj,k , zj,k,l = ψ1(xj, yk) + lhj,k (5.85) a kde wj,k,l = 1 v bodech uvnitř integrační oblasti (j ̸= 0 ∧ j ̸= m ∧ k ̸= 0 ∧ k ̸= nj ∧ l ̸= 0∧l ̸= nj,k), wj,k = 1/2 uvnitř ploch, tvořících hranici integrační oblasti, s výjimkou hran, kde se stýkají dvě z těchto ploch a s výjimkou rohů, kde se stýkají všechny tři (j = 0∨j = m∧k ̸= 0∧k ̸= nj ∧l ̸= 0∧l ̸= nj,k nebo j ̸= 0∧j ̸= m∧k = 0∨k = nj ∧l ̸= 0∧l ̸= nj,k nebo j ̸= 0 ∧ j ̸= m ∧ k ̸= 0 ∧ k ̸= nj ∧ l = 0 ∨ l = nj,k), wj,k = 1/4 na hranách integrační oblasti, s výjimkou rohů (j = 0∨j = m∧k = 0∨k = nj ∧l ̸= 0∧l ̸= nj,k nebo j = 0∨j = m∧k ̸= 0∧k ̸= nj ∧l = 0∨l = nj,k nebo j ̸= 0∧j ̸= m∧k = 0∨k = nj ∧l = 0∨l = nj,k) a wj,k = 1/8 v rozích integrační oblasti (j = 0∨j = m∧k = 0∨k = nj ∧l = 0∨l = nj,k). Přesnost uvedené metody je opět druhého řádu, její chyba δI = O(h2+max h2 j +max h2 j,k). Simpsonovo pravidlo ve 2D: S použitím tohoto pravidla (viz principy a značení, uvedené v rovnici (5.74)) budou rovnice (5.78) a (5.80) postupně vypadat: F(x) = hj 3nj f(xj, yj,0) + 2 nj 2 −1 k=1 f(xj, yj,2k) + 4 nj 2 k=1 f(xj, yj,2k−1) + f(xj, yj,nj ) , (5.86) I = h 3m  F(x0) + 2 m 2 −1 k=1 F(x2k) + 4 m 2 k=1 F(x2k−1) + F(xm)   . (5.87) Postupným řetězením stejného principu bychom snadno zkonstruovali také Simpsonovo pravidlo ve 3D. Obdobným způsobem lze zkonstruovat i vícerozměrné numerické kvadratury, založené metodách vyšších řádů. Vzhledem k uvedeným analogiím k jednorozměrným kvadraturám je zde již dále explicitně neuvádím. Kapitola 5. Praktické základy numerických výpočtů 5.4.4 Jednoduché numerické metody řešení obyčejných diferenciálních rov- nic Existuje opět celá řada způsobů numerického řešení obyčejných diferenciálních rovnic, například řešení rovnic Eulerovou metodou nebo tzv. Runge-Kuttovou metodou (metodami), atd. (další podrobnosti - viz například (Humlíček, 2009)). • Eulerova metoda je nejjednodušší a také ovšem nejméně přesnou metodou, vhodnou pro numerické řešení obyčejných diferenciálních rovnic 1. řádu nebo jejich soustav. Metoda vychází z definice rovnice 1. řádu, y′ = f(x, y), kde x je nezávisle proměnná a y je závisle proměnná, jejíž přepis do numerického schématu s n + 1 body prostorové sítě a s konstantním krokem h = (xn − x0)/n (například pomocí dopředné diference) bude vypadat následovně: yi+1 − yi h = f(x, y) a tedy yi+1 = yi + hf, (5.88) kde i = 0, . . . , n. Analogicky můžeme tento princip rozšířit i na soustavu více rovnic 1. řádu. Použití metody si prakticky ukážeme na soustavě dvou (nelineárních, analyticky velmi těžko řešitelných) rovnic 1.řádu, vzniklých rozkladem rovnice 2. řádu ve tvaru y′′−5(y′−1)2+6y2 = 0, s okrajovými podmínkami y(0) = 1, y′(0) = 2, v intervalu x ∈ ⟨0, 10⟩, tedy y′ = z + 1, z′ = 5z2 − 6y2 . (5.89) Numerický algoritmus soustavy rovnic (5.89) lze zapsat například takto (fortran 95): • program Euler deklarace názvu programu implicit none double precision :: x, y, z, h, f, g deklarace reálných veličin a funkcí x=0.d0, y=1.d0, z=1.d0, h=1.d-3 deklarace parametrů a okrajových podmínek do výpočetní cyklus f=z+1.d0 g=5.d0*z**2.–6.d0*y**2. y=y+h*f z= z+h*g write(1,*) x,y,z write to file fort.1 x=x+h if(x>10.d0)exit stop criterion end do konec cyklu end program Euler Tímto výpočtem získáme ve skutečnosti diskrétní průběh funkcí y a z = y′ − 1 v daném intervalu ⟨0, 10⟩, s krokem 10−3. Hodnoty obou funkcí v konečném bodě intervalu jsou zde y(10) = 0.91287365321267411 a z(10) = −1.0000034112031584. Kapitola 5. Praktické základy numerických výpočtů • Metody Runge-Kutta (RK) Obecně mohou být tyto metody různých řádů, Eulerova metoda je vlastně Runge-Kuttova metoda 1. řádu. Nejpoužívanější je ale tzv. „RK4“ (metoda 4. řádu), „klasická Runge-Kuttova metoda“ nebo často nazývaná prostě jen „Runge-Kuttova metoda“. Ta je definovaná (použijeme notaci, zavedenou v předchozím odstavci Eulerova metoda) jako xi+1 = xi + h, yi+1 = yi + h 6 (k1 + 2k2 + 2k3 + k4) , (5.90) kde koeficienty kα jsou obecně stanoveny tak, aby metoda řádu p odpovídala Taylorovu polynomu funkce y(x) stejného řádu. V případě „RK4“ tedy budou k1 = f(xi, yi), (5.91) k2 = f xi + h 2 , yi + h 2 k1 , (5.92) k3 = f xi + h 2 , yi + h 2 k2 , (5.93) k4 = f (xi + h, yi + hk3) . (5.94) Jako příklad zde uvedeme numerický algoritmus stejné soustavy rovnic (5.89) jako v předchozí Eulerově metodě (fortran 95): • program RK deklarace názvu programu implicit none double precision :: x, y, z, h, f, g deklarace reálných veličin a funkcí double precision :: k1y, k2y, k3y, k4y deklarace koeficientů pro proměnnou y double precision :: k1z, k2z, k3z, k4z deklarace koeficientů pro proměnnou z x=0.d0, y=1.d0, z=1.d0, h=1.d-3 deklarace parametrů a okrajových podmínek do výpočetní cyklus f=z+1.d0 g=5.d0*z**2.–6.d0*y**2. k1y=f k1z=g k2y=(z+k1z*h/2.d0+1.d0) k2z=(5.d0*(z+k1z*h/2.d0)**2.–6.d0*(y+k1y*h/2.d0)**2.) k3y=(z+k2z*h/2.d0+1.d0) k3z=(5.d0*(z+k2z*h/2.d0)**2.–6.d0*(y+k2y*h/2.d0)**2.) k4y=(z+h*k3z) k4z=(5.d0*(z+h*k3z)**2.–6.d0*(y+h*k3y)**2.) y=y+h*(k1y+2.d0*k2y+2.d0*k3y+k4y)/6.d0 z= z+h*(k1z+2.d0*k2z+2.d0*k3z+k4z)/6.d0 write(1,*) x,y,z write to file fort.1 x=x+h if(x>10.d0)exit stop criterion end do konec cyklu end program RK Kapitola 5. Praktické základy numerických výpočtů Dostáváme obdobný průběh funkcí y a z = y′ −1 v daném intervalu ⟨0, 10⟩, s krokem 10−3, jako pomocí Eulerovy metody. Hodnoty obou funkcí v konečném bodě intervalu jsou zde y(10) = 0.91287365717860480 a z(10) = −1.0000034161695313, číselné hodnoty se tedy pro obě metody liší nejdříve v řádu 10−9. • Odhad chyby metodou polovičního kroku Oblíbenou jednoduchou metodou odhadu chyb je tzv. metoda polovičního kroku, která v celé řadě praktických aplikací dává spolehlivé výsledky (podrobný popis a teoretický rozbor existuje prakticky v každé učebnici numerické matematiky). Jejím principem je, že výpočet provedeme znovu, se stejnými okrajovými podmínkami, ovšem s polovičním krokem h/2, takže pro stanovení chyby (odchylky od přesného řešení) δy funkce y se v rámci jednoho kroku h tento proces opakuje dvakrát. Výsledný odhad odchylky je pak stanoven jako δy = y x, h 2 − y(x, h) 2p − 1 , (5.95) kde p je řád numerické metody (například v případě uvedené Eulerovy metody bude jmenovatel rovnice (5.95) roven 1, v případě metody „RK4“ bude roven 15). Pro porovnání, takto provedený odhad chyb výpočtů soustav diferenciálních rovnic 1. řádu z tohoto odstavce (kde h = 10−3) bude δy(10) ≈ 3,973 × 10−9 a δz(10) ≈ −4,976 × 10−9 pro Eulerovu metodu a δy(10) ≈ 4,441 × 10−17 a δz(10) ≈ −1,480 × 10−17 pro metodu „RK4“. • Dormand-Princova metoda (DOPRI) Tato metoda je de facto součástí (rozšířením) metod Runge-Kutta, odpovídá ovšem Taylorovu polynomu 6., resp. 7. řádu. Touto metodou dostáváme řešení 4. a 5. řádu RK přesnosti (Dormand & Prince, 1980). Rozdíl přesností v řešení 4. a 5. řádu RK bereme potom jako chybu přesnosti řešení RK 4. řádu. Na základě této chyby potom implementujeme algoritmus adaptivního iteračního kroku h pro udržení požadované přesnosti (viz níže). Uvedená metoda je nezastupitelná v případech obyčejných diferenciálních rovnic s tzv. silným tlumením neboli „tuhých“ (anglicky stiff equations), kde se jednodušší metody rychle stávají nestabilní a dávají nepřesná řešení. Příkladem takové „tuhé“ rovnice může být například y′ = 3y x + x3 + x, y(1) = 3, která je navíc analyticky řešitelná (y = 3x3 + x4 − x2) takže si výsledky dané různými metodami můžeme porovnat. Řešení 4. řádu v bodě xi+1 získáme pomocí yi+1 = yi + h 35 384 k1 + 500 1113 k3 + 125 192 k4 − 2187 6784 k5 + 11 84 k6 . (5.96) Řešení pátého řádu v bodě xi+1 získáme pomocí Yi+1 = yi + h 5179 57600 k1 + 7571 16695 k3 + 393 640 k4 − 92097 339200 k5 + 187 2100 k6 + 1 40 k7 . (5.97) Kapitola 5. Praktické základy numerických výpočtů kde koeficienty kα budou (viz tzv. Butcherova tabulka, Butcher (2008)) k1 = f (xi, yi) k2 = f xi + 1 5 h, yi + 1 5 k1 k3 = f xi + 3 10 h, yi + 3 40 k1 + 9 40 k2 k4 = f xi + 4 5 h, yi + 44 45 k1 − 56 15 k2 + 32 9 k3 k5 = f xi + 8 9 h, yi + 19372 6561 k1 − 25360 2187 k2 + 64448 6561 k3 − 212 729 k4 k6 = f xi + h, yi + 9017 3168 k1 − 355 33 k2 − 46732 5247 k3 + 49 176 k4 − 5103 18656 k5 k7 = f xi + h, yi + 35 384 k1 + 500 1113 k3 + 125 192 k4 − 2187 6784 k5 + 11 84 k6 . (5.98) Rozdíl řešení 4. a 5. řádu definuje chybu řešení 4. řádu, δyi+1 = |Yi+1 − yi+1|. (5.99) Pokud chyba přesáhne horní zvolenou mez přesnosti δmax, algoritmus sníží velikost iteračního kroku h (typicky na polovinu) a výpočet opakuje. Iterační krok h je snižován tak dlouho, dokud nedosáhne požadované přesnosti. Naopak, pokud chyba klesne pod spodní zvolenou mez přesnosti δmin, zvýší se velikost iteračního kroku h (typicky na dvojnásobek) a výpočet se opakuje, dokud nedosáhne požadované přesnosti. Podstatnou výhodou je, že se výpočet neopakuje v oblastech již stabilního řešení, šetří se tak výpočetní čas. Dále zde ukážeme příklad řešení obyčejné diferenciální rovnice 2. řádu často používanou jednoduchou tzv. metodu střelby a také pomocí tridiagonální matice (viz odstavec 5.2.1): • Metoda střelby je jednoduchá metoda řešení obyčejných diferenciálních rovnic 2. řádu, kdy potřebujeme dvě okrajové podmínky - polohu při „výstřelu“ a při „dopadu“ (Dirichletovy podmínky) nebo směr „výstřelu“ a „dopadu“ (Neumannovy podmínky), případně smíšené (například polohu a směr „výstřelu“), založená na „vystřelení“ dané funkce v závislosti na okrajových podmínkách. Hledáme potom takové koeficienty funkce, které zajistí „dopadnutí“ funkce požadovaným způsobem do požadovaného bodu. Metodu si ukážeme na příkladu řešení tzv. Lane-Emdenovy rovnice, což je obyčejná diferenciální rovnice 2. řádu, obvykle zapsaná v implicitním tvaru 1 x2 d dx x2 dy dx + yn = 0 a tedy y′′ + 2 x y′ + yn = 0, (5.100) kde x je nezávisle proměnná, y je závisle proměnná a n je konstanta. Tato rovnice je řešitelná analyticky pouze pro n = 0, 1, 5, pro všechna ostatní n musí být řešena numericky. Pro n = 0 získáme řešení přímou integrací se zahrnutím uvedených okrajových podmínek, pro n = 1 řešíme sférickou Besselovu diferenciální rovnici (viz rovnice (4.115)), Pro n = 5 dostáváme řešení prostřednictvím tzv. Emdenovy transformace, kde y = Arωs, kde r, s jsou nové proměnné a ω = 2/(n − 1). Kapitola 5. Praktické základy numerických výpočtů Budeme počítat rovnici (5.100) pro n = 1,5 a se smíšenými okrajovými podmínkami y(0) = 1, y′(0) = 0. Algoritmus je tedy „vystřelen“ z bodu [0,1] vodorovně, nová hodnota y je v každém prostorovém kroku vypočítána jako y = y + (∆y/∆x)∆x. Druhá derivace y′′ je rozepsána jako (y′)′, tedy ∆(∆y/∆x)/∆x a každá nová hodnota y′′ je v každém prostorovém kroku počítána jako (∆y/∆x)/∆x = (∆y/∆x)/∆x − [(2/x)(∆y/∆x) + yn], což můžeme po vynásobení celé rovnice ∆x přepsat jako (∆y/∆x) = (∆y/∆x)−[(2/x)(∆y/∆x)+yn]∆x. Numerický algoritmus rovnice (5.100) lze tedy zapsat například takto (fortran 95): • program Emden deklarace názvu programu implicit none double precision :: x, y, dydx, n, dx deklarace reálných veličin x, y, dydx, n, dx s dvojitou přesností, kde dydx = y′ = ∆y/∆x a dx = ∆x x=0.d0 deklarace parametrů a okrajových podmínek y=1.d0 dydx=0.d0 dx=1.d-3 n=1.5d0 do výpočetní cyklus x=x+dx y=y+dydx*dx dydx=dydx-(2.d0*dydx/x+y**n)*dx if(x>15.d0)exit stop kritérium, dané předběžným odhadem write(1,*) x,y,dydx zápis do souboru fort.1 end do konec cyklu end program Emden • Příklad řešení obyčejné diferenciální rovnice 2. řádu pomocí tridiagonální matice Řešení okrajové úlohy obyčejné diferenciální rovnice 2. řádu p(x)y′′(x)+q(x)y′(x)+r(x)y(x) = f(x), na intervalu a, b, s Dirichletovými okrajovými podmínkami y(a) = A, y(b) = B, lze snadno řešit pomocí tridiagonální matice (viz odstavec 5.2.1). Jako příklad řešení uvedeme jednoduchou rovnici s konstantními koeficienty y′′ +3y′ +2y = (20x+29) e3x (snadno řešitelnou i analyticky), na intervalu ⟨0, 1⟩, s Dirichletovými okrajovými podmínkami y(0) = 0, y(1) = 1. Po přepsání dané rovnice do diferenčního schématu s n + 2 body prostorové sítě, kdy jednotlivé derivace levé strany rozepíšeme podle rovnic (5.68) a (5.69), dostáváme rovnici ve tvaru p − h 2 q yi−1 + h2 r − 2p yi + p + h 2 q yi+1 = h2 fi, (5.101) kde i = 0, 1, . . . , n, n + 1, s koeficienty p = 1, q = 3, r = 2 a s konstantním prostorovým krokem h = (xn+1 − x0)/(n + 1) = [x(1) − x(0)]/(n + 1), při n = 99 tak bude h = 0, 01. Označíme-li jednotlivé závorky na levé straně rovnice (5.101) postupně P, Q, R, dostáváme Kapitola 5. Praktické základy numerických výpočtů rovnici s tridiagonální maticí na levé straně ve tvaru          Q R P Q R ... ... ... P Q R P Q                   y1 y2 ... yn−1 yn          =          h2f1 − Py0 h2f2 ... h2fn−1 h2fn − Ryn+1          . (5.102) Numerický algoritmus zapíšeme následujícím způsobem (fortran 95): • program tridiag deklarace názvu programu implicit none integer :: i, ni, N, LDB, NRHS, INFO deklarace celočíselných proměnných: i = pořadové číslo nezávisle proměnné, ni = celkový počet diskrétních hodnot, ostatní jsou parametry podpropgramu DGTSV balíčku LAPACK - viz odstavec 5.1 parameter(ni=99,N=ni,LDB=N,NRHS=1) hodnoty celočíselných proměnných double precision :: x(ni) ,y(ni), h(ni), p(ni), q(ni), r(ni), f(ni), B(LDB,NRHS), DL(N-1), DU(N-1), D(N) deklarace reálných proměnných jako pole s dvojitou přesností double precision, parameter :: x0=0.d0, xn=1.d0, y0=0.d0, yn=1.d0 deklarace reálných konstant s dvojitou přes- ností do i=1,N výpočetní cyklus prostorového kroku x(i)=x0+(xn-x0)*i/dfloat(ni+1) příkaz dfloat mění celočíselnou proměnnou na reálnou end do do i=1,N hlavní výpočetní cyklus h(i)=x(i)-x(i-1) konstantní krok h je zde zapsán obecně p(i)=1.d0 konstantní koeficienty jsou zapsány obecně q(i)=3.d0 r(i)=2.d0 f(i)=(20.d0*x(i)+29.d0)*dexp(3.d0*x(i)) if(i.eq.1) then spodní okrajová podmínka B(i,1)=h(i)**2.d0*f(i)-(p(i)-q(i)*h(i)/2.d0)*y0 elseif((i.gt.1).and.(i.lt.N)) then hlavní pole B(i,1)=h(i)**2.d0*f(i) else horní okrajová podmínka B(i,1)=h(i)**2.d0*f(i)-(p(i)+q(i)*h(i)/2.d0)*yn endif end do do i=1,N-1 zadání spodní diagonály DL(i)=p(i)-q(i)*h(i)/2.d0 end do do i=1,N zadání hlavní diagonály Kapitola 5. Praktické základy numerických výpočtů D(i)=r(i)*h(i)**2.d0-2.d0*p(i) end do do i=2,N zadání horní diagonály DU(i)=p(i)+q(i)*h(i)/2.d0 end do volání podprogramu DGTSV balíčku LAPACK (viz oddíl 5.1): call DGTSV(N, NRHS, DL, D, DU, B, LDB, INFO) if(INFO.ne.0) write(*,*) “INFO=”,INFO,“!!!” write(1,*) x0, y0 do i=1,N y(i)=B(i,1) write(1,*) x(i), y(i) !zápis do souboru fort.1 end do write(1,*) xn, yn end program tridiag 5.5 Numerické metody výpočtů funkcí více proměnných - řešení parciálních diferenciálních rovnic 5.5.1 Hledání kořenů soustavy funkcí více proměnných Newtonova-Raphsonova metoda Newtonova (Newtonova-Raphsonova) metoda představuje velmi účinný nástroj také pro řešení obecné soustavy (nelineárních) rovnic. Soustavu P, obsahující n rovnic můžeme obecně zapsat jako Pi (⃗x) = 0, (5.103) kde i = 1, . . . , n a kde ⃗x je vektor proměnných xj. Pomocí Taylorova rozvoje rovnice (5.103) do prvního řádu dostáváme obecný výraz pro k-tou iteraci (k-tý iterativní krok) řešení systému rovnic Pi, který můžeme zapsat kompaktní formou J k ∆⃗x k = −⃗P k−1 ⃗x k−1 , (5.104) kde vektor ∆⃗x představuje korekci řešení pro každou proměnnou xj vzhledem k předchozímu iterativnímu kroku. Explicitní zápis vektoru ∆⃗x k bude mít tvar ∆⃗x k = (xk 1 − xk−1 1 , . . . , xk n − xk−1 n )T . (5.105) Výraz ⃗P k v rovnici (5.104) představuje vektor k-té iterace všech systémových rovnic P k i , zatímco výraz J k značí odpovídající Jacobiho matici, jejíž každý prvek J k ij můžeme snadno analyticky vyjádřit ze systému rovnic P k i , položíme-li J k ij = ∂P k i ∂xk j . (5.106) Řešíme-li například (jako jednoduchý modelový příklad) soustavu rovnic: x4 + 6y2 − 12z 5x3 − 3y + z2 x3 + 7y2 − z = = = 16, 9, 0, (5.107) Kapitola 5. Praktické základy numerických výpočtů můžeme explicitní podobu rovnice (5.104) zapsat jako    4 x3 0 12 y0 −12 15 x2 0 −3 2 z0 3 x2 0 14 y0 −1       x − x0 y − y0 z − z0    = −    x4 0 + 6 y2 0 − 12 z0 − 16 5 x3 0 − 3 y0 + z2 0 − 9 x3 0 + 7 y2 0 − z0    , (5.108) kterou dále řešíme iterativně například pomocí balíčku LAPACK (viz odstavec 5.1) jako soustavu tří lineárních rovnic pro tři neznámé ∆x = x − x0, ∆y = y − y0 a ∆z = z − z0, z nichž potom v každém kroku získáme nové hodnoty x, y a z jako x = ∆x + x0, y = ∆y + y0, z = ∆z + z0. • Příklad možného způsobu naprogramování soustavy rovnic (5.107) - program fortran 95: program eqsystem deklarace názvu programu implicit none deklarace celočíselných proměnných v záhlaví programu, viz odstavec 5.1: integer :: i,j,K,INFO,KL,KU,LDAB,LDB,N,NRHS parameter(N=3,KL=2,KU=2,K=KU+KL+1,LDAB=2*KL+KU+1,LDB=N,NRHS=1) integer :: IPIV(N) deklarace reálných veličin s dvojitou přesností: double precision :: AB(LDAB,N),B(LDB,NRHS),DER(N,N),C(N),x0,y0,z0 přesměrování konečného zápisu výsledku do souboru “solve.dat”: open(10,file=“solve.dat”,status=“unknown”) x0=-4.0d0 odhad vstupní hodnoty xk y0=-3.0d0 odhad vstupní hodnoty yk z0=14.0d0 odhad vstupní hodnoty zk do výpočetní cyklus matice derivací levých stran: DER(1,1)=4.d0*x0**3.d0 DER(1,2)=12.d0*y0 DER(1,3)=-12.d0 DER(2,1)=15.d0*x0**2.d0 DER(2,2)=-3.0 DER(2,3)=2.d0*z0 DER(3,1)=3.d0*x0**2.d0 DER(3,2)=14.d0*y0 DER(3,3)=-1.d0 transformovaná pásová matice AB podle schematu LAPACK, viz odstavec 5.1: do j=1,N do i=max(1,j-KU),min(N,j+KL) AB(K+i-j,j)=DER(i,j) end do end do matice pravých stran: B(1,1)=-(x0**4.d0+6.d0*y0**2.d0-12.d0*z0-16.d0) Kapitola 5. Praktické základy numerických výpočtů B(2,1)=-(5.d0*x0**3.d0-3.d0*y0+z0**2.d0-9.d0) B(3,1)=-(x0**3.d0+7.d0*y0**2.d0-z0) vlastní výpočet pomocí podprogramu DGBSV, viz odstavec 5.1:: call DGBSV(N,KL,KU,1,AB,LDAB,IPIV,B,N,INFO) if (INFO.ne.0) write(*,*) “INFO=”,INFO,“!!!” C=(/(dabs(B(i,1)),i=1,N)/) if (maxval(C).lt.1.d-15) exit stop kritérium: max|∆x, ∆y, ∆z| < 10−15 x0=B(1,1)+x0 y0=B(2,1)+y0 z0=B(3,1)+z0 zápis výsledných hodnot x, y, z, ∆x, ∆y, ∆z z jednotlivých iterací do souboru: write(10,*)x0,y0,z0,(B(i,1),i=1,N) end do stop zastavení celého procesu end program eqsystem konec programu • Tabulka vypočtených hodnot xk, yk, zk, ∆xk, ∆yk, ∆zk ze všech provedených iterací : k xk yk zk 1 -3.5568659855769229 -2.8660523504273505 14.644631410256411 2 -3.4484177335542667 -2.8088357894123277 14.321062859837509 3 -3.4422190042021756 -2.8052747443938260 14.300861993036721 4 -3.4421993029036972 -2.8052630869488695 14.300795971729505 5 -3.4421993027044500 -2.8052630868291244 14.300795971052235 6 -3.4421993027044500 -2.8052630868291244 14.300795971052233 k ∆xk ∆yk ∆zk 1 0.44313401442307693 0.13394764957264957 0.64463141025641035 2 0.10844825202265625 5.7216561015022732E-002 -0.32356855041890148 3 6.1987293520911584E-003 3.5610450185016187E-003 -2.0200866800787826E-002 4 1.9701298478486783E-005 1.1657444956463351E-005 -6.6021307216049201E-005 5 1.9924720437988766E-010 1.1974503494876664E-010 -6.7726957780015056E-010 6 6.2835370146182566E-017 1.8208999862070576E-016 -1.3650720993330078E-015 Počáteční odhad (pokud neznáme, jako v případě standardních fyzikálních dějů, nějaké „předem očekávané“ hodnoty) může být poměrně obtížný - na našem příkladě můžete vyzkoušet, že pokud zvolíme např. všechny počáteční hodnoty rovny 1, výpočet zkonverguje rovněž, ovšem bude zapotřebí 24 325 iterací (namísto 6 iterací pro uvedené blízké celočíselné počáteční odhady). Kapitola 5. Praktické základy numerických výpočtů 5.5.2 Principy konečných diferencí Jednoduchý příklad - jednorozměrná rovnice se dvěma proměnnými: t-čas, x-délka - Burgersova (transportní) parciální diferenciální rovnice ∂f(t, x) ∂t + u ∂f(t, x) ∂x = 0, (5.109) kde u je konstanta (rychlost). Numerický tvar funkce f(t, x) je reprezentován na jednorozměrné síti, tvořené M prostorovými body, x0, x1, ... , xM (x0 < x1 < x2 < ... < xM ). (5.110) Výpočet proběhne opakovaně během N časových kroků, t1 = t0 + ∆t, t2 = t1 + ∆t = t0 + 2∆t, ... , tN = t0 + N∆t. (5.111) Numerické řešení veličiny f(t, x) v obecném j-tém prostorovém a n-tém časovém (x = xj, t = tn) kroku označíme fn j . Taylorův rozvoj funkce f(t, x) má tvar f(x + h, t) = f(x, t) + h ∂f(x, t) ∂x + h2 2! ∂2f(x, t) ∂x2 + O(h3 ) + ... (5.112) f(x − h, t) = f(x, t) − h ∂f(x, t) ∂x + h2 2! ∂2f(x, t) ∂x2 − O(h3 ) + ... , (5.113) kde h = ∆x je přírůstek prostorové proměnné x (viz rovnice 1.1 ve skriptu Početní praktikum) a symbol O značí zanedbatelný, dále nezapočítávaný příspěvek členů vyšších řádů. V numerické matematice jsou derivace nahrazeny tzv. diferencemi (viz odstavec 5.4.2): ∂f(x, t) ∂x ≈ f(x + h, t) − f(x, t) h = fn j+1 − fn j ∆x , apod. (5.114) Typy diferencí pro aproximace derivací 1. řádu: ∂f ∂x n j ≈ fn j+1 − fn j /∆x dopředné diference, ∂f ∂x n j ≈ fn j − fn j−1 /∆x zpětné diference, ∂f ∂x n j ≈ fn j+1 − fn j−1 /(2∆x) centrální diference. (5.115) Příklad numerického diferenčního schématu pro aproximace derivací 2. řádu: ∂2f ∂x2 n j ≈ fn j+1 − 2fn j + fn j−1 /(∆x)2 . (5.116) Numerické diferenční schéma uvedené transportní (advekční) rovnice (5.109) má tvar fn+1 j − fn j ∆t = −u fn j+1 − fn j−1 2∆x , (5.117) kde časový krok je počítán jako dopředná diference a prostorový krok je počítán jako centrální diference. Po jednoduché úpravě dostáváme diferenční rovnici (5.117) v programovatelném tvaru: fn+1 j = fn j − u∆t 2∆x fn j+1 − fn j−1 . (5.118) Kapitola 5. Praktické základy numerických výpočtů 0 0.5 1 1 50 100 ρ x ρ Obrázek 5.8: Graf (časový snímek) postupné hustotní vlny, popsané Burgersovou rovnicí (5.109), modelované metodou explicitního Eulerova schématu na principu konečných diferencí (rovnice (5.118), viz také programový skript, uvedený v tomto odstavci). V grafu je zřetelná nestabilní vlnová poruha, jejíž oblast i amplituda neustále narůstá (viz sekce 5.5.3). • Příklad možného způsobu naprogramování rovnice (5.118) - program fortran 95: program explicit deklarace názvu programu implicit none integer :: j, n, t deklarace celočíselných proměnných v záhlaví programu: j = pořadové číslo prostorového kroku, n = pořadové číslo časového kroku integer :: nj, nn deklarace celočíselných proměnných v záhlaví programu: nj = celkový počet prostorových kroků j, nn = celkový počet časových kroků n parameter (nj=100, nn=200) zadání číselných hodnot pro nj, nn double precision :: x(nj), f(nj), u(nj) deklarace reálných veličin x, f a u jako pole (vektoru) o nj prvcích s dvojitou přesností double precision :: dt deklarace reálné veličiny dt (časového kroku) parameter (dt = 1.d0, u = 1.2d0) deklarace pevně zadaných hodnot konstantních reálných veličin do j=1,nj cyklus počáteční podmínky (počáteční funkce) x(j) = dfloat(j) příkaz dfloat mění celočíselnou proměnnou na reál- nou if (j.le.nj/2) then tzv. logická podmínka (kde .le. znamená ≤) f(j) = 1.d0 else f(j) = 0.1d0 zadaná počáteční funkce: pro x ≤ 0.5nj → f = 1.0, pro x > 0.5nj → f = 0.1 endif end do konec cyklu Kapitola 5. Praktické základy numerických výpočtů t=0.d0 změna typu proměnné t na real s dvojitou přesností do vnější (časový) cyklus t = t+dt do j=2,nj-1 vnitřní (prostorový) cyklus f(j) = f(j)-u(j)*dt*(f(j+1)-f(j-1))/(x(j+1)-x(j-1)) vlastní rovnice (5.118) end do konec vnitřního cyklu f(1) = f(1) vnitřní tzv. pevná okrajová podmínka f(nj) = f(nj-1) vnější tzv. volná okrajová podmínka do j=1,nj cyklus zápisu do souboru s názvem fort.100 write (100,*) x(j), f(j) zápis spočítaných hodnot end do write (100,*) write (100,*) dvouřádková mezera, nutná pro animaci časových cyklů if (t.gt.200.d0) exit vystoupení z časového cyklu, pokud t > 200 end do ukončení časového cyklu stop zastavení celého procesu při t > 200 end program explicit konec programu Toto tzv. explicitní Eulerovo numerické schéma je sice jednoduché, přehledné a názorné, je ale vždy numericky nestabilní (viz obrázek 5.8 a odstavec 5.5.3): 5.5.3 von Neumannova analýza stability Jednoduchá analytická metoda, založená na předpokladu periodické numerické poruchy, tedy na Fourierovské dekompozici (rozkladu) numerické chyby. Metoda byla publikována v roce 1947 matematiky Johnem Crankem a Phyllis Nicolsonovou, za spoluautorství významného matematika, fyzika a průkopníka digitálních počítačů Johna von Neumanna. Předpokládejme obecné poruchy stability (periodické perturbace, vibrace) vlnového charakteru ve tvaru ξn eikj∆x , (5.119) kde ξ(k) je amplituda vlny, k je vlnové číslo libovolné hodnoty. Pokud |ξ| > 1, pro n → ∞ bude |ξ|n → ∞, (5.120) porucha se neustále zvětšuje, numerické schéma je nestabilní. Pokud |ξ| < 1, (5.121) numerické schéma je stabilní. Po dosazení poruchové vlnové funkce do explicitního řešení (5.118) dostáváme ξn+1 − ξn eikj∆x = − u∆t 2∆x ξn eik(j+1)∆x − eik(j−1)∆x (5.122) a po vydělení celé rovnice (5.122) výrazem ξneikj∆x dostáváme ξ = 1 − u∆t 2∆x eik∆x − e−ik∆x = 1 − i u∆t ∆x sin(k∆x). (5.123) Kapitola 5. Praktické základy numerických výpočtů 0 0.5 1 1 50 100 ρ x ρ Obrázek 5.9: Časový snímek postupné hustotní vlny, popsané Burgersovou rovnicí (5.109), modelované Laxovou metodou (rovnice (5.125)). Křivka hustoty je na rozdíl od explicitního schématu stabilní, je zde však příliš velká tzv. numerická difúzivita, projevující se značným rozmytím (rozostřením) původní vlny ostře schodovitého tvaru (srovnej s grafem 5.13 v odstavci 5.5.8), způsobená přidáním výrazu, odpovídajícímu druhé derivaci advekčního členu, tj. kdy výraz (fj+1 +fj−1)/2 v rovnici (5.125) můžeme chápat jako fj + (fj+1 − 2fj + fj−1)/2. Protože |a + ib| = √ a2 + b2, bude druhá mocnina rovnice (5.123) rovna výrazu |ξ|2 = 1 + u∆t ∆x 2 sin2 (k∆x), (5.124) kde pravá strana zjevně bude téměř vždy větší než 1 (výjimečně se bude rovnat 1). Je tedy zřejmé, že v případě explicitního numerického schématu musí vždy platit, že |ξ| ≥ 1, toto schéma je tedy vždy nestabilní. 5.5.4 Laxova metoda Numerická varianta explicitního schématu, které podstatně stabilizuje, je pojmenovaná podle matematika Petera Davida Laxe. Základem je jednoduchá změna ve struktuře časového členu. Člen fn j v explicitním řešení je zde nahrazen aritmetickým průměrem sousedních hodnot, fn+1 j = 1 2 fn j+1 + fn j−1 − u∆t 2∆x fn j+1 − fn j−1 , (5.125) von Neumannova analýza stability v tomto případě dává ξ = cos(k∆x) − i u∆t ∆x sin(k∆x), a tedy |ξ|2 = cos2 (k∆x) + u∆t ∆x 2 sin2 (k∆x). (5.126) Schéma je zjevně stabilní, pokud pro tzv. Courant-Friedrichs-Lewyho číslo u∆t/∆x (zkráceně Courantovo číslo, cfl) platí u∆t ∆x ≤ 1 Courantův teorém stability. (5.127) Stejná rovnice (5.109), modelovaná Laxovou metodou (5.125) je zobrazena v grafu 5.9. Kapitola 5. Praktické základy numerických výpočtů 0 0.5 1 1 50 100 ρ x ρ Obrázek 5.10: Časový snímek postupné hustotní vlny (5.109), modelované metodou implicitního schématu (rovnice (5.134)). Křivka hustoty je stabilní a na rozdíl od Laxova schématu není zdaleka tak rozšířená. Amplituda postupného klubka vlnové poruchy v levé části grafu se v čase snižuje, jeho rozsah se nemění. 5.5.5 Metoda zpětného kroku (Upwind method) Metoda zpětného kroku používá v prostorovém (advekčním) členu zpětnou diferenci, fn+1 j = fn j − u∆t ∆x (fn j − fn j−1), (5.128) von Neumannova analýza stability v tomto případě dává (cfl = α): ξ = 1 − α + α cos(k∆x) − iα sin(k∆x), a tedy, |ξ|2 = [1 − α + α cos(k∆x)]2 + α2 sin2 (k∆x). (5.129) Z požadavku |ξ|2 < 1 vyplývá nerovnost 2α(1 − α)[1 − cos(k∆x)] > 0. (5.130) Protože pokud α > 0 potom cos(k∆x) < 1, schéma bude stabilní, pokud obdobně jako v odstavci 5.5.4 Courantovo číslo α < 1. 5.5.6 Laxova-Wendroffova metoda Dvoukroková metoda, pojmenovaná podle již zmíněného Petera Laxe (viz odstavec 5.5.4) a dalšího matematika Burta Wendroffa, kombinuje výhody Laxova a explicitního schématu následujícím způsobem: 1. krok (Laxův) a 2. krok (explicitní): f n+1 2 j+ 1 2 = 1 2 fn j+1 + fn j − 1 2 u∆t ∆x fn j+1 − fn j , fn+1 j = fn j − u∆t ∆x f n+1 2 j+1 2 − f n+1 2 j− 1 2 . (5.131) Kapitola 5. Praktické základy numerických výpočtů von Neumannova analýza stability v tomto případě dává (cfl = α): ξ = 1 − 2α sin k∆x 2 α sin k∆x 2 + i cos k∆x 2 , a tedy, (5.132) |ξ|2 = 1 − 4α2 sin2 k∆x 2 1 − α2 sin2 k∆x 2 − cos2 k∆x 2 . (5.133) Z požadavku |ξ|2 < 1 opět vyplývá podmínka stability α < 1. 5.5.7 Implicitní schéma Princip tzv. implicitního schématu je založen na tom, že hodnoty veličiny f v prostorovém (advekčním) členu na pravé straně rovnice (5.118) jsou zadány v čase tn+1, tedy de facto v budoucnu, tj. po provedení aktuálního výpočtu, fn+1 j = fn j − u∆t 2∆x fn+1 j+1 − fn+1 j−1 . (5.134) von Neumannova analýza stability v tomto případě dává (cfl = α): ξ = 1 1 + iα sin(k∆x) = 1 − iα sin(k∆x) 1 + α2 sin2 (k∆x) , a tedy |ξ|2 = 1 1 + α2 sin2 (k∆x) . (5.135) Z rovnice (5.135) je tedy zcela zřejmé, že implicitní schéma musí splňovat podmínku stability |ξ| ≤ 1, je tedy vždy numericky stabilní. Nevýhodou je komplikovanost výpočtu fn+1 j v každém časovém kroku, kdy tuto předem neznámou hodnotu počítáme pomocí tzv. tridiagonální matice (viz odstavce 5.1, 5.2.1.) α 2 fn+1 j−1 − fn+1 j − α 2 fn+1 j+1 = −fn j (5.136) některou z metod nebo knihoven numerické lineární algebry (viz odstavec 5.1). Stejná rovnice (5.109), modelovaná implicitní metodou (5.134)-(5.136) je zobrazena v grafu 5.10. 5.5.8 Příklad pokročilejšího numerického schématu • V současnosti existuje celá řada modernějších, přesnějších a stabilnějších numerických metod (viz např. Thompson, 2006): • Použití tzv. oddělených sítí (staggered mesh), umožňující oddělení toků různých veličin (flux splitting), například vektorových a skalárních polí, atd. • Postupné přidávání jednotlivých členů pravých stran fyzikálních rovnic, reprezentujících různá silová pole (operator splitting): (f1 − f0)/∆t = L1(f0) (f2 − f1)/∆t = L2(f1) ... ... (fm − fm−1)/∆t = Lm(fm−1), (5.137) kde Lj představuje jednotlivé aproximace členů pravé strany rovnice pomocí principu konečných diferencí, m je celkový počet členů na pravé straně rovnice a horní indexy udávají pořadové číslo dílčího časového kroku. Kapitola 5. Praktické základy numerických výpočtů 1 2 3 4 5 nj nj+1 nj+2 nj+3 nj+4 nj+5 1 2 3 4 5 nk nk+1 nk+2 nk+3 nk+4 nk+5 1 2 3 4 5 nj nj+1 nj+2 nj+3 nj+4 1 2 3 4 5 nk nk+1 nk+2 nk+3 nk+4 g b b int int b b g g b b int int b b g g b int int b g g b int int b g body A-s´ıtˇe body B-s´ıtˇe Obrázek 5.11: Schéma uspořádání tzv. oddělených sítí (staggered mesh). A-síť, určená pro počítání vektorů, je zobrazena černě, B-síť, určená pro počítání skalárních veličin, je zobrazena červeně. Tlustou čárou je ohraničena vnitřní výpočetní doména (’int’), symbolem ’b’ je označena zóna pro počítání okrajových podmínek, symbolem ’g’ je označena tzv. ghost zone, což je další přidaná zóna pro okrajové podmínky, nutná pro počítání diferenciálních rovnic 2. řádu nebo v případě symetrických podmínek, například vůči ose sítě (periodické okrajové podmínky), středu sítě, atd. Přesné uspořádání zón pro okrajové podmínky se může v detailech lišit právě podle typu okrajových podmínek (pevné, reflexní, periodické, atd.). • Princip oddělených sítí (staggered mesh): na A-síti „sedí“ vektorové veličiny, na B-síti „sedí“ skalární veličiny (viz obrázek (5.11). • Příklad dvoukrokové metody (tj. kdy výpočet následujícího časového kroku je rozdělen na dva mezikroky: explicitně vypočítaný tzv. prediktorový krok, následovaný implicitním tzv. korektorovým krokem) pro výpočet transportní rovnice (5.109) skalární veličiny f: ∆A − = fB j − fB j−1 xB j − xB j−1 , ∆A + = fB j+1 − fB j xB j+1 − xB j , (5.138) kde ∆−, ∆+ jsou symboly pro zpětnou a dopřednou diferenci. Pro výpočet prediktorového kroku použijeme například tzv. van Leerovu derivaci (van Leer, 1982), definovanou jako: dB vL =    ⟨∆−∆+⟩ = 2∆−∆+ ∆− + ∆+ , if ∆−∆+ > 0 0, if ∆−∆+ < 0 . (5.139) van Leerova derivace je tedy nenulová, pokud je funkce f monotónní a je nulová v těch polích prostorové sítě, kde funkce f prochází extrémy. Důležitou vlastností van Leerovy derivace je, že zachovává monotónnost derivací a zabraňuje vzniku lokálních extrémů: z rovnice (5.139) vyplývá, že pokud ∆− ≈ ∆+ ≈ ∆, potom ⟨∆−∆+⟩ ≈ ∆ a pokud Kapitola 5. Praktické základy numerických výpočtů xA j−1 xA j xB j−1 fB, n j−1 uA, n+a j ∆t 2 IA, n+a j x A j−1 x A j dB vL fB, n j−2 fB, n j fB, n j−1 dB vL xA j−2 xA j−1 xB j−1 xB j−2 xB j xA j xA j+1 Obrázek 5.12a Obrázek 5.12b Obrázek 5.12: Schématické vyobrazení podmínky monotónnosti van Leerovy derivace (rovnice (5.139)) je na obrázku 5.12a: sklon lineární distribuce veličiny f v prostřední výpočetní buňce (čárkovaná čára) je díky van Leerově derivaci (plná čára označená jako dB vL) redukován, takže hodnoty lineárně interpolované, advektované skalární veličiny f na rozhraní buňky musí po celé šířce této buňky „padnout“ mezi hodnoty této veličiny, zprůměrované přes objemy sousedních výpočetních buněk. Obrázek 5.12b znázorňuje prediktorový krok advekce skalární veličiny f (rovnice (5.140)). Veličina je lineárně interpolována (plná červená čára, označená dB vL, znázorňuje sklon van Leerovy derivace) a advektována na rozhraní buňky v polovičním časovém kroku t+∆t/2. Hranice buňky, vyznačené plnou čarou, symbolizují objem látky, advektovaný v čase, zatímco „čárkovaná“ buňka je pevně fixována v prostoru. Poloha lineárního interpolantu I je označena IA, n+a j . Následující korektorový krok (rovnice (5.141)) advektuje veličinu na střed B-sítě v čase t + ∆t. ∆− ≪ ∆+ nebo ∆− ≫ ∆+, potom ⟨∆−∆+⟩ ≈ min (∆−, ∆+). To zaručuje, že hodnoty derivované funkce f na hranicích výpočetní buňky lokálně „nepřestřelí“ střední hodnoty funkce f v sousedních buňkách (viz obrázek 5.12). • Výsledkem prediktorového kroku bude veličina I (nazveme ji například interpolant), která je během prediktorového kroku advektována na rozhraní druhé sítě, tj. z původní B-sítě na A-síť a naopak. Prediktorový krok bude mít v tomto případě tvar IA, n+a j = fB, n j−1 + dB vL xA j − xB j−1 − uA, n+a j ∆t 2 , (5.140) kde u je advekční rychlost (srovnej rovnici (5.118)) a horní index n + a označuje dílčí posun v rámci časového kroku n. • Následující korektorový krok bude dán rovnicí ve tvaru fB, n+1 j = fB, n j − ∆t xA j+1 − xA j I A, n+a j+1 uA, n+a j+1 − I A, n+a j uA, n+a j . (5.141) Po provedení korektorového kroku se tedy skalární veličina f opět vrací na B-síť, tj. uprostřed mezi polohy A(j +1), A(j). Rovnice (5.141) je zároveň numerickou formou jednorozměrné divergence. Obdobné schéma ve dvoj a trojrozměrné verzi se nazývá metoda Kapitola 5. Praktické základy numerických výpočtů 0 0.5 1 1 50 100 ρ x ρ Obrázek 5.13: Časový snímek postupné hustotní vlny, popsané Burgersovou rovnicí (5.109), modelované metodou prediktor-korektor (pomocí rovnic (5.140) a (5.141)). Křivka hustoty je na rozdíl od předchozích schématů stabilní a ostrá, malý sklon čela vlny je dán hustotou výpočetní sítě (vzdáleností sousedních prostorových bodů). Tvar vlny lze korigovat přidáním střihové tzv. Navier-Stokesovy viskozity nebo objemové, tj. v praktických výpočtech používané tzv. numerické viskozity (viz například, LeVeque, 2002, a další). konečných objemů (finite volume method - viz např. LeVeque (2002)). Vícerozměrná podoba rovnice (5.141) (počítaná v souřadnicovém směru j, index k zde symbolizuje všechny ostatní souřadnicové směry, v závislosti na dimenzi výpočetní sítě) by tedy vypadala: fB, n+1 j,k = fB, n j,k − ∆t V B j,k I A, n+a j+1,k uA, n+a j+1,k SA j+1,k − I A, n+a j,k uA, n+a j,k SA j,k , (5.142) kde veličina V B j,k znamená objem jedné tzv. buňky výpočetní sítě (grid cell), středovaný na síti B, veličina SA j,k znamená potom plochu této buňky (nacházející se na síti A), přes niž prochází tok veličiny f ve směru j (viz odstavce 3.1.2, 3.2.2, 3.3.2, 3.7.2, popisující vztahy mezi těmito veličinami v různých souřadnicových soustavách - viz také obrázek 5.12). Pokud bychom modelovali transportní rovnici (5.109) pro vektorovou veličinu, bude postup zcela obdobný, pouze namísto ze sítě B budeme vycházet ze sítě A, prediktorový krok transportuje tuto veličinu na síť B a následný korektorový krok opět na síť A. • Stejná rovnice (5.118), modelovaná uvedenou metodou prediktor-korektor je uvedená na obrázku 5.13. Courantovo číslo cfl = 0.5. • Mimořádnou pozornost je třeba věnovat volbě a zápisu okrajových podmínek (viz příslušné zóny výpočetní sítě na obrázku 5.11). Mezi jejich základní typy patří: – fixní (vtokové) okrajové podmínky, kdy hodnoty v b a g zónách jsou zadány v počátečních podmínkách (počáteční funkci) a dále se nemění. – volné (výtokové) okrajové podmínky, kdy hodnoty v b a g zónách se v každém časovém kroku rovnají hodnotě v první nejbližší výpočetní zóně (zde je vhodné nějakým způsobem pojistit, aby skalární stavové veličiny zde byly vždy nezáporné, případně nenulové). Kapitola 5. Praktické základy numerických výpočtů – periodické okrajové podmínky, kdy hodnoty v zóně 1 se v každém časovém kroku rovnají hodnotám v zóně nj +1, hodnoty v zóně 2 hodnotám v zóně nj +2, hodnoty v zóně 3 (na červené síti) hodnotám v zóně nj + 3 a naopak, hodnoty v zóně nj + 4 hodnotám v zóně 4 a hodnoty v zóně nj + 5 hodnotám v zóně 5. Hodnoty v zónách 3 a nj +3 na černé síti se počítají zvlášť z hydrodynamických rovnic (totéž platí pro další směry). – reflexní (pevná zeď) okrajové podmínky, kdy skalární veličiny q a složky vektorových veličin, které jsou paralelní s daným okrajem, jsou počítány jako q(1) = q(4), q(2) = q(3), q(nj +3) = q(nj +2) a q(nj +4) = q(nj +1). Složky vektorových veličin, které jsou kolmé k danému okraji jsou zde počítány jako q(1) = −q(5), q(2) = −q(4), q(3) = 0, q(nj + 3) = 0, q(nj + 4) = −q(nj + 2), q(nj + 5) = −q(nj + 1). Totéž platí pro další směry. • Numerické schéma, uvedené v tomto odstavci, není zdaleka jediné možné, představuje pouze ukázku tzv. po částech lineární metody (Piecewise Linear Method), kdy numerické diference jsou prokládány úsečkami. Je možné použít i přesnější tzv. po částech parabolickou metodu (Piecewise Parabolic Method - PPM, viz např. Colella & Woodward (1984)), nevýhodou je ovšem zcela zákonitě vyšší výpočetní náročnost, tj. nároky na výkon počítačů, atd. Kromě toho existuje celá řada jiných metod, založená na jiných principech numerického derivování, jiných typech prostorových sítí (například tzv. adaptivní sítě, které se v průběhu času samy mění), nebo k výpočtům vůbec prostorové sítě nevyužívají - např. tzv. SPH metoda (Smooth Particle Hydrodynamics), atd. 5.5.9 Příklady modelování reálných fyzikálních procesů Riemannova-Sodova rázová trubice: Základní testovací úloha pro většinu numerických kódů se snadno ověřitelnými výsledky. Jedná se o uzavřenou trubici, respektive box, rozdělený na dvě části pevnou přepážkou, nazývanou též diafragma ( latinský název pro bránici), kde obě oddělení jsou naplněné plynem s rozdílnými hustotami a tlaky. Náhle přepážka zmizí což vyvolá pohyb plynu předcházený rázovou vlnou šířící se kolmo k rovině původní přepážky ve směru řidšího plynu. Obrázek 5.14 ukazuje snímek průběhu hustoty, kdy počáteční stav plynu (kde index L označuje levou stranu trubice s vyšší počáteční hustotou a tlakem ,index R označuje pravou stranu trubice s nižší počáteční hustotou a tlakem) je zvolen následovně: ρL = 1.0, ρR = 0.125, PL = 1.0, PR = 0.1, γ = 5/3 kde ρ je hustota, P je tlak a γ je adiabatická konstanta. Obrázek 5.15 ukazuje obdobnou testovací úlohu s počátečními průběhy veličin proměnnými v obou směrech x, y, s následujícími parametry: ρL = e−y2 , ρR = 0.125 e−y2 , PL = e−y2 , PR = 0.1 e−y2 , γ = 5/3. Profily hustoty a tlaku v příčném směru y jsou tedy „Gaussovské“. V tomto modelu je ještě přidána „porucha“, způsobená malou počáteční složkou rychlosti Vy = 0.05. Kelvinova-Helmholtzova nestabilita Dalším oblíbeným testovacím problémem je modelování Kelvinovy-Helmholtzovy nestability (viz např. Chandrasekhar, 1961, viz také obrázek 5.16). Pravoúhlá oblast (box) je naplněná plynem se dvěma opačně směřujícími toky, oddělenými lineární pomyslnou diskontinuitou. Okrajové podmínky jsou periodické na čelních okrajích toků, tj. v obrázku 5.16 na stranách se souřadnicemi x = 0 a x = 1, zatímco na zbývajících dvou stranách jsou zvoleny opět jako „pevné stěny“. Počáteční podmínky k úloze jsou převzaty z parametrů, uvedených v instruk- Kapitola 5. Praktické základy numerických výpočtů t = 0.28 1 1.5 2 2.5 3 3.5 4 4.5 5 x -1 -0.5 0 0.5 1 y 0 0.5 1 1.5 2 ρ Obrázek 5.14: Výsledek simulace hustoty ρ v Riemannově-Sodově rázové trubici v případě neviskózního toku v čase t = 0.28 (v jednotkách odpovídajících popisu v odstavci 5.5.9). Počáteční stav plynu je statický a je fixován pevnou přepážkou (nazývanou také diafragma), situovanou v 1/3 délky trubice. Hodnoty hustoty ρ a tlaku P na levé straně přepážky jsou ρL = 1.0, PL = 1.0, hodnoty na pravé straně přepážky jsou ρR = 0.125, PR = 0.1. Celková délka × šířka trubice (boxu) je 4.0 × 2.0 v libovolných jednotkách a je zde použita výpočetní síť s počtem 300×100 zón, okrajové podmínky jsou „pevné stěny“. Tři charakteristické „schody“ v hustotě jsou (zprava doleva) vlastní rázová vlna (jejíž rychlost šíření může až čtyřikrát převyšovat skutečnou rychlost pohybujícího se plynu), dále tzv. kontaktní nespojitost, což je místo původní přepážky, šířící se vlastní rychlostí pohybujícího se plynu a konečně tzv. zřeďující vlna, šířící se opačným směrem (viz grafy stejné testovací úlohy například v Stone & Norman, 1992). t = 5.32 ρ 1 1.5 2 2.5 3 3.5 4 4.5 5 x -1 -0.5 0 0.5 1 y 0 0.2 0.4 0.6 0.8 1 Obrázek 5.15: Barevný graf průběhu hustoty ve stejné Riemannově-Sodově rázové trubici v čase t = 5.32, s přidanou malou počáteční y-ovou složkou rychlosti, Vy = 0.05. Tato „porucha“ způsobí určitou příčnou deformaci toku kde jsou rovněž viditelné Kelvinovy-Helmholtzovy a Rayleigh-Taylorovy nestability. cích ke kódu ATHENA (Stone et al., 2008; Springel, 2013): pro y > 0.5 je podélná rychlost toku Vx,1 = 0.3 a hustota plynu ρ1 = 1, pro y ≤ 0.5 je podélná rychlost toku Vx,2 = −0.3 Kapitola 5. Praktické základy numerických výpočtů t = 18.0 ρ 0 0.2 0.4 0.6 0.8 1 x 0 0.2 0.4 0.6 0.8 1y 0.8 1 1.2 1.4 1.6 1.8 2 2.2 Obrázek 5.16: Barevný graf průběhu hustoty v Kelvinově-Helmholtzově nestabilitě (viz odstavec 5.5.9). Snímek ukazuje tok v pokročilém čase, kdy je nestabilita již zcela nelineární, tj. s plně rozvinutými turbulencemi. a hustota plynu ρ2 = 2. Počáteční tlak P = 1.0 v celé výpočetní oblasti a adiabatický exponent γ = 5/3. Abychom se vyhnuli naprosto ostrému rozhraní mezi oběma toky, definujeme přechodovou oblast která propojí oba toky, popsanou rovnicemi (Springel, 2013): ρ(x, y) = ρ1 + (ρ2 − ρ1) 1 + e y−0.5 σ −1 , (5.143) která charakterizuje počáteční poruchu hustoty ve směru y, podobně Vx(x, y) = Vx,1 + (Vx,2 − Vx,1) 1 + e y−0.5 σ −1 , (5.144) která charakterizuje počáteční poruchu x-ové složky rychlostního pole ve směru y, kde střední kvadratická odchylka rychlosti σ = 0.01. Do těchto počátečních podmínek vložíme periodickou poruchu y-ové složky rychlosti ve tvaru Vy(x, y) = A cos(kx) e−k |y−0.5| , (5.145) s vlnovým číslem k = 2×(2π/L) a amplitudou poruchy A = 0.05. Význam tohoto testu spočívá také ve snadném ověření linearity nárůstu poruchy v rané fázi průběhu úlohy, zatímco později je průběh vývoje poruchy zjevně nelineární, což vylučuje provedení analytických kvantitativních výpočtů. Navíc, „ostrost“ rozhraní mezi oběma protisměrnými toky může sloužit jako indikátor tzv. numerické difúzivity (tj. stabilizace algoritmu advekčního schématu pomocí druhých derivací toku) výpočetního schématu (Stone et al., 2008). 5.6 Paralelizace výpočetních algoritmů Pro urychlení a často dokonce i pro samotné umožnění výpočtu velmi rozsáhlých (jednorozměrných nebo vícerozměrných) algoritmů (kódů) je nezbytné tyto algoritmy paralelizovat, tj. Kapitola 5. Praktické základy numerických výpočtů rozdělit je na více oddílů (procesů) souběžně (paralelně) počítatelných na odpovídajícím počtu strojových procesorů. Principem paralelizace je tedy rozdělit celkovou prostorovou výpočetní oblast (viz například obrázek 5.11) na množství separátních výpočetních oblastí, ranků (ranks). Tyto ranky lze, v závislosti na povaze problému, počítat buď zcela samostatně, nebo, pokud je nutná vzájemná „komunikace“ na styku těchto ranků (například při hydrodynamických výpočtech, kde je nutná návaznost na okrajové podmínky na hranicích celé výpočetní oblasti, jsou na hranicích ranků předávány informace o hodnotách výpočtů v sousedním ranku). Tato „meziranková komunikace“ přitom nepůsobí žádné zásadní zpomalení výpočtu. Existuje řada specializovaných knihoven pro tvorbu paralelních algoritmů, asi nejrozšířenější z nich je knihovna MPI (Message-Passing Interface), včetně několika podtypů, vytvořená skupinou výzkumných a vývojových pracovníků z akademické a průmyslové sféry pro široké využití na paralelně řazených počítačích. Oficiální zdroj knihovny včetně programovacích manuálů je na webové stránce http://www.mpi-forum.org/, pro úvodní seznámení se s knihovnou i s technikami paralelního programování doporučuji skripta Lísal (2007), pro podrobnější studium manuál Pacheco (1998). Knihovna je naprogramována pro přesun dat z jednoho procesu do jiného procesu pomocí kooperativních operací v každém procesu (tzv. point-to-point komunikace mezi dvěma procesy). Hlavním smyslem používání metod paralelního programování je významné urychlení výpočtů jak v případě zcela samostatně pracujících ranků, tak v případech, kdy je nutná vzájemná hraniční „send and receive“ komunikace. Často je výpočet na jednom procesoru dokonce neproveditelný, v případě, že binární soubor indikuje neúměrně rozsáhlý výpočetní proces, nelze zdrojový soubor vůbec zkompilovat. Knihovna MPI je vyvinutá pro různé programovací jazyky, jako jsou Fortran, C, C++, Python a Java, mohou zde být ovšem velké dílčí rozdíly v organizaci výpočtu (například rozdílné pořadí zahrnování prostorových buněk při dvourozměrném paralelním výpočtu v případě jazyka Fortran, kdy výpočet „běží“ v rámci každého ranku nejprve ve „vertikálním“ směru, zatímco v případě jazyka C výpočet „běží“ vždy nejprve „horizontálně“). Protože se v současnosti jedná již o velmi rozsáhlou a specializovanou disciplínu, nebudeme zde detailněji popisovat techniky paralelního programování. V rámci počítačových volně vázaných seskupení (počítačových clusterů), pracujících v České republice, lze standardně docílit současné zapojení až několik stovek procesů. Dostupnými a výkonnými počítačovými clustery například jsou: • METACENTRUM, což je virtuální organizace, která řídí a distribuuje výpočetní infrastrukturu spolupracujících akademických a univerzitních center. Výpočetní a paměťová zařízení jsou spravována v rámci projektu „Czech National Grid Infrastructure“, který je součástí projektu „Projects of Large Infrastructure for Research, Development, and Innovations“ (LM2010005). Součástí počítačového clusteru METACENTRUM jsou: výpočetní centrum Masarykovy univerzity v Brně (centrum CERIT-SC, Loschmidt Laboratories - pracoviště Ústavu experimentální biologie PřF MU a NCBR - Národní centrum pro výzkum biomolekul, PřF MU), výpočetní centrum Západočeské univerzity v Plzni (KIV - Katedra informatiky a výpočetní techniky FAV ZČU, KMA a KKY - Katedra matematiky a Katedra kybernetiky FAV ZČU), výpočetní centrum Jihočeské univerzity v Českých Budějovicích (Přírodovědecká fakulta JU), výpočetní centrum Akademie věd ČR, výpočetní centrum Katedry telekomunikační techniky FEL ČVUT v Praze, atd., zastřešující organizací je e-infrastruktura pro vědu, výzkum a vzdělávání CESNET z.s.p.o. Celkové parametry a výkon clusteru převyšují 10 000 CPU počítačových jader (desítky TB operační paměti RAM) a s paměťovou kapacitou cca 1 PB (1 063 TB) pro operační data a cca 19 PB (19 000 TB) prostoru pro ukládání dat. Oficiální webovou stránkou je http://metavo.metacentrum.cz/. Kapitola 5. Praktické základy numerických výpočtů • Počítačový cluster ANSELM (národní superpočítačové centrum, VŠB - Technická univerzita Ostrava), který sestává z celkem 3 344 počítačových jader CPU (15 TB operační paměti RAM). Oficiální webovou stránkou je http://www.it4i.cz/ • V současnosti je již k dispozici uživatelům nový počítačový cluster SALOMON (národní superpočítačové centrum, VŠB - Technická univerzita Ostrava), který je dle žebříčku TOP 500 oficiálně 40. nejvýkonnějším superpočítačem na světě! Současné parametry: 24 192 jader CPU Intel Xeon (Haswell-EP), 129 TB operační paměti RAM, 52 704 jader akceleračních koprocesorů Intel Xeon Phi s 13,8 TB RAM, 2 PFLOP/s maximální výpočetní výkon, 2 PB diskové kapacity a 3 PB zálohovací páskové kapacity. Oficiální webovou stránkou je http://www.it4i.cz/. Reference Abramowitz, M., & Stegun, I. A. 1972, Handbook of Mathematical Functions Anderson, E., Bai, Z., Bischof, C., et al. 1999, LAPACK Users’ Guide, 3rd edn. (Philadelphia, PA: Society for Industrial and Applied Mathematics) Arfken, G. B., & Weber, H. J. 2005, Mathematical methods for physicists 6th ed. Arsenin, V. J. 1977, Matematická fyzika, https://vufind.lib.cas.cz/Record/000065882 Bracewell, R. N. 2000, The Fourier transform and its applications Butcher, J. C. 2008, Numerical Methods for Ordinary Differential Equations Čermák, L., & Hlavička, R. 2006, Numerické metody Chandrasekhar, S. 1961, Hydrodynamic and hydromagnetic stability Colella, P., & Woodward, P. R. 1984, Journal of Computational Physics, 54, 174 Dormand, J. R., & Prince, P. J. 1980, Elsevier: Journal of Computational and Applied Mathematics, 6, 19 Franců, J. 2011, Parciální diferenciální rovnice, skriptum, FSI VUT Brno Huber, P. J., & Ronchetti, E. M. 2009, Robust Statistics, 2nd ed., http://eu.wiley.com/ WileyCDA/WileyTitle/productCd-0470129905.html Humlíček, J. 2009, Základní metody numerické matematiky, skriptum, MU Brno Kvasnica, J. 2004, Matematický aparát fyziky, Academia, AV ČR, Praha, 2nd edn. Lísal, M. 2007, Paralelní programování s aplikacemi, skriptum, UJEP Ústí nad Labem, http: //physics.ujep.cz/~mlisal/par_progrm/pprg_esf-web.pdf Lenc, M. 2001, Poznámky k přednášce Elektrodynamika a teorie relativity, skriptum MU Brno LeVeque, R. J. 2002, Finite Volume Methods for Hyperbolic Problems, 1st edn. Pacheco, P. S. 1998, A User’s Guide to MPI, http://www.sdsc.edu/~allans/cs260/docs/ MPIusersguide.pdf Pospíšíl, Z. 2006, Rovnice matematické fyziky, skriptum, MU Brno Přikryl, P. 1985, Numerické metody matematické analýzy Reference Springel, V. 2013, Lectures on high-performance computing and numerical modeling, http://obswww.unige.ch/lastro/conferences/sf2013/hands-on-2.pdf Stone, J. M., Gardiner, T. A., Teuben, P., Hawley, J. F., & Simon, J. B. 2008, ApJS, 178, 137 Stone, J. M., & Norman, M. L. 1992, ApJS, 80, 753 Thompson, M. J. 2006, An introduction to astrophysical fluid dynamics van Leer, B. 1977, Journal of Computational Physics, 23, 276 van Leer, B. 1982, in Lecture Notes in Physics, Berlin Springer Verlag, Vol. 170, Numerical Methods in Fluid Dynamics, ed. E. Krause, 507–512 Vitásek, E. 1987, Numerické metody Young, E. C. 1993, Vector and tensor analysis, 2nd ed., http://searchworks.stanford.edu/ view/2470130 http://physics.muni.cz/~czudkova/PRIKLADYZ.pdf http://physics.muni.cz/~chm/priklady.pdf http://physics.muni.cz/~mikulas/zvc.html http://www.sagemath.org/ http://www.salford.ac.uk/ http://www.wolframalpha.com/