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