Výzkumný úkol - Linux.fjfi.cvut.cz - České vysoké učení technické v
Transkript
Výzkumný úkol - Linux.fjfi.cvut.cz - České vysoké učení technické v
Soustavy reakčně-difúzních rovnic a jejich numerické řešení Výzkumný úkol Ondřej Mičan 2001 – 2002 České vysoké učení technické v Praze Fakulta jaderná a fyzikálně inženýrská Obsah Úvod 5 Kapitola 1. Reakčně-difúzní rovnice 1. Úvod 2. Model 1 (Bruselátor) 3. Model 2 (konkurence-difúze živočišných druhů) 4. Dodatek: Operátor Němyckého 7 7 7 12 15 Kapitola 2. Metoda přímek 1. Model 1 (jednorozměrný případ) 2. Model 2 (dvourozměrný případ) 3. Rungova-Kuttova metoda s automatickou volbou kroku 17 17 18 20 Kapitola 3. Testování programu pro numerické řešení 1. Jednorozměrný případ 2. Dvourozměrný případ 21 21 23 Kapitola 4. Vizualizace výsledků 1. Jednorozměrný případ 2. Dvourozměrný případ 27 27 27 Závěr 29 Příloha A. Výsledky testování programu pro numerické řešení 31 Příloha B. Výsledky numerických výpočtů 37 Literatura 41 3 4 OBSAH Úvod Hlavním cílem mého výzkumného úkolu bylo naprogramovat a otestovat dostatečně univerzální algoritmus pro numerické řešení soustav reakčně-difúzních rovnic tzv. metodou přímek. O upotřebitelnosti takového programu není pochyb, neboť standardní matematické knihovny typu MATLAB soustavy nelineárních (často ani lineárních) parabolických parciálních diferenciálních rovnic, mezi něž soustavy reakčně-difúzních rovnic patří, řešit neumějí. Na druhou stranu není jednoduché takový program otestovat, když jeho výsledky není s čím srovnávat. Předkládaná práce obsahuje jednak matematické formulace řešených problémů a použitých metod, jednak popis testování programu a diskusi získaných výsledků. První kapitola popisuje úlohy pro dvě různé soustavy reakčně-difúzních rovnic, které jsem pomocí svého programu řešil. Vždy je nejprve uvedena klasická formulace a následně je odvozena formulace slabá. V závěru první kapitoly jsou shrnuty výsledky použité ke zdůvodnění správnosti slabých formulací. Druhou kapitolu tvoří popis metody přímek, již můj program implementuje. Ve druhé kapitole je zevrubně popsáno použití této metody pro obě úlohy z první kapitoly. Protože součástí metody přímek je řešení počáteční úlohy pro soustavu obyčejných diferenciálních rovnic, je v závěru kapitoly popsána Rungova-Kuttova metoda s automatickou volbou kroku pro řešení těchto úloh. Třetí kapitola se věnuje testování mého programu, a to v jednorozměrné i dvourozměrné verzi. Pro každý z obou případů je nejprve popsána úloha, na které se daná verze programu testovala, dále je popsán postup vlastního testování a poté je provedena diskuse výsledků testování. Tabulky s výsledky jsou uvedeny v příloze A. Čtvrtá kapitola se zabývá otázkou vhodné vizualizace výsledků numerických výpočtů. V příloze B pak lze najít ukázku grafického znázornění řešení jednorozměrné i dvourozměrné úlohy. Shrnutí nejdůležitějších výsledků dosažených v rámci mého výzkumného úkolu je uvedeno v závěru této práce. V Praze 8. září 2002 Ondřej Mičan 5 6 ÚVOD KAPITOLA 1 Reakčně-difúzní rovnice 1. Úvod Soustava parciálních diferenciálních rovnic tvaru ∂u1 = D1 ∆u1 + f1 (u1 , . . . , un ), ∂t .. . (1) ∂un = Dn ∆un + fn (u1 , . . . , un ), ∂t kde n ∈ N, D1 , . . . , Dn ∈ R a f1 , . . . , fn jsou polynomy n proměnných, se nazývá soustavou reakčně-difúzních rovnic.1 Definičním oborem řešení u = (u1 , . . . , un ) je kartézský součin Ω × I, kde Ω je otevřená množina v Rd , d ∈ N, a I = (0, T ), T > 0. Členy Di ∆ui , i ∈ n̂, se nazývají difúzní členy (Di je difúzní koeficient i-té chemikálie), členy fi (u1 , . . . , un ), i ∈ n̂, se nazývají reakční členy. V následujících dvou oddílech si ukážeme dva konkrétní případy soustav reakčně-difúzních rovnic. V celé práci budeme předpokládat, že Ω je omezená oblast s lipschitzovskou hranicí. 2. Model 1 (Bruselátor) Bruselátor se nazývá reakční schéma A B+X 2X + Y X −→ −→ −→ −→ X, Y + D, 3X, E. Toto schéma popisuje (fiktivní) chemickou reakci dvou látek A a B, při níž vznikají látky D a E coby výsledné produkty a látky X a Y coby meziprodukty. Časová a prostorová závislost koncentrací meziproduktů (budeme je značit týmiž 1 Poučení o fyzikálněchemickém původu reakčně-difúzních rovnic je možno nalézt v [1]. Na tomto místě jen připomeňme, že neznámé funkce u1 , . . . , un vyjadřují závislost koncentrací jednotlivých reagujících chemikálií na prostoru a čase. 7 8 1. REAKČNĚ-DIFÚZNÍ ROVNICE symboly jako látky samotné) je popsána soustavou reakčně-difúzních rovnic ∂X ∂t ∂Y ∂t = D1 ∆X + A − (B + 1)X + X 2 Y, (2) = D2 ∆Y + BX − X 2 Y, (3) kde D1 , resp. D2 je difúzní koeficient látky X, resp. Y a A, B jsou koncentrace vstupních látek (předpokládáme, že jsou konstantní).2 Tato soustava má stacionární konstantní řešení X ≡ A, Y ≡ B . A Soustavu doplňme Dirichletovými hraničními podmínkami X(z, t) = A, Y (z, t) = B , A ∀(z, t) ∈ ∂Ω × I, (4) a počátečními podmínkami X(z, 0) = X0 (z), Y (z, 0) = Y0 (z), ∀z ∈ Ω, (5) kde X0 a Y0 jsou vhodné funkce na Ω. Nyní odvodíme slabou formulaci úlohy (2) – (5). Za tímto účelem ji nejprve substitucí X = X − A, Y =Y − B A převedeme na úlohu s homogenními okrajovými podmínkami X(z, t) = 0, Y (z, t) = 0, ∀(z, t) ∈ ∂Ω × I. (6) Rovnice (2), (3) pak získají podobu ∂X ∂t ∂Y ∂t B = D1 ∆X − X − B(X + A) + (X + A) Y + A B = D2 ∆Y + B(X + A) − (X + A)2 Y + A 2 , (7) (8) a počáteční podmínky (5) získají tvar X(z, 0) = X0 (z) − A, 2 Podrobné odvození viz [1]. Y (z, 0) = Y0 (z) − B , A ∀z ∈ Ω. (9) 2. MODEL 1 (BRUSELÁTOR) 9 Předpokládejme, že tato úloha má klasické řešení X, Y ∈ C 1 (I; C 2 (Ω)2 ).3 Zvolme libovolně dvě funkce ϕ1 , ϕ2 ∈ D(Ω) a vynásobme rovnici (7), resp. (8) funkcí ϕ1 , resp. ϕ2 . Sečtením obou výsledných rovnic a zintegrováním přes Ω dostaneme pro libovolné t ∈ I Z h Z h i i 0 0 X (t) (z) ϕ1 (z) dz + Y (t) (z) ϕ2 (z) dz = Ω Ω Z Z = −D1 ∇ X(t) (z) · ∇ϕ1 (z) dz − D2 ∇ Y (t) (z) · ∇ϕ2 (z) dz + Ω ΩZ Z + f1 X(t) (z), Y (t) (z) ϕ1 (z) dz + f2 X(t) (z), Y (t) (z) ϕ2 (z) dz, Ω Ω 2 kde f1 a f2 jsou funkce na R definované vztahy B f1 (x, y) = −x − B(x + A) + (x + A) y + A B f2 (x, y) = B(x + A) − (x + A)2 y + A 2 , pro všechna (x, y) ∈ R2 . Definice 1.1. Definujme bilineární formu a : W01,2 (Ω) × W01,2 (Ω) → R předpisem Z a(u, v) = ∇u · ∇v, ∀u, v ∈ W01,2 (Ω). Ω Slabým řešením úlohy (6)–(9) nazveme takovou dvojici abstraktních funkcí X, Y ∈ W I; W01,2 (Ω)2 , která splňuje vztah D 0 E D 0 E X (t), ϕ1 + Y (t), ϕ2 + D1 a X(t), ϕ1 + D2 a Y (t), ϕ2 = = f1 X(t), Y (t) , ϕ1 + f2 X(t), Y (t) , ϕ2 pro s. v. t ∈ I, ∀ϕ1 , ϕ2 ∈ W01,2 (Ω), kde h . , . i, resp. ( . , . ) značí dualitu mezi W −1,2 (Ω) a W01,2 (Ω), resp. skalární součin v L2 (Ω), a počáteční podmínky B X(0) = X0 − A, Y (0) = Y0 − (10) A r r Na klasické řešení úlohy (2) – (5) můžeme pohlížet buď jako na dvojici X , Y reálných a a funkcí na Ω×I, anebo jako na dvojici X , Y abstraktních funkcí na I s hodnotami v prostoru 3 C 2 (Ω), přičemž vzájemný vztah je dán rovnostmi h a i h a i r r X (t) (z) = X (z, t), Y (t) (z) = Y (z, t), ∀t ∈ I, ∀z ∈ Ω. Základní informace o abstraktních funkcích a abstraktních funkčních prostorech lze najít např. v [1]. 10 1. REAKČNĚ-DIFÚZNÍ ROVNICE pro dané X0 , Y0 ∈ L2 (Ω). K předchozí definici je třeba připojit několik poznámek. Předně připomeňme, že W I; W01,2 (Ω)2 = u ∈ L2 I; W01,2 (Ω)2 : u0 ∈ L2 I; W −1,2 (Ω)2 .4 Je-li interval I omezený, je tento prostor spojitě vnořen do prostoru C I; L2 (Ω)2 a díky tomu má smysl požadovat splnění počátečních podmínek (10). Nyní je třeba zdůvodnit oprávněnost použití skalárního součinu na pravé straně ve slabé formulaci, tj. dokázat, že platí f1 ◦ u, f2 ◦ u ∈ L2 (Ω), kdykoliv u ∈ W 1,2 (Ω). K tomu využijeme důsledek 1.8 z dodatku. Funkce f1 , f2 jsou spojité, a proto splňují Carathéodoryovy podmínky. Protože zřejmě platí |f2 (x, y)| ≤ |f1 (x, y)| , 4 ∀(x, y) ∈ R2 , Je-li X Banachův prostor, pak W (I; X) = {u ∈ L2 (I; X) : u0 ∈ L2 (I; X ∗ )}. Měli bychom tedy psát n ∗ o W I; W01,2 (Ω)2 = u ∈ L2 I; W01,2 (Ω)2 : u0 ∈ L2 I; W01,2 (Ω)2 . Prostory W01,2 (Ω)2 a W −1,2 (Ω)2 jsou ovšem lineárně homeomorfní. To platí zcela obecně pro (X ∗ )n a (X n )∗ . Skutečně, je-li Φ = (Φ1 , . . . , Φn ) ∈ (X ∗ )n , pak můžeme definovat Φ ∈ (X n )∗ vztahem Φ(x1 , . . . , xn ) = Φ1 (x1 ) + . . . + Φn (xn ), ∀(x1 , . . . , xn ) ∈ X n . Přitom platí |Φ(x1 , . . . , xn )| ≤ |Φ1 (x1 )| + . . . + |Φn (xn )| ≤ kΦ1 k kx1 k + . . . + kΦn k kxn k ≤ ≤ max kΦi k (kx1 k + . . . + kxn k) , ∀(x1 , . . . , xn ) ∈ X n , i∈n̂ takže kΦk ≤ kΦk. Je-li naopak Φ ∈ (X n )∗ , definujeme Φ = (Φ1 , . . . , Φn ) ∈ (X ∗ )n vztahy Φ1 (x) = Φ(x, 0, . . . , 0), ..., Φn (x) = Φ(0, . . . , 0, x), Potom pro každé i ∈ n̂ platí |Φi (x)| ≤ kΦk kxk , ∀x ∈ X, a tedy kΦi k ≤ kΦk. Tudíž max kΦi k ≤ kΦk neboli kΦk ≤ kΦk. i∈n̂ ∀x ∈ X. 2. MODEL 1 (BRUSELÁTOR) 11 stačí se nadále zabývat funkcí f1 . Je B |f1 (x, y)| ≤ |x| + B |x| + AB + |x + A| y + ≤ A 2 4 y+B |x + A| A ≤ AB + (1 + B) |x| + + ≤ 2 2 2 |y| + B (1 + B)2 |x|2 (|x| + |A|)4 A ≤ AB + + + + ≤ 2 2 2 2 2 4 B 2 4 |y| + (1 + B)2 |x|4 1 |x| + A A ≤ AB + + + + 23 · +2· = 2 2 8 2 2 2 B (1 + B)2 1 = AB + + + 4, 5 · |x|4 + 4 · A4 + |y|2 + ≤ 2 8 A ≤ C1 + 4, 5 · |x|4 + |y|2 , ∀(x, y) ∈ R2 , 2 kde jsme využili Youngovu nerovnost a odhad !p M M X X |aj | ≤ M p−1 |aj |p , j=1 ∀p ∈ h1, ∞), j=1 jenž je důsledkem Hölderovy nerovnosti. Je evidentní, že nic neztratíme, pokud získaný odhad ještě „zhoršíme” tím, že v něm místo |y|2 budeme uvažovat |y|4 . Z důsledku 1.8 vyplývá, že hf1 i hf2 zobrazují spojitě L8 (Ω)2 → L2 (Ω). Větu tedy nelze použít přímo, v případě d = 1, resp. d = 2 můžeme ale využít Sobolevových vět o vnoření: 1. Je-li d = 1, pak W 1,2 (Ω) ,→ C(Ω). 2. Je-li d = 2, pak W 1,2 (Ω) ,→ Lp (Ω) pro každé p ∈ h1, ∞). Poněvadž C(Ω) ,→ L8 (Ω), je v obou zmiňovaných případech W 1,2 (Ω)2 ,→ L2 (Ω)8 . Němyckého operátory hf1 , hf2 tedy zobrazují spojitě W 1,2 (Ω)2 → L2 (Ω). Pro d ≥ 3 věty o vnoření říkají tolik, že W 1,2 (Ω) ,→ Lq (Ω), kde 1q = p1 − d1 . V nejpříznivějším případě d = 3 je tudíž W 1,2 (Ω) ,→ L6 (Ω). Pokusíme se pro tento případ odvodit jemnější odhad. Lemma 1.2. Jsou-li a, b nezáporná čísla, pak a2 b ≤ 2 3 1 3 ·a + ·b . 3 3 Důkaz. S využitím Youngovy nerovnosti máme 1 3 a3 ab2 a3 1 a3 1 a2 b 1 b 3 2 2 + = + · ab · b ≤ + · + · . a b=a ·a b≤ 2 2 2 2 2 2 2 2 2 Odtud 3 2 a3 b 3 ·a b≤ + . 4 2 4 2 3 2 1 2 12 1. REAKČNĚ-DIFÚZNÍ ROVNICE S využitím dokázané lemmy máme pro všechna (x, y) ∈ R2 B 2 |f1 (x, y)| ≤ |x| + B |x| + AB + |x + A| y + ≤ A 3 2 1 B 3 ≤ AB + (1 + B) |x| + · |x + A| + y + ≤ 3 3 A 3 3 2 2 1 B 1 3 3 ≤ AB + (1 + B) 2 + · |x| + (|x| + A) + |y| + ≤ 3 3 3 3 A 3 ! 1 2 3 2 B 1 2 2 3 3 3 3 ≤ AB + (1 + B) 2 + · |x| + · 2 |x| + A + · 2 |y| + = 3 3 3 3 A 3 3 2 8 4 B 4 3 = AB + (1 + B) 2 + · A + + 3 · |x|3 + · |y|3 ≤ 3 3 A 3 3 ≤ C2 + 3 |x|3 + |y|3 , Podle důsledku 1.8 hf1 i hf2 spojitě zobrazují L6 (Ω)2 → L2 (Ω), a podle předchozího tedy i W 1,2 (Ω)2 → L2 (Ω). 3. Model 2 (konkurence-difúze živočišných druhů) Soustavy reakčně-difúzních rovnic lze, jak se ukazuje, s úspěchem použít i k modelování některých jiných jevů, než jsou chemické reakce. Příkladem může být model popisující vývoj populací živočišných druhů. Tento model získáme tak, že v (1) položíme ri − fi (y1 , . . . , yn ) = n X aij yj ! ∀i ∈ n̂, ∀(y1 , . . . , yn ) ∈ Rn , yi , j=1 kde ri ∈ R, ∀i ∈ n̂ a aij ∈ R, ∀i, j ∈ n̂.5 Naše soustava bude tedy mít tvar ∂u1 = D1 ∆u1 + ∂t r1 − n X a1j uj ! u1 , j=1 .. . ∂un = Dn ∆un + ∂t 5 Podrobnosti viz např. [2]. (11) rn − n X j=1 anj uj ! un . 3. MODEL 2 (KONKURENCE-DIFÚZE ŽIVOČIŠNÝCH DRUHŮ) 13 Tuto soustavu doplníme homogenními Neumannovými hraničními podmínkami ∂u1 (x, t) = 0, ∂n .. . (12) ∀(x, t) ∈ ∂Ω × I, ∂un (x, t) = 0, ∂n ∂ kde ∂n značí derivaci ve směru vnější normály. Poznamenejme, že homogenní Neumannovy hraniční podmínky vyjadřují neprostupnost hranice pro příslušníky sledovaných živočišných druhů. Počáteční podmínky budeme uvažovat ve tvaru u1 (x, 0) = u01 (x), .. . (13) ∀x ∈ Ω, un (x, 0) = u0n (x), kde u01 , . . . , u0n jsou vhodné funkce na Ω. Odvoďmě slabou formulaci této úlohy. Předpokládejme, že máme k dispozici klasické řešení u = (u1 , . . . , un ) ∈ C 1 (I; C 2 (Ω)n ). Zvolme ϕ1 , . . . , ϕn ∈ C ∞ (Ω) a pro i ∈ n̂ vynásobme i-tou rovnici soustavy (11) funkcí ϕi . Dostaneme u0i (t) ϕi = Di ∆[ui (t)] ϕi + fi (u(t)) ϕi , ∀t ∈ I, i ∈ n̂. Podle Gaussovy věty je Z Z Z ∆[ui (t)] ϕi = ϕi ∇[ui (t)] · n dS − ∇[ui (t)] · ∇ϕi , Ω ∂Ω ale díky (12) platí Z Z ϕi ∇[ui (t)] · n dS = ∂Ω ∂Ω ϕi ∂[ui (t)] dS = 0, ∂n ∀t ∈ I, i ∈ n̂. Tudíž po integraci získáme Z Z Z 0 ui (t) ϕi = −Di ∇[ui (t)] · ∇ϕi + fi (u(t)) ϕi , Ω Odtud n Z X i=1 Ω Ω u0i (t) ϕi =− ∀t ∈ I, i ∈ n̂, Ω n X i=1 Di ∀t ∈ I, i ∈ n̂. Ω Z Ω ∇[ui (t)] · ∇ϕi + n Z X i=1 fi (u(t)) ϕi , ∀t ∈ I. Ω Tento vztah má platit pro všechna ϕ1 , . . . , ϕn ∈ C ∞ (Ω), a tedy ekvivalentně (díky tomu, že Ω má lipschitzovskou hranici) pro všechna ϕ1 , . . . , ϕn ∈ W 1,2 (Ω). Z tohoto vztahu vyjdeme při sestavení slabé formulace. 14 1. REAKČNĚ-DIFÚZNÍ ROVNICE Definice 1.3. Slabým řešením úlohy (11) – (13) nazveme takové u = (u1 , . . . , un ) ∈ W (I; W 1,2 (Ω)n ), že platí hu0 (t), ϕi + a (u(t), ϕ) = (f (u(t)), ϕ) , pro s. v. t ∈ I, ∀ϕ ∈ W 1,2 (Ω)n , ∗ kde závorky h . , . i, resp. ( . , . ) značí dualitu mezi (W 1,2 (Ω)n ) a W 1,2 (Ω)n , resp. skalární součin v L2 (Ω)n a a je bilineární forma na W 1,2 (Ω)n definovaná předpisem Z n X a(u, ϕ) = Di ∇ui · ∇ϕi , ∀u, ϕ ∈ W 1,2 (Ω)n , Ω i=1 a u(0) = u0 , kde u0 = (u01 , . . . , u0n ) ∈ L2 (Ω)n . Připomeňme, že ∗ W I; W 1,2 (Ω)n = u ∈ L2 I; W 1,2 (Ω)n : u0 ∈ L2 I; W 1,2 (Ω)n , a je-li interval I omezený, je tento prostor spojitě vnořen do C I; L2 (Ω)n . Nyní je třeba ověřit korektnost použití skalárního součinu v L2 (Ω)n ve slabé formulace, tj. dokázat, že u ∈ W 1,2 (Ω)n =⇒ f (u) ∈ L2 (Ω)n . Funkce fi , i ∈ n̂, jsou spojité na Rn , a proto splňují Carathéodoryovy podmínky. Pro libovolné i ∈ n̂ a všechna (y1 , . . . , yn ) ∈ Rn je n X |fi (y1 , . . . , yn )| ≤ |aij | |yi yj | + ri yi − aii yi2 ≤ j=1 j6=i n 1 2 1X ≤ |aij | yi2 + yj2 + ri + yi2 + |aii | yi2 ≤ 2 j=1 2 j6=i ≤ n X ! ≤ n X ! 1 |aij | + 2 j=1 n yi2 + 1X r2 |aij | yj2 + i ≤ 2 j=1 2 j6=i j=1 |aij | + 1 2 n X j=1 yj2 + ri2 . 2 Pro d ≤ 4 odtud snadno odvodíme, že Němyckého operátory generované funkcemi fi , i ∈ n̂, zobrazují W 1,2 (Ω)n → L2 (Ω), a to dokonce spojitě. Stačí ověřit, že prostor W 1,2 (Ω) je spojitě vnořen do L4 (Ω). K tomu využijeme vět o vnoření: 1. Pro d = 1 je W 1,2 (Ω) ,→ C(Ω), ale C(Ω) ,→ L4 (Ω). 2. Pro d = 2 je W 1,2 (Ω) ,→ Lp (Ω) pro každé p ∈ h1, ∞), tedy i pro p = 4. 3. Pro d > 2 je W 1,2 (Ω) ,→ Lp (Ω), přičemž p1 = 12 − d1 . Pro d = 3, resp. d = 4 je tedy p = 6, resp. p = 4. Z Hölderovy nerovnosti pak L6 (Ω) ,→ L4 (Ω). 4. DODATEK: OPERÁTOR NĚMYCKÉHO 15 4. Dodatek: Operátor Němyckého Obsahem tohoto dodatku je přehled nejznámějších definic a vět spojených s operátorem Němyckého, což je jeden ze základních pojmů teorie nelineárních diferenciálních operátorů. Důkazy uvedených tvrzení lze nalézt např. v [3]. Definice 1.4. Buďte Ω ⊂ Rd množina konečné Lebesgueovy míry, f funkce definovaná na Ω × Rn . Řekneme, že f splňuje Carathéodoryovy podmínky, jestliže platí • pro s. v. x ∈ Ω je funkce y 7→ f (x, y) spojitá, • pro každé y ∈ Rn je funkce x 7→ f (x, y) měřitelná. Věta 1.5. Buďte f funkce na Ω × Rn splňující Carathéodoryovy podmínky, u1 , . . . , un měřitelné funkce na Ω. Potom zobrazení x 7→ f (x, u1 (x), . . . , un (x)) je měřitelná funkce na Ω. Definice 1.6. Buď f funkce na Ω×Rn splňující Carathéodoryovy podmínky. Zobrazení hf , které libovolné n-tici (u1 , . . . , un ) měřitelných funkcí na Ω přiřazuje funkci x 7→ f (x, u1 (x), . . . , un (x)) , nazýváme Němyckého operátor (generovaný funkcí f ). Věta 1.7. Buďte Ω ⊂ Rd omezená oblast, f : Ω × Rn → R funkce splňující Carathéodoryovy podmínky, p1 , . . . , pn , r ∈ h1, ∞). Jestliže existuje funkce g ∈ Lr (Ω) a číslo b > 0 tak, že n X j pj f (x, y 1 , . . . , y n ) ≤ g(x) + b y r pro s. v. x ∈ Ω, ∀(y 1 , . . . , y n ) ∈ Rn , j=1 potom je hf spojitým zobrazením Lp1 (Ω) × . . . × Lpn (Ω) → Lr (Ω). Důsledek 1.8. Buďte Ω ⊂ Rd omezená oblast, k ∈ N a položme n = (d+k)! .6 d! k! Dále nechť p, r ∈ h1, ∞), f : Ω × Rn → R je funkce splňující Carathéodoryovy podmínky a předpoklady předchozí věty, přičemž pα = p pro všechna α ∈ Nd0 , |α| ≤ k. Potom hf ◦ Dn je spojité zobrazení W k,p (Ω) → Lr (Ω), kde Dn : W k,p (Ω) → Lp (Ω)n , 6 Dn : u 7→ (∂ α u)|α|≤k . Je tedy n počet všech multiindexů výšky nejvýše k. 16 1. REAKČNĚ-DIFÚZNÍ ROVNICE KAPITOLA 2 Metoda přímek Jednou z metod vhodných pro numerické řešení soustav reakčně-difúzních rovnic je tzv. metoda přímek. Její myšlenka spočívá v tom, že soustavu parciálních diferenciálních rovnic „aproximujeme” soustavou obyčejných diferenciálních rovnic a tu pak vyřešíme např. Rungovou-Kuttovou metodou. Ukažme si to konkrétně na soustavách z kapitoly 1. 1. Model 1 (jednorozměrný případ) Uvažme úlohu (2) – (5), kde d = 1. Ježto je Ω oblast, můžeme bez újmy na obecnosti předpokládat, že Ω = (0, L), kde L > 0. Provedeme-li přeškálování prostorové souřadnice z 7→ Lz ,1 získáme úlohu ∂X D1 = 2 ∆X + g1 (X, Y ), ∂t L D2 ∂Y = 2 ∆Y + g2 (X, Y ), ∂t L X(0, t) = X(1, t) = A, X(z, 0) = X0 (z), (14) (15) B , ∀t ∈ I, A ∀z ∈ (0, 1), Y (0, t) = Y (1, t) = Y (z, 0) = Y0 (z), (16) (17) kde g1 a g2 jsou funkce na R2 definované vztahy g1 (x, y) = A − (B + 1)x + x2 y, g2 (x, y) = Bx − x2 y pro všechna (x, y) ∈ R2 , a X0 a Y0 jsou vhodné funkce na (0, 1). V intervalu h0, 1i ekvidistantně rozmístíme N uzlů z0 , . . . , zN −1 , přičemž i , i = 0, . . . , N − 1. N −1 Speciálně platí u0 = 0, uN −1 = 1. Vzdálenost dvou sousední uzlů označíme h. Zřejmě h = N 1−1 . zi = 1 e Ye , které jsou s nimi spjaty Jinými slovy: Místo funkcí X, Y budeme hledat funkce X, vztahy e X(z, t) = X(Lz, t), Ye (z, t) = Y (Lz, t), 17 ∀(z, t) ∈ (0, 1) × I. 18 2. METODA PŘÍMEK Pro i = 0, . . . , N − 1 nechť c1 [i], resp. c2 [i] značí aproximaci hodnoty řešení X, resp. Y v uzlu zi . Hraniční podmínky (16) zachytíme tím, že položíme c1 [0] = c1 [N − 1] = A, c2 [0] = c2 [N − 1] = B . A Soustavu (14), (15) aproximujeme soustavou 2(N − 2) obyčejných diferenciálních rovnic D1 c1 [i + 1] − 2 ∗ c1 [i] + c1 [i − 1] + f1 (c1 [i], c2 [i]), L2 h2 D2 c2 [i + 1] − 2 ∗ c2 [i] + c2 [i − 1] c2 [i]0 = 2 + f2 (c1 [i], c2[i]), L h2 c1 [i]0 = kde i = 1, . . . , N − 2. Tuto soustavu doplníme počátečními podmínkami c1 [i] = X0 (zi ), c2 [i] = Y0 (zi ), i = 1, . . . , N − 2, čímž zachytíme počáteční podmínky (17). 2. Model 2 (dvourozměrný případ) Uvažme nyní úlohu (11) – (13) v případě d = 2, n = 3. Dále předpokládejme, že Ω = (a, b) × (a, b). V intervalu Ω = ha, bi×ha, bi pravidelně rozmístíme N 2 uzlů z00 , . . . , zN −1,N −1 . Souřadnice jednotlivých uzlů jsou dány vzorcem b−a b−a , a+j· , ∀i, j ∈ {0, . . . , N − 1}. zij = a + i · N −1 N −1 Speciálně platí z00 = (a, a) a zN −1,N −1 = (b, b). Dále je kzi+1,j − zi,j k = (i + 1) · b−a b−a b−a −i· = , N −1 N −1 N −1 ∀i ∈ {0, . . . , N − 2}, ∀j ∈ {0, . . . , N − 1}, a podobně kzi,j+1 − zi,j k = (j + 1) · b−a b−a b−a −j· = , N −1 N −1 N −1 ∀i ∈ {0, . . . , N − 1}, ∀j ∈ {0, . . . , N − 2}. Proto, označíme-li h vzdálenost libovolných dvou sousedních uzlů, platí h= b−a . N −1 2. MODEL 2 (DVOUROZMĚRNÝ PŘÍPAD) 19 Předpokládejme, že úloha (11) – (13) má klasické řešení u = (u1 , u2 , u3 ) ∈ C 1 (I; C 2 (Ω)3 ), a pro i, j = 0, . . . , N − 1 definujme funkce c1[i][j] : t 7→ [u1 (t)](zij ), c2[i][j] : t 7→ [u2 (t)](zij ), c3[i][j] : t 7→ [u3 (t)](zij ). Aproximace těchto funkcí získáme jako řešení soustavy obyčejných diferenciálních rovnic c1[i][j]0 = D1 · (∆c1[i][j]) + (r1 − a11 c1[i][j] − a12 c2[i][j] − a13 c3[i][j]) · c1[i][j], c2[i][j]0 = D2 · (∆c2[i][j]) + (r2 − a21 c1[i][j] − a22 c2[i][j] − a23 c3[i][j]) · c2[i][j], c3[i][j]0 = D3 · (∆c3[i][j]) + (r3 − a31 c1[i][j] − a32 c2[i][j] − a33 c3[i][j]) · c3[i][j], (18) kde i, j = 0, . . . , N − 1. Symbol ∆c1[i][j], ∆c2[i][j], resp. ∆c3[i][j] značí aproximaci laplasiánu pomocí lineární kombinace hodnot příslušné funkce v uzlu zij a v sousedních uzlech. Pro vnitřní uzly oblasti Ω používáme následující aproximaci: uij − ui−1,j 1 ui,j+1 − uij uij − ui,j−1 1 ui+1,j − uij − + − = ∆u ≈ h h h h h h ui+1,j − 2uij + ui−1,j ui,j+1 − 2uij + ui,j−1 = + , h2 h2 kde i, j = 1, . . . , N − 2. Do aproximace v uzlech na hranici intervalu Ω je třeba zahrnout též aproximaci hraničních podmínek (12). Celkově to bude vypadat takto: \ ui+1,j + ui−1,j + ui,j+1 + ui,j−1 − 4ui,j pro i, j ∈ N − 2, \ 2ui+1,j + ui,j+1 + ui,j−1 − 4ui,j pro i = 0, j ∈ N − 2, \ 2ui−1,j + ui,j+1 + ui,j−1 − 4ui,j pro i = N − 1, j ∈ N − 2, \ u + ui−1,j + 2ui,j+1 − 4ui,j pro i ∈ N − 2, j = 0, 1 i+1,j \ ∆u ≈ 2 · ui+1,j + ui−1,j + 2ui,j−1 − 4ui,j pro i ∈ N − 2, j = N − 1, h 2ui+1,j + 2ui,j+1 − 4ui,j pro i = 0, j = 0, 2ui+1,j + 2ui,j−1 − 4ui,j pro i = 0, j = N − 1, 2ui−1,j + 2ui,j+1 − 4ui,j pro i = N − 1, j = 0, 2ui−1,j + 2ui,j−1 − 4ui,j pro i = N − 1, j = N − 1. Soustavu rovnic (18) doplníme počátečními podmínkami c1[i][j] = u01 (zij ), c2[i][j] = u02 (zij ), c3[i][j] = u03 (zij ), abychom zachytili počáteční podmínky (13). i, j = 0, . . . , N − 1, 20 2. METODA PŘÍMEK 3. Rungova-Kuttova metoda s automatickou volbou kroku Na závěr této kapitoly obecně popíšeme jednu z modifikací známé Rungovy-Kuttovy metody, kterou je možné použít k řešení soustav obyčejných diferenciálních rovnic získaných použitím metody přímek. Nechť je dána soustava obyčejných diferenciálních rovnic ẏ = f (x, y), kde y : I → Rn a f : I × Rn → Rn , a počáteční podmínka y(x0 ) = y 0 , n kde x0 ∈ I a y 0 ∈ R . Chceme určit hodnotu řešení v bodě x ∈ I.2 Budiž ε maximální chyba přípustná v jednom kroku metody a ω ∈ (0, 8; 0, 9) korekční koeficient. Pak lze algoritmus metody vyjádřit následující posloupností úkonů: 1. Zvolme H > 0 tak, aby x0 + H ≤ x. 2. Spočítejme 3. 2 k1 = H · f (x0 , y 0 ), 1 H k 2 = H · f x0 + , y 0 + k 1 , 3 3 H 1 1 k 3 = H · f x0 + , y 0 + k 1 + k 2 , 3 6 6 H 1 3 k 4 = H · f x0 + , y 0 + k 1 + k 3 , 2 8 8 1 3 k5 = H · f x0 + H, y 0 + k1 − k3 + 2k4 , 2 2 1 E= 30 (2k1 − 9k3 + 8k4 − k5 ) , ε 15 0 H =H ·ω· . E (a) Je-li E > ε, položíme H = H 0 a dále pokračujeme bodem 2. (b) Je-li E ≤ ε, položíme x00 = x0 + H a 1 2 1 y 00 = y 0 + k1 + k4 + k5 . 6 3 6 0 Je-li x0 = x, výpočet ukončíme s výsledkem y 00 . V opačném případě položíme x0 = x00 , y 0 = y 00 , H = min(H 0 , x − x0 ) a pokračujeme bodem 2. V našem případě je samozřejmě vždy x > x0 , popsanou metodu lze však snadno modifikovat i pro případ x < x0 . KAPITOLA 3 Testování programu pro numerické řešení K numerickému řešení soustav reakčně-difúzní rovnic používám počítačový program, který jsem na základě podkladů poskytnutých mým školitelem napsal v jazyce C++. Tento program implementuje metodu přímek s využitím Rungovy-Kuttovy metody s automatickou volbou kroku, popsané v předchozí kapitole. Obsahem této kapitoly je popis a výsledky testů, které jsem s programem prováděl. Jak již bylo řečeno v úvodu, běžně dostupný matematický software neumožňuje řešit soustavy parabolických parciálních diferenciálních rovnic. To ovšem přináší problémy s testováním softwaru — získané výsledky není s čím srovnat. Proto jsem testy provedl na podobných problémech, u kterých bylo k dispozici přesné řešení. 1. Jednorozměrný případ Pro testování algoritmu v jedné dimenzi jsme postupovali takto: Nejprve jsme zvolili jednoduchý tvar polynomů f1 , f2 v soustavě (1) a pak jsme k rovnicím soustavy přidali pravou stranu tak, aby její řešení mělo tvar X(z, t) = 1 + Y (z, t) = 1 + √ √ 2 sin(πz) cos(πt), 2 sin(πz) cos(πt). Na pravou stranu první rovnice v (1) je tedy třeba přidat výraz √ ∂X D1 r1 (z, t) = − 2 ∆X − f1 (X, Y ) = − 2π sin(πz) sin(πt) + ∂t L √ √ D1 √ 2 + 2 2π sin(πz) cos(πt) − f1 1 + 2 sin(πz) cos(πt), 1 + 2 sin(πz) cos(πt) , L a podobně na pravou stranu druhé rovnice výraz √ ∂Y D2 r2 (z, t) = − 2 ∆Y − f2 (X, Y ) = − 2π sin(πz) sin(πt) + ∂t L √ √ D2 √ 2 + 2 2π sin(πz) cos(πt) − f2 1 + 2 sin(πz) cos(πt), 1 + 2 sin(πz) cos(πt) . L 21 22 3. TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ Řešená úloha bude mít tvar ∂X D1 = 2 ∆X + f1 (X, Y ) + r1 (z, t), ∂t L ∂Y D2 = 2 ∆Y + f2 (X, Y ) + r2 (z, t), ∂t L X(0, t) = X(1, t) = 1, Y (0, t) = Y (1, t) = 1, ∀t ∈ I, √ √ X(z, 0) = 1 + 2 sin(πz), Y (z, 0) = 1 + 2 sin(πz), ∀z ∈ (0, 1). Konkrétně jsme při testování používali následující funkce: A) f1 : (x, y) 7→ 1 − x, f2 : (x, y) 7→ 1 − y; B) f1 : (x, y) 7→ 1 − x2 , f2 : (x, y) 7→ 1 − x2 ; C) f1 : (x, y) 7→ (1 − x)(1 − y), f2 : (x, y) 7→ (1 − x)(1 − y). Pro každou z takto získaných úloh jsme sledovali závislost absolutní a relativní chyby na počtu uzlů položených v intervalu h0, 1i, na maximální chybě přípustné v jednom kroku Rungovy-Kuttovy metody a na difúzním koeficientu, přičemž za absolutní chybu jsme brali číslo ∆ = max max t∈I i∈{0, ..., N −1} |c[i](t) − X(zi , t)| a za relativní chybu číslo c[i](t) − X(zi , t) . δ = max max t∈I i∈{0, ..., N −1} X(zi , t) Poznámka 3.1. Vždy jsme kladli D1 = D2 = D. Tím pádem vycházely obě složky přibližného řešení stejné, tj. c1 [i](t) = c2 [i](t) = c[i](t), ∀i ∈ {0, . . . , N − 1}, ∀t ∈ I. Výsledky testů jsou uvedeny v příloze A (tabulky 1 – 9). Pokaždé jsme měli L = 1 (to je bez újmy na obecnosti, neboť je zřejmě jedno, zda měníme D nebo L). Tabulky 1 – 3 ukazují závislost absolutní a relativní chyby na počtu uzlů položených v intervalu h0, 1i. Difúzní koeficient byl D = 0, 1, maximální čas T = 50 a maximální chyba přípustná v jednom kroku Rungovy-Kuttovy metody ε = 10−9 . Z tabulek je patrné, že nejpřesnějších výsledků je dosaženo pro N okolo 100 – 150. Další zyšování počtu uzlů chybu zvyšuje. Tabulky 4 – 6 ukazují závislost absolutní a relativní chyby na maximální chybě přípustné v jednom kroku Rungovy-Kuttovy metody. Difúzní koeficient byl D = 0, 1, maximální čas T = 50 a počet uzlů N = 50. Vidíme, že efekt parametru ε se projevuje jen do určité meze, jeho snižování pod hodnoty řádu 10−9 již nemá významný vliv na přesnost výpočtu (v případě modelu B byl tento vliv dokonce negativní). 2. DVOUROZMĚRNÝ PŘÍPAD 23 Tabulky 7 – 9 zachycují závislost absolutní a relativní chyby na difúzním koeficientu D. Maximální čas byl T = 50, maximální chyba přípustná v jednom kroku Rungovy-Kuttovy metody ε = 10−9 a počet uzlů N = 50. Přesnost výpočtu, jak vidno, velmi výrazně závisí na řádu difúzního koeficientu. Možné příčiny jsou dvě: • Čím větší je difúzní koeficient, tím větší hodnoty vycházejí na pravé straně obyčejných diferenciálních rovnic získaných metodou přímek a tím více se budou hodnoty řešení v následujícím kroku lišit od hodnot v kroku předchozím. Proto budou zatíženy větší chybou. • Vysoká hodnota difúzního koeficientu znamená větší vliv difúzního členu a tím pádem se více projeví i chyba aproximace laplasiánu. Za povšimnutí též stojí, že u modelu C byla chyba při malých hodnotách difúzního koeficientu o řád větší než u prvních dvou modelů. 2. Dvourozměrný případ Pro testování algoritmu ve dvou dimenzích jsme postupovali tak, že jsme vynechali reakční členy, tzn. řešili jsme pouze trojici difúzních rovnic ∂u1 = D1 ∆u1 , ∂t ∂u2 = D2 ∆u2 , ∂t ∂u3 = D3 ∆u3 ∂t (19a) (19b) (19c) s hraničními podmínkami ∂u1 (x, y, t) = 0, ∂n ∂u2 (x, y, t) = 0, ∂n ∂u3 (x, y, t) = 0, ∂n (20a) ∀(x, y, t) ∈ ∂Ω × I, (20b) (20c) a to na čtverci Ω = (0, L) × (0, L). Difúzní rovnice na intervalu s homogenní Neumannovou hraniční podmínkou má analytické řešení, jež nalezneme separací proměnných. Vyřešme takto rovnici (19a), řešení zbylých dvou rovnic pak získáme snadnou obměnou. Předpokládejme tedy řešení první rovnice ve tvaru u1 (x, y, t) = v1 (x)v2 (y)v3 (t). Po dosazení do rovnice dostaneme v1 (x)v2 (y)v30 (t) = D1 v100 (x)v2 (y)v3 (t) + D1 v1 (x)v200 (y)v3 (t). 24 3. TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ Vydělíme-li (tam, kde u1 (x, y, t) 6= 0) tuto rovnost výrazem v1 (x)v2 (y)v3 (t), dostaneme v30 (t) v 00 (x) v 00 (y) = D1 1 + D1 2 . v3 (t) v1 (x) v2 (y) Tento vztah má platit pro všechna (x, y, t) ∈ Ω × I, pro která u1 (x, y, t) 6= 0, a proto se obě strany musejí rovnat téže konstantě C. Tím pádem získáváme dvojici diferenciálních rovnic v30 (t) = C, v3 (t) v 00 (y) v 00 (x) + D1 2 = C. D1 1 v1 (x) v2 (y) První rovnici snadno zintegrujeme: v3 (t) = K exp(Ct), kde K je libovolná konstanta. Ve druhé rovnici můžeme opět provést separaci proměnných a dostaneme v100 (x) = C 0, v1 (x) v 00 (y) = C − C 0. D1 2 v2 (y) D1 Jejich vyřešením dostaneme v1 (x) = K1 sin x v2 (y) = K3 sin y r C0 − D1 ! r + K2 cos x C − C0 − D1 ! r C0 − D1 r + K4 cos y ! , C − C0 − D1 kde K1 , K2 , K3 , K4 jsou libovolné konstanty. Funkce u1 má splňovat hraniční podmínku ∂u1 (x, y, t) = 0, ∂n ∀(x, y, t) ∈ ∂Ω × I. Odtud vyplývá, že v10 (x) = 0 pro x = 0, L; v20 (y) = 0 pro y = 0, L. ! , 2. DVOUROZMĚRNÝ PŘÍPAD 25 Přitom ! ! r r r 0 0 0 0 C C C C cos x − − K2 − sin x − , v10 (x) = K1 − D1 D1 D1 D1 ! ! r r r r 0 0 0 0 C − C C − C C − C C − C v20 (y) = K3 − cos y − − K4 − sin y − . D1 D1 D1 D1 r 0 0 Podmínku vq 1 (0) = 0 splníme položením K1 = 0. Ke splnění podmínky v1 (L) = 0 0 C stačí, aby L − D = kπ, kde k ∈ Z. Odtud 1 C0 = − k2π2 D1 . L2 Podobně dospějeme ke vztahům K3 = 0, resp. L tedy C − C0 = − q 0 − C−C = lπ, kde l ∈ Z. Je D1 l2 π 2 D1 L2 čili C=− k2π2 l2 π 2 k 2 + l2 2 D − D = − π D1 . 1 1 L2 L2 L2 Hledané řešení má tvar k 2 + l2 2 u1 (x, y, t) = K2 cos kπ · K4 cos lπ · K exp − π D1 t , L L L2 x y kde K2 , K4 a K jsou libovolné konstanty a k a l jsou libovolná celá čísla. Zřejmě můžeme položit K2 = K4 = 1, takže dostaneme 2 y x k + l2 2 u1 (x, y, t) = K cos kπ · cos lπ · exp − π D1 t , K ∈ R, k, l ∈ Z. L L L2 Zvolme L = 1. Z předchozího vyplývá, že soustavu (19) s hraničními podmínkami (20) řeší např. trojice funkcí u1 (x, y, t) = cos (πx) · cos (πy) · exp −2π 2 D1 t , u2 (x, y, t) = cos (πx) · cos (πy) · exp −2π 2 D2 t , u3 (x, y, t) = cos (πx) · cos (πy) · exp −2π 2 D3 t . Aby byla tato trojice funkcí jednoznačným řešením úlohy (19), (20), je třeba ji doplnit počátečními podmínkami u1 (x, y, 0) = cos (πx) · cos (πy) , u2 (x, y, 0) = cos (πx) · cos (πy) , u3 (x, y, 0) = cos (πx) · cos (πy) , ∀(x, y) ∈ Ω. 26 3. TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ Test programu opět spočíval ve sledování závislosti absolutní a relativní chyby na počtu uzlů položených v intervalu h0, 1i×h0, 1i, na maximální chybě přípustné v jednom kroku Rungovy-Kuttovy metody a na difúzním koeficientu, přičemž za absolutní chybu jsme brali číslo ∆ = max max t∈I i∈{0, ..., N −1} j∈{0, ..., N −1} |c[i][j](t) − X(zij , t)| a za relativní chybu číslo c[i][j](t) − X(zij , t) . δ = max max t∈I i∈{0, ..., N −1} X(zij , t) j∈{0, ..., N −1} Poznámka 3.2. Vždy jsme kladli D1 = D2 = D3 = D. Tím pádem vycházely všechny tři složky přibližného řešení stejné, tj. c1 [i][j](t) = c2 [i][j](t) = c3 [i][j](t) = c[i][j](t), ∀i, j ∈ {0, . . . , N − 1}, ∀t ∈ I. Výsledky testování jsou uvedeny v příloze A (tabulky 10 – 11). Tabulka 10 zachycuje závislost absolutní a relativní chyby na počtu uzlů položených v intervalu h0, 1i × h0, 1i. Difúzní koeficient byl D = 0, 01, maximální čas T = 10 a maximální chyba přípustná v jednom kroku Rungovy-Kuttovy metody = 10−9 . Podobně jako v jednorozměrném případě pozorujeme, že absolutní i relativní chyba klesá s rostoucím počtem uzlů až po jistou mez (zde zhruba 50 × 50 uzlů), od které dalším zvyšování počtu uzlů zvyšuje též chybu. Pokud jde o maximální přípustnou chybu Rungovy-Kuttovy metody v jednom kroku, její vliv nebyl pozorovatelný — výsledky výpočtu se pro ε řádu 1026 a 10−26 lišily až na šestém platném místě. Tabulka 11 zachycuje závislost absolutní a relativní chyby na difúzním koeficientu. Maximální čas byl T = 10, maximální chyba přípustná v jednom kroku Rungovy-Kuttovy metody ε = 10−9 a počet uzlů N = 20 × 20. Vliv difúzního koeficientu na chybu je zde ještě výraznější než v jednorozměrném případě. K možným příčinám, uvedeným výše v analýze jednorozměrného případu, je třeba připočíst fakt, že řešení závisí na difúzním koeficientu exponenciálně. KAPITOLA 4 Vizualizace výsledků Mé programy pro numerické řešení soustav reakčně-difúzních rovnic vytvářejí pro každou složku řešení textový soubor a do něj pak ve vhodném formátu ukládají výsledky výpočtu. V této závěrečné kapitole pojednám o tom, jak tyto výsledky vhodně zobrazit. 1. Jednorozměrný případ Časový vývoj řešení soustavy reakčně-difúzních rovnic na jednorozměrné oblasti lze graficky znázornit několika způsoby. V příloze B (obrázek 1) je jedním z nich zobrazen vývoj jednotlivých složek řešení úlohy (14) – (17), přičemž L = 1, D1 = 0, 008, D2 = 0, 004, A = 2, B = 5, 45 a √ B √ X0 (z) = A + 2 sin(πz), Y0 (z) = + 2 sin(πz), ∀z ∈ (0, 1). A Počet uzlů v intervalu h0, 1i byl roven 30, maximální chyba přípustná v jednom kroku Rungovy-Kuttovy metody byla ε = 10−9 . Grafy na obrázcích byly vytvořeny pomocí programu gnuplot, jenž je součástí standardních distribucí Linuxu. Tento program (mj.) umožňuje vytvořit prostorový graf funkce dvou proměnných na základě dat z textového souboru, ve kterém má každý řádek následující formát: x y f(x, y) V našem případě byla data v textovém souboru pro každou složku ve formátu: t zi cι [i] (Zde ι = 1, resp. ι = 2. Význam ostatních symbolů viz kapitolu 2.) Program gnuplot dále umožňuje export grafu do souboru ve formátu Encapsulated PostScript, tudíž lze takový graf snadno vložit do LATEXovského dokumentu. 2. Dvourozměrný případ Pro zobrazení časového vývoje řešení soustavy reakčně-difúzních rovnic na dvourozměrné oblasti již program gnuplot není příliš vhodný, např. proto, že síť položená na tomto intervalu nebývá natolik jemná, aby byl získaný graf dostatečně názorný. Napsal jsem tedy vlastní program, který umožňuje jak vhodné zobrazení výsledků, tak i export do souboru ve formátu Encapsulated PostScript. 27 28 4. VIZUALIZACE VÝSLEDKŮ Způsob vizualizace řešení byl inspirován článkem [2] a vyznačuje se tím, že jsou v jednom grafu zahrnuty stavy všech tří složek řešení v pevně daném čase. Každému uzlu, položenému v uzavřené oblasti Ω, odpovídá v grafu barevný bod, přičemž intenzita červené, zelené, resp. modré složky jeho barvy odpovídá hodnotě jednotlivých složkám řešení. V příloze B (obrázek 2) je zobrazen vývoj řešení úlohy (11) – (13), přičemž D1 = D2 = D3 = 10−4 , r1 = r2 = r3 = 1, ( 1 pro i = j, aij = 3 pro i 6= j. Počáteční podmínky byly zvoleny následovně: Nechť k, l ∈ N. Oblast Ω = (a, b)× (a, b) rozdělíme na k 2 čtvercových oblastí o velikosti strany l a každou z nich označíme dvojicí indexů (i, j), i, j = 0, . . . , k − 1, tak, aby uzel zij ležel v oblasti s indexem i j , . l l Počáteční podmínky stanovíme tak, aby v každém čtverci jedna složka měla větší hodnotu než zbylé dvě. Konkrétněji, ve čtverci s indexy (i, j) položíme všechny j 1 i složky rovny 7 a hodnotu ([ l ] + [ l ]) mod 3 + 1 -té složky zvýšíme o číslo √ 2 α = 100 . Formálně zapsáno, počáteční podmínky mají tvar ( 1 + α když [ il ] + [ jl ] ≡ 0 mod 3, u01 (zij ) = 71 jinak; 7 ( 1 + α když [ il ] + [ jl ] ≡ 1 mod 3, u02 (zij ) = 71 jinak; 7 ( 1 + α když [ il ] + [ jl ] ≡ 2 mod 3, u03 (zij ) = 71 jinak. 7 Počet uzlů v intervalu h0, 1i×h0, 1i byl roven 50×50, maximální chyba přípustná v jednom kroku Rungovy-Kuttovy metody byla ε = 10−6 . Závěr Předmětem zájmu této práce byly soustavy reakčně-difúzních rovnic, a to především z pohledu numerické matematiky. V úvodní kapitole této práce byly nejprve popsány konkrétní úlohy, jejichž numerické řešení jsme chtěli získat. Byly odvozeny jejich slabé formulace a zdůvodněna jejich správnost. Cílem mého výzkumného úkolu bylo připravit počítačový program pro numerické řešení soustav reakčně-difúzních rovnic. Největší část této práce je proto věnována popisu metod, které tento program implementuje, a testů, kterým jsem jej podrobil. Z provedených testů vyplývá, že tento program počítá dostatečně přesně zejména při nižších hodnotách difúzních koeficientů. Pro řešení úloh s vysokými hodnotami difúzních koeficientů by patrně byly vhodnější jiné metody a algoritmy. Dále se ukázalo, že není nutné (ani vhodné) tlačit do krajnosti počet uzlů sítě ani maximální chybu přípustnou v jednom kroku Rungovy-Kuttovy metody. S dodržením této zásady lze dosáhnout dostatečně přesných výsledků v rozumném čase (doba výpočtu na počítači s procesorem Intel Celeron 266 MHz jen výjimečně převýšila 1 hodinu). Dalším problémem, který jsem v rámci výzkumného úkolu řešil, bylo vhodné zobrazení získaných výsledků. Pro úlohy s jednorozměrnou oblastí se možnosti existujících zobrazovacích nástrojů (gnuplot) ukázaly jako dostatečné, pro úlohy s dvourozměrnou oblastí však nikoliv, a proto jsem vyvinul vlastní zobrazovací nástroj s možností exportu do souboru ve formátu Encapsulated PostScript. 29 30 ZÁVĚR PŘíLOHA A Výsledky testování programu pro numerické řešení 31 32 A. VÝSLEDKY TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ N 5 10 25 50 100 150 200 250 Tabulka 1. Model počtu uzlů. ∆ δ 0.019795 0.22686 0.00388927 0.351606 0.000556509 0.0495741 0.000133485 0.0182717 3.39747 ∗ 10−5 0.0032996 2.0716 ∗ 10−5 0.00337372 2.16363 ∗ 10−5 0.00806304 2.84382 ∗ 10−5 0.010139 A — závislost absolutní a relativní chyby na N 5 10 25 50 100 150 200 250 Tabulka 2. Model počtu uzlů. ∆ δ 0.029242 0.302257 0.00560396 0.493044 0.000801774 0.0693997 0.000192181 0.0244334 5.02901 ∗ 10−5 0.00470065 2.84141 ∗ 10−5 0.00430067 2.43285 ∗ 10−5 0.0103274 2.60854 ∗ 10−5 0.00888878 B — závislost absolutní a relativní chyby na N 5 10 25 50 100 150 200 250 Tabulka 3. Model počtu uzlů. ∆ δ 0.0428647 0.154669 0.00818467 0.266521 0.00116951 0.0371407 0.000281203 0.0126622 7.1499 ∗ 10−5 0.00253529 3.63318 ∗ 10−5 0.00217876 2.79871 ∗ 10−5 0.00816699 3.27591 ∗ 10−5 0.0080966 C — závislost absolutní a relativní chyby na A. VÝSLEDKY TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ ε ∆ δ 10−11 0.000133475 0.0182488 10−10 0.000133492 0.0182502 10−9 0.000133485 0.0182717 10−8 0.000138023 0.0184144 10−7 0.000219164 0.0256631 10−6 0.00117169 0.155181 10−5 0.0103673 1.11706 −4 10 0.104641 15.4027 Tabulka 4. Model A — závislost absolutní a relativní chyby na maximální přípustné chybě v jednom kroku Rungovy-Kuttovy metody. ε ∆ δ −11 10 0.000192193 0.0244852 10−10 0.000192193 0.024488 10−9 0.000192181 0.0244334 10−8 0.000199617 0.0257457 10−7 0.000268258 0.0387062 10−6 0.00108816 0.155724 10−5 0.00977959 1.71344 10−4 0.10056 14.7173 Tabulka 5. Model B — závislost absolutní a relativní chyby na maximální přípustné chybě v jednom kroku Rungovy-Kuttovy metody. ε ∆ δ 10−11 0.000280342 0.0125838 10−10 0.000280382 0.0125774 10−9 0.000281203 0.0126622 10−8 0.000286359 0.0129439 10−7 0.000326356 0.0153404 10−6 0.00102561 0.126752 10−5 0.0100757 1.77 −4 10 0.104618 8.35183 Tabulka 6. Model C — závislost absolutní a relativní chyby na maximální přípustné chybě v jednom kroku Rungovy-Kuttovy metody. 33 34 A. VÝSLEDKY TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ D 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 Tabulka 7. Model A difúzním koeficientu. ∆ δ 2.76178 ∗ 10−8 4.72596 ∗ 10−6 2.85423 ∗ 10−8 4.8786 ∗ 10−6 4.08645 ∗ 10−8 6.40508 ∗ 10−6 1.7834 ∗ 10−7 2.16732 ∗ 10−5 1.57833 ∗ 10−6 0.000174684 1.53939 ∗ 10−5 0.00173481 0.000133485 0.0182717 0.000430616 0.073687 — závislost absolutní a relativní chyby na D 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 Tabulka 8. Model B difúzním koeficientu. ∆ δ −8 1.61628 ∗ 10 2.69857 ∗ 10−6 −8 1.60836 ∗ 10 2.91169 ∗ 10−6 2.77414 ∗ 10−8 5.22401 ∗ 10−6 2.59572 ∗ 10−7 2.8348 ∗ 10−5 2.58446 ∗ 10−6 0.000259662 2.48041 ∗ 10−5 0.00257863 0.000192181 0.0244334 0.000481708 0.0817153 — závislost absolutní a relativní chyby na D 0.0000001 0.000001 0.00001 0.0001 0.001 0.01 0.1 1 Tabulka 9. Model C difúzním koeficientu. ∆ δ 3.6405 ∗ 10−7 4.6828 ∗ 10−5 3.64896 ∗ 10−7 4.68669 ∗ 10−5 3.73412 ∗ 10−7 4.7264 ∗ 10−5 4.79739 ∗ 10−7 5.19716 ∗ 10−5 2.82486 ∗ 10−6 0.000142774 3.15335 ∗ 10−5 0.00154703 0.000281203 0.0126622 0.000593295 0.0655849 — závislost absolutní a relativní chyby na A. VÝSLEDKY TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ N 5×5 10 × 10 20 × 20 50 × 50 100 × 100 200 × 200 500 × 500 Tabulka 10. Difúzní chyby na počtu uzlů. ∆ δ 0.0190066 4.66403 ∗ 1010 0.0037392 0.0199587 0.000838319 0.00445807 0.000126054 0.000979761 3.12726 ∗ 10−5 0.00240174 1.0586 ∗ 10−5 0.146545 1.74573 ∗ 10−5 2.32255 rovnice — závislost absolutní a relativní D ∆ δ −8 0.0000001 4.44807 ∗ 10 4.44816 ∗ 10−8 −7 0.000001 4.44729 ∗ 10 4.44816 ∗ 10−7 0.00001 4.43949 ∗ 10−6 4.44817 ∗ 10−6 0.0001 4.36218 ∗ 10−5 4.44826 ∗ 10−5 0.001 0.000365938 0.000444915 0.01 0.000838319 0.00445807 0.1 0.000838289 1632.17 1 0.000625471 4.54199 ∗ 1080 Tabulka 11. Difúzní rovnice — závislost absolutní a relativní chyby na difúzním koeficientu. 35 36 A. VÝSLEDKY TESTOVÁNÍ PROGRAMU PRO NUMERICKÉ ŘEŠENÍ PŘíLOHA B Výsledky numerických výpočtů 37 38 B. VÝSLEDKY NUMERICKÝCH VÝPOČTŮ 6 5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0 2 4 6 8 10 12 14 16 18 20 0 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 2 4 6 8 10 12 14 16 18 20 0 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 Obrázek 1. Časový vývoj jednotlivých složek řešení úlohy (14) – (17). Nahoře složka X, dole složka Y . B. VÝSLEDKY NUMERICKÝCH VÝPOČTŮ Obrázek 2. Řešení úlohy (11) – (13) v časech 0, 5, 10, 15, 20, 25, 30 a 35. 39 40 B. VÝSLEDKY NUMERICKÝCH VÝPOČTŮ Literatura [1] O. Mičan. Abstraktní funkce a jejich aplikace ve slabé formulaci smíšené úlohy pro reakčně-difúzní rovnice, rešeršní práce, FJFI ČVUT, Praha, 2001. [2] S.-I. Ei, R. Ikota, M. Mimura. Segregating partition problem in competition-diffusion systems, in: Interfaces and Free Boundaries, Volume 1, Issue 1, Oxford University Press, 1999. [3] P. Doktor. Moderní metody řešení parciálních diferenciálních rovnic, skripta MFF UK, Praha, 1976. [4] G. C. Reid. Thinking in PostScript, Addison-Wesley, http://www.rightbrain.com/, 1990. [5] J. Blank, P. Exner, M. Havlíček. Lineární operátory v kvantové fyzice, Karolinum, Praha, 1993. [6] M. Holodniok, A. Klíč, M. Kubíček, M. Marek. Metody analýzy nelineárních dynamických modelů, Academia, Praha, 1986. 41