AdamátorZápiskyHlášky

Numerická matematika 2

Hlavní téma: numerické řešení okrajových a smíšených úloh pro diferenciální rovnice

Praktická část zkoušky: vyřešit jeden z příkladů

Ústní část zkoušky: klasické věty a důkazy, praktické použití metod

Kdo odevzdá praktickou část do určitého termínu (7. 6. 2024), bude mít u zkoušky o jednu otázku méně (3 → 2)

Termíny zkoušek (je potřeba přihlášení, stejné jako u DIFR)

Obsah

  1. Okrajové úlohy pro diferenciální rovnice
    1. Typy běžných okrajových podmínek
      1. Převod mezi tvary rovnic
      2. Shrnutí poznatků o počátečních úlohách
        1. Metoda střelby
          1. Metoda střelby pro okrajovou podmínku nelineárního typu
            1. Metoda střelby pro soustavu lineárních rovnic
              1. Potíže metody střelby
                1. Metoda střelby na více cílů
                2. Metoda sítí
                  1. Diferenční náhrady nejběžnějších typů derivací
                    1. Náhrady y(x)
                      1. Náhrada y(x)
                        1. Náhrada y4(x)
                        2. Chyba aproximace diferenciálního operátoru
                          1. Metoda energetických nerovností
                            1. Metoda sítí pro další okrajové podmínky
                              1. Metoda sítí pro eliptické parciální diferenciální rovnice
                                1. Metoda sítí pro evoluční úlohy
                                  1. Explicitní schéma
                                    1. Implicitní schéma
                                      1. Crautovo-Nicolsonové schéma
                                        1. Metoda přímek
                                      2. Numerické řešení úloh s advekcí
                                        1. Zákony zachování

                                          Okrajové úlohy pro diferenciální rovnice

                                          Okrajová úloha pro obyčejnou diferenciální rovnici s nelineární pravou stranou
                                          y=f(x,y,y),x(a,b)
                                          y(a)=γ1
                                          y(b)=γ2
                                          Okrajová úloha pro lineární obyčejnou diferenciální rovnici druhého řádu v samoadjungovaném tvaru
                                          (p(x)y)+q(x)y=f(x),x(a,b)
                                          α1p(a)y(a)β1y(a)=γ1
                                          α2p(b)y(b)+β2y(b)=γ2
                                          p,p,q,f𝒞(a,b),p(x)p0>0,q(x)0
                                          αi,βi,γi,αi,βi0,αi+βi>0
                                          Okrajová úloha pro soustavu obyčejných diferenciálních rovnic prvního řádu s nelineární okrajovou podmínkou
                                          y=f(x,y),x(a,b)
                                          r(y(a),y(b))=0
                                          f:1+nn,y:a,bn,r:n+nn

                                          Typy běžných okrajových podmínek

                                          Budeme uvažovat rovnici v samoadjungovaném tvaru.

                                          Podmínky jsou zde uvedené pro oba okraje, ale můžou být i na každém různá.

                                          Dirichletova okrajová podmínka
                                          α1=α2=0,β1=β2=1y(a)=γ1,y(b)=γ2
                                          Neumannova okrajová podmínka
                                          α1=α2=1,β1=β2=0p(a)y(a)=γ1,p(b)y(b)=γ2
                                          Předepisuje „tok“ veličiny skrz hranici
                                          Newtonova/Robinova okrajová podmínka
                                          (α10β10)(α20β20)
                                          Poznámka Proč je u samoadjungované úlohy β1 a +β2? Protože u každého okraje chceme, aby „tok“ směřoval ven.

                                          Převod mezi tvary rovnic

                                          Každá obyčejná diferenciální rovnice vyššího řádu se dá převést na soustavu prvního řádu. Viz DIFR.

                                          y=f(x,y,y)
                                          z1=z2,z2=f(x,z1,z2)

                                          Každá lineární obyčejná diferenciální rovnice druhého řádu jde převést do samoadjungovaného tvaru.

                                          Shrnutí poznatků o počátečních úlohách

                                          Jelikož ve skutečnosti budeme řešit okrajové úlohy, proměnnou budeme značit x, nikoliv t.

                                          Základní tvar počáteční úlohy:

                                          y=f(x,y),y(x0)=y0
                                          f:Dfn,Df1+n oblast,[x0,y0]Df,y:n,f𝒞(Df),yf𝒞(Df)

                                          Na DIFR jsme si dokázali:

                                          Věta o existenci a jednoznačnosti Za daných předpokladů existují δ+,φ:(x0δ,x0+δ)n takové, že φ je na (x0δ,x0+δ) jediné řešení rovnice. Navíc opakovaným použitím tvrzení lze řešení rozšířit až na neprodloužitelný rozsah (m1(x0,y0),m2(x0,y0)), pro nějž platí alespoň jedna z podmínek (zvlášť pro obě hranice, uvádíme jen pro pravou):
                                          Věta o spojité závislosti a diferencovatelnosti podle počátečních podmínek Nechť [x^0,y^0]Df a r1,r2(m1(x^0,y^0),m2(x^0,y^0)). Pak řešení počáteční úlohy pro proměnlivé [x0,y0], které označíme φ(x;x0,y0), spojitě závisí na hodnotách x0,y0 v bodě [x^0,y^0] a je zde spojitě diferencovatelná podle složek y0 pro xr1,r2.
                                          Poznámka Řešení nemusí být diferencovatelné podle x0, protože jsme nepředpokládali spojitost pravé strany podle x0.
                                          Poznámka Existující derivace (y0)kφ(x;x^,y^) splňují tzv. úlohu ve variacích. Tu odvodíme tak, že dosadíme φ do počáteční úlohy:
                                          xφ(x;x0,y0)=f(x,φ(x;x0,y0)),φ(x0;x0,y0)=y0
                                          a zderivujeme po složkách podle y0:
                                          (y0)kxφi(x;x0,y0)=l=1nylfi(x,φ(x;x0,y0))(y0)kφl(x;x0,y0),(y0)kφi(x0;x0,y0)=δi,k
                                          Když se na tuto úlohu podíváme pod vlivem dostatečného množství halucinogenů, uvidíme, že se v ní skrývá matice, takže je to soustava lineárních diferenciálních rovnic prvního řádu: (tohle je můj zápis, ne Benešův; písmenem 𝛁 značím matici parciálních derivací)
                                          𝛁y0xφ(x;x0,y0)=𝛁yf(x,φ(x;x0,y0))𝛁y0φ(x;x0,y0)
                                          Poznámka numerické řešení počáteční úlohy Zdiskretizujeme si časovou proměnnou:
                                          xkx0+kh,h+,k{0,,NF}
                                          Aproximace funkčních hodnot můžeme získat Eulerovou metodou:
                                          yk+1yk+hf(xk,yk)
                                          Ta je jednoduchá, ale má malou přesnost; přesto se často dá využít. Pro přesnější výsledek můžeme využít například Runge-Kuttovu metodu čtvrtého řádu:
                                          K1f(xk,yk)
                                          K2f(xk+h2,yk+h2K1)
                                          K3f(xk+h2,yk+h2K2)
                                          K4f(xk+h,yk+hK3)
                                          yk+1yk+h6(K1+2K2+2K3+K4)
                                          Teoretické odvození této metody je na cvičení. Pro naše potřeby je naprosto postačující. Pozor, ve WikiSkriptech jsou ty vzorce prý napsané špatně! A Kutt je německé jméno, tedy čte se [kut], nikoliv [kʌt]!

                                          Metoda střelby

                                          Jako jednoduchou typovou úlohu vezmeme jednu rovnici druhého řádu s Dirichletovými okrajovými podmínkami:

                                          y=f(x,y,y),x(a,b),y(a)=γ1,y(b)=γ2

                                          Myšlenka je taková, že si zvolíme hodnotu derivace na jednom okraji a budeme úlohu řešit jako počáteční. Jakmile se dostaneme na konec neboli na druhý okraj, nejspíš zjistíme, že jsme se dostali jinam, než jsme chtěli. Tak zvolíme jinou počáteční derivaci a zkusíme znovu.

                                          Formálněji: Budeme opakovaně řešit počáteční úlohu (pomocí Eulerovy nebo Runge-Kuttovy metody)

                                          y=f(x,y,y),y(a)=γ1,y(a)=α

                                          Tím dostaneme nějaké řešení y(x;α) a chceme najít α takové, aby y(b;α)=γ2. To můžeme hledat například pomocí metody půlení intervalu nebo Newtonovy metody.

                                          Půlení intervalu tedy bude fungovat tak, že najdeme α¯1,α¯2 tak, aby y(b;α¯1)<γ2 a y(b;α¯2)>γ2. Nastavíme α1α¯1,α2α¯2,αα1+α22. Je-li y(b;α)<γ2, do další iterace vezmeme α1α, jinak α2α. Končíme, jakmile vzdálenost bude menší než nějaká tolerance. Většinou se používá relativní tolerance 106.

                                          Ale pomocí Newtonovy metody to často konverguje rychleji. Rovnici y(b;α)=γ2 můžeme zapsat jako F(α)=0, kde F(α)y(b;α)γ2. Potom stačí iterovat podle vzorečku αk+1αk(F(αk))1F(αk). Akorát si musíme napočítat derivaci:

                                          F(α)=α(y(b;α)γ2)=αy(b;α)

                                          Tuto derivaci určíme řešením úlohy ve variacích.

                                          Nebo pokud se nám nechce hledat derivaci tímhle způsobem, můžeme ji zkusit aproximovat podle definice, ovšem nic nám nezaručuje, že to bude dobrá aproximace:

                                          F(αk)F(αk)F(αk1)αkαk1

                                          Newtonova metoda poskytuje posloupnost (αk) konvergující k řešení, ale |F(αk)| nemusí konvergovat monotónně. Pokud nám to vadí, můžeme použít modifikaci, jejíž myšlenka je v tom, že se budeme pohybovat o menší kus, abychom nepřestřelili:

                                          αk+1αkλk(F(αk))1F(αk),λk(0,1

                                          Samozřejmě je nutné správně zvolit λk. Označme

                                          Δαk(F(αk))1F(αk)(o kolik se posouváme při normální Newtonově metodě)
                                          Φ(α)F(α)22=j=1nFj(α)2(jakási chyba aproximace)
                                          φ(λ)Φ(αk+λΔαk)(chyba, když se posuneme o $\lambda$-násobek normálního kroku)

                                          Spočteme si

                                          φ(λ)=2j=1nFj(αk+λΔαk)l=1nαlFj(αk+λΔαk)(Δαk)l=2F(αk+λΔαk)𝖳(F(αk+λΔαk)Δαk)
                                          φ(0)=2F(αk)𝖳(F(αk)Δαk)=2F(αk)𝖳(F(αk)(F(αk))1F(αk))=2Φ(αk)<0

                                          Jelikož φ𝒞1, jistě najdeme λ0+ takové, že φ(λ)<0 pro λ0,λ0).

                                          Algoritmus bude vypadat tak, že nejprve zvolíme λk=1. Pokud Φ(αk+λkΔαk)<Φ(αk), spočteme si αk+1αk+λkΔαk a budeme normálně pokračovat. Pokud ne, pokusíme se najít vhodné λ – například budeme opakovaně půlit, až bude nerovnost platit (což z teorie plyne, že nastane). Každopádné skončíme, až bude Φ(αk)<ε2, kde ε je zadaná tolerance.

                                          Metoda střelby pro okrajovou podmínku nelineárního typu

                                          Typová úloha:

                                          y=f(x,y),r(y(a),y(b))=0,f:1+nn,r:n+nn,n2

                                          Parametry funkce r budeme značit ξ,η.

                                          Příklad
                                          y1=y2
                                          y2=10xy120x2
                                          y1(a)22=y2(b)24=0

                                          Budeme řešit podobnou počáteční úlohu, ale s tím, že α je tentokrát vektor:

                                          y=f(x,y),y(a)=α

                                          Chceme najít správné α pomocí okrajové podmínky. Budeme tedy řešit rovnici

                                          r(α,y(b;α))=0

                                          Tu budeme řešit pomocí Newtonovy metody, kde vezmeme F(α)r(α,y(b;α)).

                                          F(αk)i,j=αjFi(αk)=ξjri(αk,y(b;αk))+l=1nηlri(αk,y(b;αk))αjyl(b;αk)

                                          Ke spočtení tohoto potřebujeme řešit soustavu ve variacích:

                                          xαjyi(x;α)=l=1nylfi(x,y(x;α))αjyl(x;α),αjyi(a;α)=δi,j

                                          Metoda střelby pro soustavu lineárních rovnic

                                          y=𝐀(x)y+b(x),𝐔y(a)+𝐕y(b)=c
                                          𝐀:a,bn×n,𝒞0
                                          b:a,bn,𝒞0
                                          (b jako beneš není schopný značit různé věci různými písmeny)
                                          cn,𝐔,𝐕n×n,h(𝐔)+h(𝐕)=n

                                          Opakovaně řešíme počáteční úlohu

                                          y=𝐀(x)y+b(x),y(a)=α

                                          Využijeme toho, že kdyby bylo jen y=𝐀(x)y, dokážeme soustavu řešit analyticky pomocí matice fundamentálního systému:

                                          Φ(x)[v11(x)vn1(x)v1n(x)vnn(x)]

                                          Kdž najdeme partikulární řešení y0(x) rovnice y=𝐀(x)y+b(x), můžeme vyjádřit řešení alfové úlohy:

                                          y(x;α)=Φ(x)α+y0(x)

                                          Teď budeme hledat správné α:

                                          𝐔α+𝐕(Φ(b)α+y0(b))=c
                                          (𝐔+𝐕Φ(b))α=c𝐕y0(b)

                                          To je prostě lineární soustava, jejíž řešitelnost je daná povahou matice 𝐔+𝐕Φ(b).

                                          Potíže metody střelby

                                          Zjevná nevýhoda je v tom, že malé rozdíly na začátku mohou způsobit velké rozdíly na konci. Ukážeme si to na konkrétní úloze.

                                          Příklad Mějme diferenciální rovnici
                                          y100y=0,y(0)=1,y(10)=1
                                          Pro ilustraci ji nejprve vyřešíme analyticky. Máme fundamentální systém y(x)=C1e10x+C2e10x. Z okrajových podmínek určíme konstanty:
                                          y(x)=1e100e100e100e10x+e1001e100e100e10x
                                          Zkusme nyní použít metodu střelby. Budeme tedy řešit počáteční úlohu
                                          y100y=0,y(0)=1,y(0)=α
                                          Tu ve skutečnosti taky vyřešíme analyticky, abychom získali obecnou představu, jak to bude dopadat pro různé hodnoty α. Řešení bude opět ve tvaru y(x;α)=C1e10x+C2e10x a dopočtením konstant dostaneme
                                          y(x;α)=10+α20e10x+10α20e10x
                                          Dosazením druhé okrajové podmínky můžeme dopočíst správnou hodnotu α:
                                          10+α*20e100+10α*20e100=1
                                          α*=2010e10010e100e100e100=10+201e100e100e100
                                          Zlomek vpravo je téměř 0, takže při numerickém výpočtu na počítači se toto číslo zaokrouhlí na α0=10. Podívejme se, kolik nám v takovém případě vyjde druhá okrajová podmínka:
                                          y(10;α0)=101020e100+10+1020e100=e100
                                          To je téměř 0, takže k 1 to má opravdu hodně daleko. Tudíž prakticky pro tento příklad nemá metoda střelby šanci se trefit.

                                          Metoda střelby na více cílů

                                          To, co nám u metody střelby způsobilo potíže, byl příliš dlouhý interval. Tak co kdybychom si ho nějakým způsobem rozsekali?

                                          Vezměme si jako typovou úlohu opět rovnici s nelineární vazbou:

                                          y=f(x,y),r(y(a),y(b))=0,x(a,b)

                                          Rozdělíme interval a,b na m částí, které nemusí být stejně dlouhé. Budeme opakovaně řešit počáteční úlohu na intervalech xk1,xk,km^ s řešením y(x;αk). Úlohy budou vypadat takto:

                                          y=f(x,y),y(xk1)=αk,x(xk1,xk)

                                          Zároveň je musíme nějak provázat mezi sebou. K tomu si přidáme podmínky:

                                          y(xk;αk+1)=αk,km1^
                                          r(α1,y(xm;αm1))=0

                                          Vzniklou soustavu budeme řešit – jak jinak – Newtonovou metodou. Máme funkci

                                          F(α)=[y(x1;α0)α1y(x2;α1)α2y(xm1;αm2)αm1r(α1,y(xm;αm1))]

                                          Newtonova iterace bude mít tvar

                                          αl+1=αl(F(αl))1F(αl)

                                          Hodnotu F(αl) určíme řešením jednotlivých úloh (třeba Runge-Kuttovou metodou). S derivací už to bude horší:

                                          F(α)=((αk)jFi(α))i(mn)^,km^,jn^=(𝐆1𝐈𝐆2𝐈𝐆3𝐆m1𝐈𝐀𝐁)
                                          (𝐆k)i,j(αk)jyi(xk;αk),𝐀i,jξjri(α1,y(xm;αm)),𝐁i,js=1nηsri(α1,y(xm;αm))(αm)jys(xm;αm)

                                          Teď se pořádně nadechneme a odvodíme si úlohu ve variacích:

                                          xy(x;αk)=f(x,y(x;αk)),y(xk1;αk)=αk,x(xk1,xk)
                                          x(αk)jyi(x;αk)=s=1nyjfi(x,y(x;αk))(αk)jyj(x;αk),(αk)jyi(xk1;αk)=δi,j
                                          Tyto úlohy můžeme bez záruky zkusit nahradit definicí derivace:
                                          (αk)j(xk,αk)yi(xk;αk)y(xk;αk((αk)j(αk1)j)ej)(αk)j(αk1)j

                                          Metoda sítí

                                          Alternativní názvy: metoda konečných diferencí, metoda konečných rozdílů

                                          Metoda spočívá v tom, že aproximujeme derivace diferencemi v konečně mnoha bodech a dostaneme tím algebraicky řešitelnou soustavu rovnic.

                                          Jako typovou úlohu si vezmeme naši oblíbenou samoadjungovanou rovnici:

                                          (p(x)y)+q(x)y=f(x),y(a)=γ1,y(b)=γ2,x(a,b)
                                          p,p,q,f𝒞(a,b),q(x)0,p(x)c0>0,xa,b

                                          Nejprve diskretizujeme množinu a,b tím, že na ni rozmístíme vnější a vnitřní síť uzlů (pro jednoduchost je rozmístíme rovnoměrně):

                                          ω¯h{a+jh|j=0,,m}
                                          ωh{a+jh|j=1,,m1}

                                          m je počet dílů, h je velikost oka sítě. Tyto dvě sítě se liší v tom, jestli obsahují hraniční uzly:

                                          γhω¯hωh={a,a+mh}

                                          Diferenciální výrazy diskretizujeme pomocí Taylora (taky by to šlo pomocí Lagrange, ale Taylor je jednodušší na odvození a zapamatování). Nechť f^𝒞m(0,1), potom

                                          f^(1)=k=1m1f^k(0)k!+m01sm1f^m(1s)m!ds

                                          (S tímto tvarem zbytku jsme se v MAN2 nesetkali, ale údajně se dá snadno odvodit.)

                                          Pro naše účely si vezmeme f^(t)y(x+th),t0,1. Spočteme si

                                          f^k(t)=yk(x+th)hk

                                          Použitím vzorečku máme

                                          y(x+h)=k=1m1yk(x)hkk!+m01sm1ym(x+(1s)h)hmm!dsRm(x,h)

                                          Všimněme si, že výraz Rm(x,h)hm je omezený.

                                          Definice Landaův symbol 𝒪 Pokud funkce g na okolí nuly H0 splňuje
                                          (K+)(α0+)(xH0)(|g(x)xα|K)
                                          potom říkáme, že g se na H0 chová jako 𝒪(xα) a píšeme g(x)=𝒪(xα).
                                          Definice Landaův symbol Pokud funkce g na okolí nuly H0 pro nějaké α0+ splňuje
                                          limx0g(x)xα=0
                                          potom říkáme, že g se na H0 chová jako (xα) a píšeme g(x)=(xα).
                                          Poznámka Rm(x,h)=𝒪(hm)

                                          Diferenční náhrady nejběžnějších typů derivací

                                          Náhrady y(x)

                                          Pro m=2 máme

                                          y(x+h)=y(x)+y(x)h+R2(x,h)
                                          y(x)=y(x+h)y(x)h+𝒪(h)

                                          Provedeme-li stejný postup s náhradou h za h, dostaneme

                                          y(x)=y(x)y(xh)h+𝒪(h)

                                          Pro m=3 dostaneme

                                          y(x±h)=y(x)±y(x)h+y(x)h22+R3(x,±h)

                                          Odečteme-li tyto dvě rovnosti (pro + a ) od sebe, dostaneme

                                          y(x+h)y(xh)=2y(x)h+R3(x,h)R3(x,h)
                                          y(x)=y(x+h)y(xh)2h+𝒪(h2)

                                          Shrneme si všechny náhrady první derivace do tabulky:

                                          NázevNáhradaChyba
                                          dopředná diferenceyx(x)y(x+h)y(x)h𝒪(h)
                                          zpětná diferenceyx¯(x)y(x)y(xh)h𝒪(h)
                                          centrální diferenceyx˚(x)y(x+h)y(xh)2h𝒪(h2)

                                          Náhrada y(x)

                                          Pro m=4 máme

                                          y(x±h)=y(x)±y(x)h+y(x)h22±y(x)h36+R4(x,±h)

                                          Sečtením obou rovností dostáváme

                                          y(x+h)+y(xh)=2y(x)+y(x)h2+R4(x,h)+R4(x,h)
                                          y(x)=y(x+h)2y(x)+y(xh)h2+𝒪(h2)

                                          Zavedeme tedy centrální druhou diferenci:

                                          yx¯x(x)y(x+h)2y(x)+y(xh)h2

                                          Toto označení sice vypadá divně, ale dává smysl, protože můžeme snadno ověřit, že (yx¯)x(x)=yx¯x(x).

                                          Náhrada y4(x)

                                          Podobným způsobem odvodíme centrální čtvrtou diferenci:

                                          y4(x)=yx¯xx¯x(x)+𝒪(h2)
                                          yx¯xx¯x(x)y(x+2h)4y(x+h)+6y(x)4y(xh)+y(x2h)h4

                                          V našem příkladu použijeme náhradu (p(x)y)(pyx¯)x(x) (ale to není jediná možnost). Speciálně pro p konstantní máme (pyx¯)x(x)=pyx¯x(x). Dokážeme si, že to dobře funguje i pro nekonstantní.

                                          Věta Nechť p,y jsou dostatečně regulární, konkrétně p𝒞3,y𝒞4, potom
                                          (py)(x)=(pyx¯)x(x)+𝒪(h)
                                          Důkaz Použitím Taylora dostáváme
                                          (py)(x+h)=p(x)y(x)+(py)(x)h+(py)(x)h22+R~3(x,h)
                                          y(x±h)=y(x)±y(x)h+y(x)h22+R3(x,h)
                                          Jelikož výraz R~3(x,h) obsahuje třetí derivaci p a čtvrtou derivaci y, k jeho asymptotickému omezení požadujeme p𝒞3,y𝒞4. Vyjádříme si
                                          (py)(x)=(py)(x+h)py(x)h(py)(x)h2R~3(x,h)h
                                          y(x)=y(x)y(xh)h+y(x)h2+R3(x,h)h
                                          y(x+h)=y(x+h)y(x)h+y(x+h)h2+R3(x+h,h)h
                                          Dosadíme, čímž vznikne extrémně krásný výraz:
                                          (py)(x)=1h(p(x+h)y(x+h)y(x)hp(x)y(x)y(xh)h)(py)(x)h2𝒪(h)R~3(x,h)h𝒪(h2)+1h(p(x+h)(y(x+h)h2𝒪(h)+R3(x+h,h)h𝒪(h2))p(x)(y(x)h2𝒪(h)+R3(x,h)h𝒪(h2)))
                                          Teď máme trochu problém, protože výrazy třídy 𝒪(h) v poslední hnusné závorce po vydělení h dávají 𝒪(1). Budeme si muset poradit tím, že jejich rozdíl umlátíme pomocí věty o přírůstku funkce.
                                          1h()=p(x+h)y(x+h)p(x)y(x)2=(py)(ξ)h2=𝒪(h),ξ(x,x+h)
                                          Tím už jsme všechny nechtěné výrazy asymptoticky omezili jako 𝒪(h), čímž dostáváme znění věty.

                                          Nyní si můžeme sestavit algebraickou rovnici pro aproximaci řešení v uzlech sítě.

                                          Definice Síťová funkce je zobrazení u:ω¯h. Značíme u(a+jh)uj. Potom (u0,,um) je vektor síťové funkce. Množinu všech síťových funkcí s rozestupem h budeme značit h.

                                          Diferenciální rovnici omezíme na uzly sítě ω¯h:

                                          (py)(a+jh)+q(a+jh)y(a+jh)=f(a+jh),j=1,,m1

                                          Provedeme-li náhradu konečnou diferencí a označíme si síťové funkce, dostaneme

                                          ((pyx¯)x)j+𝒪(hα)+qjyj=fj

                                          Se členem 𝒪(hα) toho moc neuděláme, protože vůbec netušíme, co v něm je. Můžeme se spoléhat akorát na to, že když zvolíme dostatečně malé h, tak bude taky dostatečně malý. Tudíž se na něj vykašleme. Ale tím pádem už nemáme přesné řešení, což zdůrazníme tím, že funkci f přejmenujeme na u. Rovnici poté můžeme vyjádřit ve vektorovém tvaru:

                                          (pux¯)x+qu=f,u0=γ1,um=γ2

                                          Pokud si do toho dosadíme naše krásné vyjádření (pux¯)x, dostaneme soustavičku

                                          u0=γ1p1h2u0+p1+p2h2u1p2h2u2+q1u1=f1p2h2u0+p2+p3h2u2p3h2u3+q2u2=f2pjh2u0+pj+pj+jh2ujpj+jh2uj+j+qjuj=fjpm1h2u0+pm1+pmh2um1pmh2um+qm1um1=fm1um=γ2

                                          Vidíme, že vznikla soustava lineárních rovnic s tridiagonální maticí. Budeme ji řešit maticovou faktorizací. Kompletně si všechno přeznačíme, abychom měli dost písmenek:

                                          u0=ϰ1u1+μ1
                                          Ajuj1Cjuj+Bjuj+1=Fj,j=1,,m1
                                          um=ϰ2um1+μ2

                                          přičemž pro tuto konkrétní úlohu máme

                                          ϰ1,2=0,μ1,2=γ1,2
                                          Aj=pjh2,Cj=pj+pj+1h2qj,Bj=pj+1h2,Fj=fj,j=1,,m1

                                          Teď to vypadá, že jame si tam ϰ1,2 zaváděli zbytečně, ale u jiné okrajové podmínky by se mohly objevit.

                                          Řešení funguje tak, že zvolíme α1ϰ1,β1μ1 a budeme rekurentně počítat

                                          αj+1BjCjαjAj,βj+1βjAj+FjCjαjAj,j=1,,m1

                                          Potom si zpětně napočteme

                                          umμ2+ϰ2βm1αmϰ2
                                          uj1αjuj+βj,j=m,,1

                                          Tím jsme našli řešení. Teď vyvstává otázka, jak velké chyby jsme se dopustili. Chceme porovnat skutečné řešení y s řešením v podobě síťové funkce u, které jsme našli. Samozřejmě potíž je v tom, že y je definovaná na a,b, zatímco u jen na ω¯h. Zjevné řešení je prostě zúžit y na ω¯h. Druhá možnost je nějakým způsobem rozšířit u na a,b.

                                          Definice Operátor restrikce je zobrazení
                                          𝒫h:𝒞(a,b)h,𝒫hyy|ω¯h
                                          Tedy tento operátor vezme spojitou funkci a vytvoří z ní síťovou funkci, která odpovídá jejím hodnotám v bodech sítě.   𝑦 𝒫ₕ 𝑦
                                          Definice Operátor po částech konstantního rozšíření je zobrazení
                                          Sh:hL2((a,b)),Shu(x)uj,x(a+jhh2,a+jh+h2)
                                          Tedy tento operátor vezme síťovou funkci a vytvoří z ní po částech konstantní funkci tak, že kolem každého bodu udělá rovnou plošku. 𝑆ₕ 𝑢 𝑢
                                          Definice Operátor po částech lineárního rozšíření je zobrazení
                                          Qh:h𝒞(a,b),Qhu(x)uj1+ujuj1h(xa(j1)h),xa+(j1)h,a+jh
                                          Tedy tento operátor vezme síťovou funkci a vytvoří z ní po částech lineární spojitou funkci tak, že body pospojuje do lomené čáry. 𝑄ₕ 𝑢   𝑢

                                          My budeme pro jednoduchost porovnávat jen pomocí operátoru restrikce. K tomu potřebujeme způsob, jak měřit síťové funkce.

                                          Definice Nechť pro každé h(0,1 je h norma na h. Tyto normy jsou konzistentní, pokud existuje norma 0 na 𝒞(a,b) taková, že pro všechna y𝒞(a,b) je
                                          limh0+𝒫hyh=y0
                                          Příklad Pro uh označme
                                          u0,hmax{|uj||j=0,,m}
                                          a vezměme obyčejnou maximovou normu:
                                          y0max{|y(x)||xa,b}
                                          Potom 0,h jsou konzistentní normy konvergující k 0.
                                          Příklad Pro uh můžeme zkusit vzít eukleidovskou normu
                                          u2,hj=0muj2
                                          Pokud ale do této normy budeme strkat například konstantní funkce s čím dál menším h, půjde to k nekonečnu. Tudíž tato norma není konzistentní. Spravíme to tím, že si ji upravíme:
                                          u2,hj=1m1huj2+h2(u02+um2)
                                          Když si výraz uvnitř odmocniny nakreslíme, jedná se vlastně o Riemannův integrální součet funkce y2, tudíž to bude konvergovat k normě 2.

                                          Zapíšeme obecně přesné řešení:

                                          Ly=f,x(a,b),ly|x=a=γ1,ly|x=b=γ2

                                          a řešení diferenční úlohy:

                                          Lhu=f,xωh,lhu|0=γ1,lhu|m=γ2

                                          Okrajové podmínky například pro x=a můžou mít tvar:

                                          Dirichletova
                                          ly|x=a=y(a),lhu|0=u0
                                          Neumannova
                                          ly|x=a=p(a)y(a),lhu|0=p0ux,0
                                          Newtonova
                                          ly|x=a=α1p(a)y(a)β1y(a),lhu|0=α1p0ux,0β1u0

                                          Chyba aproximace diferenciálního operátoru

                                          Definice Nechť y𝒞(a,b). Chyba aproximace diferenciálního operátoru L uvnitř (a,b) a l na okrajích je síťová funkce ψ:ω¯h daná výrazy
                                          ψLh(𝒫hy)𝒫h(Ly),xωh
                                          ψ0lh(𝒫hy)|0𝒫h(Ly)|0
                                          ψmlh(𝒫hy)|m𝒫h(Ly)|m
                                          Poznámka Pro konkrétní tvary L a l výše máme v uzlech ωh
                                          ψ=(p(𝒫hy)x¯)x+q𝒫hy𝒫h((py)+qy)=(p(𝒫hy)x¯)x+𝒫h((py))=𝒪(hα)
                                          kde α=2 pro p konstantní a α=1 pro p nekonstantní.
                                          Příklad Pro Newtonovu okrajovou podmínku:
                                          ψ0=α1po(𝒫hy)x,0β1(𝒫hy)0𝒫h(α1p(a)y(a)β1y(a))=α1p0((𝒫hy)x,0(𝒫hy(a)))=𝒪(h)
                                          ψm=α1po(𝒫hy)x,mβ1(𝒫hy)m𝒫h(α1p(a)y(a)β1y(a))=α1pm((𝒫hy)x,m(𝒫hy(a)))=𝒪(h)
                                          Definice Nechť h je konzistentní norma. Síťová funkce u konverguje k funkci y, pokud
                                          limh0+u𝒫hyh=0
                                          Pokud existuje α+ takové, že u𝒫hy=𝒪(hα), potom u konverguje s přesností řádu α k y.
                                          Poznámka Diferenční úlohu lze zapsat jako 𝐀hu=φ, kde 𝐀h je matice závisející na ω¯h. Řešme tu samou s jinou pravou stranou: 𝐀hv=ψ. Obě řešení můžeme porovnat jako
                                          uv=𝐀h1(φψ)
                                          Aby byla úloha stabilní, požadujeme, aby malá změna φψ vedla k malé změně uv bez ohledu na výběr sítě. Chceme tedy najít konstantu M+ nezávislou na ω¯h a vhodné konzistentní normy 1,h,2,h takové, že uv1,hMφψ2,h.
                                          Definice Diferenční schéma je korektní, pokud existuje h0+ splňující
                                          • pro každé h(0,h0] existuje množina Φm+1 taková, že pro všechna φΦ má úloha 𝐀hu=φ jediné řešení (neboli 𝐀h je regulární)
                                          • existuje M+ nezávislé na h a konzistentní normy 1,h,2,h takové, že
                                            h(0,h0),φ,ψΦ:𝐀h1φ𝐀h1ψ1,hMφψ
                                          Toto M se nazývá konstanta stability.
                                          Věta Laxova Nechť diferenční schéma je korektní a jeho chyba aproximace v nějaké konzistentní normě konverguje k nule. Potom řešení u diferenční úlohy konverguje k přesnému řešení y diferenciální rovnice.
                                          Důkaz Odečteme diferenční úlohu od diferenciální úlohy zúžené na síť:
                                          𝒫h(Ly)Lhu=0,𝒫h(ly)|0lhu|0=0,𝒫h(ly)|mlhu|m=0
                                          Použijeme definici chyby aproximace:
                                          Lh(𝒫hy)ψLhu=0,lh(𝒫hy)|0ψ0lhu|0=0,lh(𝒫hy)|mψmlhu|m=0
                                          Z linearity Lh,lh to můžeme přepsat do tvaru
                                          Lh(𝒫hyu)=ψ,lh(𝒫hyu)|0=ψ0,lh(𝒫hyu)|m=ψm
                                          Označíme z𝒫hyu:
                                          Lhz=ψ,lhz|0=ψ0,lhz|m=ψm
                                          Z předpokladu korektnosti máme
                                          z1,hMψ2,h
                                          Z předpokladu konvergence je limh0+ψ2,h=0, takže i limh0+𝒫hyu1,h=0.
                                          Definice skalární součin síťových funkcí Pro u,vh si zavedeme extrémně prokleté značení
                                          (u,v)hj=1m1hujvj,uh(u,u)h
                                          (u,v]j=1mhujvj,u(u,u]
                                          [u,v)j=0m1hujvj,u[u,u)
                                          [u,v](u,v)h+h2(u0v0+umvm),u[u,u]
                                          To, že u toho prvního je index h a u ostatních ne, naneštěstí není překlep.
                                          Věta bu bun seki-bun Pro u,vh platí
                                          (ux,v)h=umvmu1v0(u,vx¯]
                                          (ux¯,v)h=um1vmu0v0[u,vx)
                                          Důkaz
                                          (ux,v)h=j=1m1h(uj+1ujh)vj=j=1m1uj+1vjj=1m1ujvj=j=2mujvj1j=1m1ujvj=j=1muj(vj1vj)u1v0+umvm=j=0m1hujvj+1vjhu1v0+umvm=(u,vx¯]u1v0+umvm
                                          (ux¯,v)h=j=1m1h(ujuj1h)vj=j=1m1ujvjj=1m1uj1vj=j=1m1ujvjj=0m2ujvj+1=j=0m1uj(vjvj+1)u0v0+um1vm=j=0m1hujvj+1vjhu0v0+um1vm=[u,vx)u0v0+um1vm
                                          Věta první Greenova formule Nechť p,u,vh. Potom
                                          ((pux¯)x,v)h=(pux¯,vx¯]+pm(ux¯)mvmp1(ux¯)1v0
                                          Důkaz Použijeme bu bun seki-bun s upux¯,vv.
                                          Věta druhá Greenova formule Nechť p,u,vh. Potom
                                          ((pux¯)x,v)h(u,(pvx¯)x)h=pm((ux¯)mvmum(vx¯)m)p1((ux¯)1v0u0(vx¯)1)
                                          Důkaz Použijeme první Greenovu formuli, nejdříve normálně a poté s prohozením uv. Potom jen upravíme to, co vyjde.
                                          Poznámka Budeme používat normy u0,hmaxj=0,,m|uj| a uh,u definované výše.
                                          Lemma první Sobolevova nerovnost Definujme
                                          h*{u:ω¯h|u0=um=0}
                                          Potom pro všechna uh* platí
                                          u0,hba2ux¯
                                          Důkaz Nejprve pro ilustraci dokažme podobné tvrzení pro f𝒞(a,b),f(a)=f(b)=0. Pro každé xa,b platí
                                          f(x)f(a)=axf
                                          Podle Schwarzovy nerovnosti (se skalárním součinem f,gabfg) máme
                                          |f(x)|ab|f|ab12ab|f|2baf2
                                          Nyní vezměme uh*. Potom
                                          j=1kh(ux¯)j=j=1khujuj1h=j=1kujj=1kuj1=uku0
                                          a podobně
                                          j=k+1mh(ux¯)j=j=k+1mhujuj1h=umuk
                                          Jelikož jsme předpokládali u0=um=0, můžeme si z těchto vztahů vyjádřit uk dvěma způsoby:
                                          uk=j=1kh(ux¯)j=j=k+1mh(ux¯)j
                                          Z toho zjevně pro libovolné λ[0,1] platí
                                          uk2=λ(j=1kh(ux¯)j)2+(1λ)(j=k+1mh(ux¯)j)2
                                          Aplikujeme Schwarzovu nerovnost (se skalárním součinem, který je podobný jako (,], ale s menším rozsahem sumáže):
                                          uk2λ(j=1kh)kh(j=1kh(ux¯)j2)+(1λ)(j=k+1mh)(mk)h(j=k+1mh(ux¯)j2)
                                          Zvolíme-li speciálně λ1km, potom λkh=(1λ)(mk)h, takže
                                          uk2(1km)khj=1mh(ux¯)j2ux¯2=(1km)kmg(km)(ba)ux¯2
                                          Snadno zjistíme, že funkce g(x)=(1x)x má maximum 14, takže můžeme odhadnout uk2ba4ux¯2. Z toho plyne tvrzení věty.
                                          Lemma druhá Sobolevova nerovnost Definujme
                                          h*{u:ω¯h|u0=um=0}
                                          Potom pro všechna uh* platí
                                          uhba2ux¯
                                          Důkaz Použitím první Sobolevovy nerovnosti:
                                          uh2=j=1m1h|uj|2j=1m1hu0,h2j=1m1hba4ux¯2=(m1)hba4ux¯2<(ba)24ux¯2
                                          Poznámka První Sobolevova nerovnost platí jen v dimenzi 1, ale ta druhá platí v každé dimenzi (což si dokážeme později).
                                          Lemma třetí Sobolevova nerovnost Definujme
                                          h*{u:ω¯h|u0=um=0}
                                          Potom pro všechna uh* platí
                                          h24ux¯2uh2(ba)28ux¯2
                                          Důkaz Vyřešme si jen tak pro inspiraci diferenciální úlohu na vlastní čísla:
                                          yλy=0,x(a,b),y(a)=y(b)=0
                                          Na základě moudré rady od mistra Beneše budeme hledat řešení ve tvaru y(x)=sin(α(xa)),α. Ke splnění okrajových podmínek musí být
                                          α=αkkπba,k
                                          Dosazením dopočteme
                                          y(x)=yk(x)sin(kπba(xa)),λ=λk(kπba)2
                                          Takže úloha jde řešit pro λ v tomto tvaru. Přitom s k=0 je rovnice nudná a pro k to vyjde stejně jako pro k, takže stačí brát k. Teď pojďme řešit podobnou diferenční úlohu:
                                          ux¯xλu=0,xωh,u0=um=0
                                          Řešení hledáme ve tvaru uj=sinαj. Okrajové podmínky vynutí α=αkkπm,k. Definujeme si tedy (uk)jsinkπmj a s použitím vzorečku sin(A+B)sin(AB)=2cosAsinB a nějakého dalšího dostaneme
                                          ((uk)x¯x)j=(uk)j+12(uk)j+(uk)j1h2=sinkπm(j+1)2sinkπmj+sinkπm(j1)h2=(sinkπm(j+1)sinkπmj)(sinkπmjsinkπm(j1))h2=2coskπm(j+12)sinkπ2m2coskπm(j12)sinkπ2mh2=2sinkπ2m(2sinkπmjsinkπ2m)h2=4h2(sinkπ2m)2λksinkπmj(uk)j
                                          Zjevně opět stačí k. Ale pořád je divné, že máme nekonečně mnoho řešení, když řešíme konečnou úlohu. (Nebo aspoň Benešovi je to divné; mně by to možná bylo divné, kdybych měl tušení, proč tohle děláme.) Dosadíme si do řešení km a km+1:
                                          (um)j=sinmπmj=sinπj=0
                                          (um+1)j=sin(m+1)πmj=sin(πj+πmj)=sin(πjπmj)=sin(m1)πmj=(um1)j
                                          λm+1=4h2(sin(m+1)π2m)2=4h2(sin(π2+π2m))2=4h2(sin(π2π2m))2=4h2(sin(m1)π2m)2=λm1
                                          Analogicky pro každé l=1,,m1 je um+l=uml,λm+l=λml. Takže jediná řešení jsou ve tvaru
                                          (uk)j=sinkπmj,λk4h2(sinkπ2m)2,k=1,,m1
                                          Dokážeme, že síťové funkce u1,,um1 tvoří ortogonální (se součinem (,)h) bázi h*. K tomu nám stačí dokázat, že jsou ortogonální, protože je jich správný počet. Dosadíme nějaké uk do rovnice a vynásobíme ji nějakým ul:
                                          ((uk)x¯x,ul)hλk(uk,ul)h=0
                                          Použijeme bu bun seki-bun s vědomím, že (ui)0=(ui)m=0:
                                          ((uk)x¯,(ul)x¯]λk(uk,ul)h=0
                                          a to samé samozřejmě platí i s prokozením kl:
                                          ((ul)x¯,(uk)x¯]λl(ul,uk)h=0
                                          Odečtením dostaneme
                                          (λlλk)(uk,ul)h=0
                                          Takže pro kl je (uk,ul)h=0. Jelikož máme bázi, každou síťovou funkci vh* si můžeme vyjádřit jako lineární kombinaci:
                                          v=k=1m1αkuk
                                          Díky ortogonalitě máme jednoduché vyjádření pro normu:
                                          vh2=(k=1m1αkuk,k=1m1αkuk)h=k=1m1l=1m1αkαl(uk,ul)h=k=1m1αk2ukh2
                                          To by ostatně plynulo přímo z Pythagorovy věty, tady jsme si vlastně rozepsali její důkaz. Analogicky si vyjádříme
                                          vx¯2=k=1m1αk2(uk)x¯2=k=1m1αk2λkukh2
                                          Ze vzorce pro λk snadno odvodíme, že λ1<<λm1. Z toho plyne
                                          λ1k=1m1αk2ukh2k=1m1αk2λkukh2λm1k=1m1αkukh2
                                          neboli
                                          λ1vh2vx¯λm1vh2
                                          Snadno odhadneme λm1=4h2(sin(m1)π2m)24h2, z čehož plyne první nerovnost. Druhá bude o něco složitější. Použijeme „metodu luku“ (tak tomu říká Beneš; normální člověk tomu říká konkávnost funkce). Nakreslíme si graf funkce sin na intervalu (0,π4). Na tomto intervalu je funkce konkávní, z čehož plyne
                                          sinπ2mπ2msinπ4π4=2m
                                          λ1=4h2(sinπ2m)28h2m2=8(ba)2
                                          z čehož plyne druhá rovnost.

                                          Metoda energetických nerovností

                                          Metoda energetických nerovností je způsob, jak určit stabilitu metody.

                                          Vezměme naši oblíbenou úlohu:

                                          (py)+qy=f,x(a,b),y(a)=γ1,y(b)=γ2

                                          K ní máme diferenční schéma:

                                          (pux¯)x+qu=f,xωh,u0=γ1,u1γ2

                                          Odečteme zprojektovanou diferenciální rovnici od diferenční rovnice:

                                          (pux¯)x+qu+𝒫h((py))𝒫h(qy)=0,xωh,u0=y(a),um=y(b)

                                          Použijeme chybu diferenciálního operátoru:

                                          ψ=Lh(𝒫hy)𝒫h(Ly)=(p(𝒫hy)x¯)x+𝒫h((py)),ψ0=ψm=0
                                          (pux¯)x+(p(𝒫hy)x¯)x+q(u𝒫hy)+ψ=0
                                          (p(u𝒫hy)x¯)x+q(u𝒫hy)=ψ

                                          Označíme-li zu𝒫hy, dostaneme

                                          (pzx¯)x+qz=ψ,z0=zm=0

                                          Vynásobíme obě strany rovnice zprava z v součinu (,)h:

                                          ((pzx¯)x,z)h+(qz,z)h=(ψ,z)h

                                          Použijeme bu bun seki-bun:

                                          (pzx¯,zx¯]+(qz,z)h=(ψ,z)h

                                          Tomu se říká energetická rovnost, protože ve fyzice ty členy často mají rozměr energie.

                                          U pravé strany aplikujeme Schwarzovu nerovnost (ψ,z)hψhzh. Na levé straně u druhého členu použijeme předpoklad q0 o původní diferenciální úloze:

                                          (qz,z)h=j=1m1hqjzj20

                                          U prvního členu levé strany využijeme předpoklad p>c0+ o původní diferenciální úloze:

                                          (pzx¯,zx¯]=j=1mhpj(zx¯)j2c0zx¯2

                                          Dosazením těchto vyjádření do energetické rovnosti a použitím třetí Sobolevovy nerovnosti dostáváme

                                          c0zx¯2ψhzhba8ψhzx¯

                                          Vydělíme rovnici c0zx¯:

                                          zx¯bac08konstanta stabilityψh

                                          Z první Sobolevovy nerovnosti potom plyne

                                          z0,hba2zx¯(ba)32c032Mψh

                                          Použitím Laxovy věty dostáváme, že schéma je stabilní.

                                          Metoda sítí pro další okrajové podmínky

                                          Vezměme jednoduchou okrajovou úlohu s Newtonovou (alias Robinovou) podmínkou:

                                          y=f,x(a,b),y(a)=β1y(a)+γ1,y(b)=β2y(b)+γ2

                                          K ní si vyrobíme diferenční schéma:

                                          ux¯x=f,xωh,(ux)0=β1u0+γ1,(ux¯)m=β2um+γ2

                                          Vyrobíme si z toho soustavu lineárních rovnic:

                                          u1u0hβ1u0=γ1u22u1+u0h2=f1um2um1+um2h2=fm1umum1hβ2um=γ1

                                          Ta má opět tridiagonální tvar, takže ji můžeme řešit metodou faktorizace. Ještě si z nejasného důvodu vynásobíme první a poslední rovnici 2h a můžeme ji zapsat v maticovém tvaru 𝐀u=φ:

                                          𝐀(2β1h+2h22h21h22h21h21h22h21h22h22β2h+2h2),φ(2γ1hf1fm12γ2h)

                                          Uvažujme množinu síťových funkcí h se skalárním součinem [u,v]=j=1m1hujvjh2(u0v0+umvm). Jelikož nemáme čas, jenom si bez důkazu řekneme pár vět.

                                          Věta 𝐀 je samosdružený lineární operátor na h, to jest u,v:[𝐀u,v]=[u,𝐀v]. (To je víceméně vidět z toho, že když první a poslední řádek vydělíme 2, dostaneme symetrickou matici.)
                                          Věta Existuje-li konstanta C1+ taková, že β1C1β2C1, potom 𝐀 je pozitivně definitní. Konkrétně platí
                                          uH:[𝐀u,u](ba)21+1C1(ba)2u2
                                          Věta Schéma je stabilní, řešení diferenční rovnice konverguje k řešení diferenciální rovnice jako 𝒪(h) v normě a jako 𝒪(h) v normě 0,h.

                                          Metoda sítí pro eliptické parciální diferenciální rovnice

                                          Nechť Ω(0,L1)×(0,L2),f:Ω,g:Ω. Uvažujme typovou úlohu

                                          1(λ(x)1y)2(λ(x)2y)+q(x)y=f(x),xΩ,y|Ω=g

                                          s řešením y:Ω¯,yy(x).

                                          Budeme předpokládat f𝒞(Ω¯),g𝒞(Ω),λ,q𝒞(Ω¯),q0,λC0+. V Benešově světě samozřejmě může být funkce spojitá na množině, na které není definovaná.

                                          Tentokrát už budeme potřebovat dvojrozměrnou síť:

                                          ω¯h{[ih1,jh2]Ω¯|i=0,,m1,j0,,m2},h1=L1m1,h2=L2m2

                                          Také si potřebujeme vytvořit dvourozměrné diferenční náhrady.

                                          i(λ(x)iy)=(λyx¯i)xi+𝒪(hiα)

                                          kde α=2 pro konstantní λ a α=1 pro nekonstantní λ.

                                          Označíme-li yi,jy(ih1,jh2), potom

                                          ((λyx¯1)x1)i,j=1h1(λi+1,jyi+1,jyi,jh1λi,jyi,jyi1,jh1)
                                          ((λyx¯2)x2)i,j=1h2(λi,j+1yi,j+1yi,jh2λi,jyi,jyi,j1h2)

                                          Teď už můžeme sepsat diferenční schéma:

                                          (λyx¯1)x1(λyx¯2)x2+qu=f,xωh,u|γh=g|γh

                                          Označíme-li ¯hu(ux¯1,ux¯2) a hW(Wx1)1+(Wx2)2, můžeme to zapsat v hezčím tvaru:

                                          h(λ¯hu)+qu=f,xωh,u|γh=g|γh

                                          Teď to zapíšeme po řádcích, čímž vznikne naprosto nádherná soustava rovnic:

                                          (λi+1,j+λi,jh12+λi,j+1+λi,jh22+qi,j)Ei,jui,jλi,jh12Ai,jui1,jλi+1,jh12Ci,jui+1,jλi,jh12Bi,jui,j1λi,j+1h12Di,jui,j+1=fi,jFi,j

                                          Abychom tuto soustavu mohli řešit, musíme si ji přeindexovat, aby místo indexů i,j byl jen jeden. To už tady nebudeme podrobněji rozebírat; některé počítačové řešiče to umí dělat automaticky. Na řešení je dobrá super-relaxační metoda, metoda konjugovaných gradientů nebo Jacobiho metoda. Také se dá vytvořit jakási analogie metody faktorizace, ale ta je prý dost pomalá.

                                          Teď pojďme analyzovat stabilitu.

                                          Věta Greenova formule Nechť h*{v:ω¯h|v|γh=0}. Potom pro λ:ω¯h,u,vh* platí
                                          (h(λ¯hu),v)h=(λ¯hu,¯hv]
                                          kde skalární součin definujeme jako
                                          (v,w)hi=1m11j=1m21h1h2ui,jvi,j
                                          a ten druhý definujeme na konci důkazu.
                                          Důkaz
                                          (h(λ¯hu),v)h=((λux¯1)x1+(λux¯2)x2,v)h=((λux¯1)x1,v)h+((λux¯2)x2,v)h
                                          Na oba výrazy použijeme jednorozměrnou Greenovu formuli:
                                          ((λux¯1)x1,v)h=i=1m11j=1m21h1h2((λux¯1)x1)i,jvi,j=j=1m21h2i=1m11h1((λux¯1)x1)i,jvi,j=j=1m21h2i=1m1h1λi,j(ux¯1)i,j(vx¯1)i,j=i=1m1j=1m21h1h2λi,j(ux¯1)i,j(vx¯1)i,j(λux¯1,vx¯1
                                          ((λux¯2)x2,v)h==i=1m11j=1m2h1h2λi,j(ux¯2)i,j(vx¯2)i,j(λux¯2,vx¯2
                                          Vždy, když mám pocit, že už Beneš nedokáže vymyslet divnější značení, tak mě přesvědčí o opaku. Teď to dáme dohromady:
                                          (h(λ¯hu),v)h=(λux¯1,vx¯1(λux¯2,vx¯2(λ¯hu,¯hv]
                                          Lemma druhá Sobolevova nerovnost Nechť h{v:ω¯h|v|γh=0}. Potom existuje C2,2+ takové, že pro všechna uh je uh<C2,2¯hu, kde w(w,w].
                                          Důkaz Použijeme jednorozměrnou druhou Sobolevovu nerovnost v obou směrech.
                                          u,jh12=i=1m11h1ui,j2L124i=1m1h1(ux¯1)i,j2
                                          ui,h22=j=1m21h2ui,j2L224j=1m2h2(ux¯2)i,j2
                                          Vysčítáme první nerovnost přes všechny sloupce a druhou nerovnost přes všechny řádky. Obě vzniklé nerovnosti zprůměrujeme, čímž dostaneme
                                          uh2L128(ux¯1,ux¯1+L228(ux¯2,ux¯2max{L12,L22}8¯hu

                                          Pomocí těchto nerovností podobně jako u jednorozměrného případu dokážeme, že schéma je stabilní.

                                          𝒫h((λ(x)y))+h(λ¯hu)+q(𝒫hyu)=0,𝒫hy|γh=u|γh

                                          Použijeme chybu aproximace:

                                          ψ=𝒫h(Ly)Lh(𝒫hy)=𝒫h((λy))+h(λ¯h(𝒫hy))
                                          h(λ¯h(𝒫hy))+h(λ¯hu)+q(𝒫hyu)=ψ,(𝒫hyu)|γh=0

                                          Označíme-li zP^yu, úlohu přepíšeme do tvaru

                                          h(λ¯hz)+qz=ψ,z|γh=0

                                          To vynásobíme z, čímž získáme energetickou rovnost:

                                          (h(λ¯hz),z)h+(qz,z)h=(ψ,z)h

                                          Aplikujeme Greenovu formuli:

                                          (λ¯hz,¯hz]+(qz,z)h=(ψ,z)h

                                          Využijeme předpokladu, že xΩ¯:q(x)0,λ(x)c0>0, čímž odhadneme

                                          (qz,z)h0
                                          (λ¯hz,¯hz]=(λzx¯1,zx¯1+(λzx¯2,zx¯2=j=1m21i=1m1h1h2λi,j|(zx¯1)i,j|2+i=1m11j=1m2h1h2λi,j|(zx¯2)i,j|2c0(¯hz,¯hz]=c0¯hz2

                                          Z energetické rovnosti a druhé Sobolevovy nerovnosti plyne

                                          c0¯hz2(ψ,z)hψhzhc2,2ψh¯hz
                                          ¯hzc2,2c0ψh

                                          Případně můžeme nějak podobně odvodit

                                          zhc2,2¯hzc2,22c0ψh

                                          Metoda sítí pro evoluční úlohy

                                          Vezmeme si typovou úlohu:

                                          ty=Dx,xy+f(t,x),x(0,T)×(a,b)
                                          y|x=a=γ1,y|x=b=γ2
                                          y|t=0=yini(x)

                                          Diskretizujeme si časoprostor:

                                          ω¯h{a+jh|j=0,,m,hbam}
                                          ωh{a+jh|j=1,,m1,hbam}
                                          γhω¯hωh
                                          tkkτ,k=0,,NT,τTNT

                                          Pro ω𝒞(0,T×a,b) si zavedeme značení

                                          ωjkω(kτ,a+jh)
                                          ω[ω0k,,ωmk]
                                          ω^[ω0k+1,,ωmk+1]

                                          Použijeme diferenční náhradu

                                          x,xy|jk=(yx¯x)jk+𝒪(h2)
                                          ty|jk={(yt)jk+𝒪(τ)=yjk+1yjkτ+𝒪(τ)(yt¯)jk+𝒪(τ)=yjkyjk1τ+𝒪(τ)(yt˚)jk+𝒪(τ2)=yjk+12yjk12τ+𝒪(τ2)

                                          Explicitní schéma

                                          Použijeme dopřednou diferenci.

                                          u^uτ=Dux¯x+f,u^0=γ1,u^m=γ2,u|j0=yini(a+jh)

                                          Chyba aproximace je 𝒪(h2+τ).

                                          Jelikož můžeme přímo napočítat u^=u+τDux¯x+τf, toto schéma se snadno implementuje. Zapíšeme si ho bodově:

                                          ujk+1=ujk+τDuj+1k2ujk+uj1kh2+τfjk
                                          u0k+1=γ1,umk+1=γ1
                                          uj0=yini(a+jh)

                                          Označíme si matičku, abychom to mohli jednoduše zapsat:

                                          𝐀[12τDh2τdh20τdh20]
                                          uk+1=𝐀uk+τfk=𝐀(𝐀uk1+τfk1)+τfk=𝐀2uk1+τ𝐀fk1+τfk=𝐀3uk2+τ𝐀2fk2+τ𝐀fk1+τfk

                                          Aby byla metoda stabilní, potřebujeme, aby vlastní čísla matice ležela v intervalu (1,1). Z našich úvah o úloze vlastních čísel plyne, že 𝐀 má takováto vlastní čísla:

                                          λ¯l14τDh2sin(πl2m)2

                                          Chceme tedy, aby platilo

                                          1<104τDh2sin(πl2m)2<1
                                          4τDh2sin(πl2m)2<2
                                          4τDh2<2

                                          To je prý dost striktní požadavek, takže s takovouhle metodou to jde pomalu.

                                          Implicitní schéma

                                          Tentokrát použijeme zpětnou diferenci.

                                          u^uτ=Du^x¯x+f^

                                          Chyba aproximace je opět 𝒪(h2+τ). Ale tentokrát je u^ vyjáďřeno jen implicitně, takže pro jeho zjistění budeme muset řešit soustavu rovnic:

                                          u^τDu^x¯x=u+τf^

                                          Bodový zápis:

                                          ujk+1τDuj+1k+12ujk+1+uj1k+1h2=ujk+τfjk1
                                          u0k+1=γ1,umk+1=γ1
                                          uj0=yini(a+jh)

                                          Přepis do maticového tvaru:

                                          𝐁[1+2τDh2τDh20τDh20]
                                          𝐁uk+1=uk+τfk+1
                                          Uk+1=B1(uk+τfk+1)==(B1)k+1u0+

                                          Opět chceme, aby spektrum 𝐁 bylo v intervalu (1,1). Tenotokrát si ale bez důkazu řekneme, že tam bude vždy.

                                          Crautovo-Nicolsonové schéma

                                          V podstatě je to aritmetický průměr předchozích dvou schémat.

                                          u^uτ=u^x¯x+ux¯x2+f^+f2

                                          Chyba aproximace je 𝒪(h2+τ2), což je lepší než u předchozích dvou (jelikož v Taylorovi se něco vzájemně požere).

                                          Bodový zápis je extrémně krásný:

                                          ujk+1+τDτh2(uj+1k+12ujk+1+uj1k+1)=ujk+Dτ2h2(uj+1k2ujk+uj1k)+τ2(fjk+1+fjk)
                                          u0k+1=γ1,umk+1=γ1
                                          uj0=yini(a+jh)

                                          Dokážeme pomocí metody energetických nerovností a spousty halucinogenů, že schéma je stabilní nepodmíněně.

                                          ty(a+jh,(k+12τ))ujk+1ujkτ=Dx,xyjk+12D2((ux¯x)jk+1+(ux¯x)jk)+fjk+1212(fjk+1fjk)
                                          ψ=𝒫hk+12(tyDx,xy)yk+1ykτ+D2((yx¯x)k+1+(yx¯x)k)fk+12+12(fk+1+fk)
                                          yjk+1yjkτujk+1ujkτD2((yx¯x)jk+1+(yx¯x)jk)+D2((ux¯x)jk+1+(ux¯x)jk)=ψ
                                          y0k+1=u0k+1,ymk+1=umk+1,yj0=uj0

                                          Označíme-li jako obvykle z𝒫hyu, docela se nám to vyhezčí:

                                          zjk+1zjkτ(zt¯)jk+1D2((zx¯x)jk+1+(zx¯x)jk)=ψjk,z0k+1=0,zmk+1=0,zj0=0

                                          Vynásobíme všechno zprava τ(zt¯)k+1:

                                          τ((zt¯)k+1,(zt¯)k+1)hD2((zx¯x)k+1+(zx¯x)k,τ(zt¯)k+1)h=(ψk,τ(zt¯)k+1)h

                                          Použijeme Greenovu větu:

                                          τ(zt¯)k+1h2+D2((zx¯)k+1+(zx¯)k,(zx¯)k+1(zx¯)k](zx¯)k+12(zx¯)k2=τ(ψk,(zt¯)k+1)h

                                          Podle Schwarzovy a Youngovy nerovnosti máme

                                          τ(ψk,(zt¯)k+1)hτψkh(zt¯)k+1hτ2ψkh2+τ2(zt¯)k+1h2

                                          Když to poskládáme dohromady, odečtením τ2(zt¯)k+1h2 od obou stran dostáváme

                                          τ2(zt¯)k+1h2+D2(zx¯)k+12D2(zx¯)k2τ2ψkh2

                                          Z levé strany nerovnosti jistě můžeme bez újmy na platnosti smazat první člen, jelikož je kladný, a vše vynásobit dvěma, čímž dostaneme

                                          D(zx¯)k+12D(zx¯)k2+τψkh2

                                          Iterováním této nerovnosti máme

                                          D(zx¯)k+12D(zx¯)02+j=0kτψjh2𝒪(τ2+h2)τ,h00

                                          Z toho plyne, že metoda je stabilní.

                                          Metoda přímek

                                          To úplně nesouvisí s předchozími třemi schématy, ale je to jiný způsob, jak řešit tu samou úlohu.

                                          Diskretizujeme úlohu v (a,b), tedy čas necháme spojitý. Tím vznikne systém obyčejných diferenciálních rovnic, který pak řešíme vhodným řešičem.

                                          x,xyyx¯x+𝒪(h2)
                                          𝕦=Dux¯x+f(t),u0(t)=γ1,um(t)=γ2,uj(0)=yini(a+jh)

                                          Řešení této úlohy bude nějaká síťová funkce u, která ale závisí na čase.

                                          Bodově zapíšeme:

                                          𝕦j(t)=Dh2(uj+1(t)2uj(t)+uj1(t))+f(t,a+jh),u0(t)=γ1,um(t)=γ2,uj(0)=yini(a+jh)

                                          To je soustava m1 obyčejných diferenciálních rovnic, kterou můžeme řešit Eulerovou nebo Runge-Kuttovou metodou.

                                          Numerické řešení úloh s advekcí

                                          Máme úlohu s advekčním členem A, který fyzikálně reprezentuje nějaké unášení:

                                          ty+cxyA=Dx,xy+f(t,x)
                                          ycDxy=0,x=a,b
                                          y|t=0=yini

                                          Takováto úloha se dá řešit metodou konečných objemů. Interval si rozsekáme na malé objemy Vk=(bk1,bk) (nemusí být stejné). Přes každý objem budeme integrovat:

                                          ddtVky(t,x)dx+Vk(cxyDx,xy)(t,x)dxx(cyDxy)=j(t,bk)j(t,bk1)=Vkf(t,x)dx

                                          Označíme-li si mkbkb[k1], můžeme aproximovat

                                          Uk(t)1mkVky(t,x)dx
                                          Fk(t)1mkVkf(t,x)dx

                                          Z toho máme rovnici

                                          mk𝕌k+j(t,bk)j(t,bk1)=mkFk

                                          Označme si

                                          xkbk1+bk2
                                          Uk,+{Uk,c0Uk+1,c<0

                                          Potom můžeme aproximovat toky:

                                          j(t,bk)=Uk,+cDUk+1Ukxk+1xk

                                          Tím dostáváme semi-diskrétní schéma:

                                          mk𝕌k+cUk1,+cUk,+=D(Uk+1Ukxk+1xkUkUk1xkxk1)+mkFk
                                          j(t,b0)=j(t,bm)=0,Uk(0)=1mkVkyini(x)dx

                                          To můžeme řešit například Runge-Kuttovou metodou.

                                          Také se dá řešit mřížkovou Boltzmannovou metodou (tu ke zkoušce nemusíme umět).

                                          Zákony zachování

                                          Máme například hmotnost:

                                          m(t)=x1x2ρ(t,x)dx
                                          𝕞(t)=j(t,x1)j(t,x2)+x1x2q(t,x)dx

                                          kde j(t,x)=ρ(t,x)v(t,x), ale stejně netuším, co ta písmena mají znamenat.

                                          m(t2)m(t1)=t1t2(j(t,x1)j(t,x2))dt+t1t2dtx1x2q(t,x)dx(integrální tvar zákonu zachování)

                                          Pokud ρ,j,q jsou diferencovatelné, můžeme z toho vyvodit:

                                          x1x2tρ(t,x)dx=𝕞(t)=x1x2q(t,x)dxx1x2xj(t,x)dx
                                          tρ(t,x)+xj(t,x)=q(t,x)(diferenciální tvar zákonu zachování)

                                          Obecně máme-li vektorovou veličinu U:0+×m a její tok F:mm, můžeme formulovat zákony zachování v diferenciálním tvaru:

                                          tU+xF(U)=0

                                          Integrací podle t a x dostaneme integrální tvar:

                                          x1x2(U(t2,x)U(t1,x))dx=t1t2(F(U(t,x1))F(U(t,x2)))dt
                                          Příklad Eulerovy rovnice pro dynamiku nevazké stlačitelné tekutiny
                                          Zákon zachování hmotnosti
                                          tρ+x(ρv)=0
                                          Zákon zachování hybnosti
                                          t(ρv)+x(p+ρv2)=0
                                          Zákon zachování energie
                                          tE+x(v(p+E))=0
                                          U=(ρρvE),F(U)=(ρvp+ρv2v(p+E))
                                          Příklad lineární advekční rovnice
                                          tρ+axρ=0,ρ|t=0=ρ0(x)
                                          U=ρ,F(U)=aρ
                                          Řešení
                                          ρ(t,x)=ρ0(xat)
                                          Příklad Burgersova rovnice
                                          tu+uxu=0,u|t=0=u0(x)
                                          U=u,F(U)=u22

                                          Riemannův problém je řešení zákonů zachování se skokovou počáteční podmínkou.

                                          tU+xF(U)=0,U|t=0={UL,x<0UR,x>0

                                          K řešení je nutné oslabení podmínek pro diferencovatelnost U.

                                          Slabé řešení zákonů zachování: Vynásobíme rovnici funkcí φ:0+×m,φ𝒞0 a následně ji zintegrujeme podle t a x přes celý rozsah:

                                          0dtdxφ(t,x)(tU(t,x)+xF(U(t,x)))=0

                                          Roznásobíme, na první část použijeme bu bun seki-bun s integrálem podle t a na druhou část použijeme bu bun seki-bun s integrálem podle x:

                                          dx[φU]00dtdxUtφ+0dt([φF(U)]dxF(U)xφ)=0

                                          To 𝒞0 v definici φ nejspíš znamená, že její limita v nekonečnech je 0, takže to můžeme zjednodušit na

                                          dxφ(0,x)U(0,x)=0dtdx(Utφ+F(U)xφ)

                                          To je takzvaná slabá rovnost.

                                          Definice Funkce U je slabé řešení zákonu zachování, pokud pro všechna φ𝒞0(0+×) platí slabá rovnost.
                                          Poznámka Pokud vezmeme za φ funkci, která vypadá skoro jako χ×x1,x2, akorát je na krajích „uhlazená“, aby byla 𝒞, slabá rovnost je integrální tvar zákonu zachování.

                                          Teď pojďme rovnici řešit. Pro jednoduchost vezměme m=1, tedy U=u. Je-li uL>uR, jde o rázovou vlnu. Označme suL+uR2. Potom rovnice má jediné řešení:

                                          u(t,x)={uL,x<stuR,x>st

                                          Je-li uL<uR, jde o zřeďovací vlnu. Potom existuje nekonečně mnoho řešení, která jsou ve tvaru

                                          u(t,x)={uL,x<uLtněco, například λt,xuLt,uRtuR,x>uRt

                                          Pojďme to řešit numericky. Označme si UjkU(kτ,jh). Budeme používat konzervativní zápis schémat:

                                          Ujk+1=UjkΔth(Fnum(Ujpk,,Uj+qk)Fnum(Ujp1k,,Uj+q1k))

                                          kde Fnum je numerický tok, který může aproximovat skutečný tok různými způsoby:

                                          Laxovo-Fridrichsonovo schéma
                                          Fnum(Uj,Uj+1)=h2Δt(UjUj+1)+12(F(Uj)+F(Uj+1))
                                          Laxovo-Wendroffovo schéma v podobě prediktor-konektor
                                          TBD
                                          Mac-Cormackovo schéma
                                          TBD

                                          Všechna tato schémata mají stejnou podmínku stability, kde ρ značí spektrální poloměr:

                                          Δth1ρ(F(u))