zadania na laboratoria/ćwiczenia

Transkrypt

zadania na laboratoria/ćwiczenia
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
1. Hiperboliczne równania cząstkowe
⋆ przerabiane na zajęciach: 14 października 2016, 21 października 2016
† do oddania: 4 listopada 2016
(L) Zadanie 1. Dla wartości x ∈ [−1, 3] oraz t ∈ [0, 2.4] rozwiąż równanie transportu
u t + ux = 0
z warunkiem początkowym
u(0, x) =



cos2 πx


0
gdy |x| þ 12 ,
w p.p.
i warunkiem brzegowym u(t, −1) = 0.
Użyj następujących schematów:
(1) forward-time backward-space z parametrami λ = 0.8 oraz h =
(2) forward-time central-space z parametrami λ = 0.8 oraz h =
(3) Lax-Friedrichs z parametrami λ = 0.8 i 1.6 oraz h =
(4) leapfrog z parametrami λ = 0.8 oraz h =
1
, 1
10 20
i
1
, 1
10 20
1
, 1
10 20
1
, 1
10 20
i
i
i
1
,
40
1
,
40
1
,
40
1
.
40
Dla schematów (2)-(4), na prawym brzegu użyj warunku un+1
= un+1
M
M −1 , gdzie xM = 3. Dla
schematu (4) użyj schematu (2) do wyznaczenia rozwiązania dla n = 1.
Dla każdego schematu określ czy jest użyteczny. Na potrzeby tego ćwiczenia (tylko! ) uznajemy, że schemat nie jest użyteczny, jeśli |unm | jest większe niż 5 dla jakichkolwiek wartości m
i n. Uznajemy, że schemat jest użyteczny, jeśli rozwiązanie wygląda jak rozsądne przybliżenie
rozwiązania analitycznego (które znamy). Narysuj rozwiązania dla t = 2.4.
Co można powiedzieć o czasie "wybuchu" rozwiązania dla schematów nieużytecznych
dla malejących wymiarów siatki? Czy da się zaobserwować jakąś zależność? W przypadku
schematów użytecznych, jak szybko maleje błąd przybliżenia w funkcji malejących wymiarów
siatki?
1
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
(L) Zadanie 2. Rozwiąż układ równań
1
2
1
ut + (t − 2)ux + (t + 1)vx + u = 0,
3
3
3
1
1
1
vt + (t + 1)ux + (2t − 1)vx − v = 0
3
3
3
stosując schemat Laxa-Friedrichsa. Warunki początkowe są postaci
u(0, x) = max{0, 1 − |x|},
v(0, x) = max{0, 1 − 2|x|}.
Rozważ wartości x ∈ [−3, 3] oraz t ∈ [0, 2]. Niech h =
1
20
oraz λ = 12 . Na obu brzegach niech
u = 0 oraz v niech będzie równe wartości v w punkcie siatki odległym o 1 od brzegu. Opisz
zachowanie rozwiązania dla t ∈ [1.5, 2] (przyda się narysowanie tego rozwiązania). Układ
rozwiąż w podanej formie, nie próbuj go diagonalizować).
(L) Zadanie 3. Rozwiąż układ równań
1
2
ut + (t − 2)ux + (t + 1)vx = 0,
3
3
1
1
vt + (t + 1)ux + (2t − 1)vx = 0,
3
3
tak jak w poprzednim ćwiczeniu. Na podstawie wyników numerycznych spróbuj rozwiązać
ten układ równań analitycznie.
2
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
2-3. Własności schematów różnicowych
⋆ przerabiane na zajęciach: 28 października 2016
† do oddania: 18 listopada 2016
(L) Zadanie 1. Użyj niestabilnego schematu forward-time forward-space z danymi początkowymi
u0 (x) =



1 − |x|


0
gdy |x| þ 1,
w p.p.
na przedziale [−1, 3] dla t ∈ [0, 1]. Użyj siatki o parametrach h = 0.1 i λ = 0.8. Zaprezentuj
niestabilność schematu.
(L) Zadanie 2. Rozwiąż równanie
ut + (1 + αx)ux = 0
na przedziale [−3, 3] i t ∈ [0, 2] używając schematu Laxa-Friedrichsa dla α = −0.5 i λ = 1.
Zademonstruj, że niestabilność schematu pojawia się, gdy |(1 + αxm )λ| > 1.
3
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
4-5. Rząd zbieżności schematów różnicowych
⋆ przerabiane na zajęciach: 4 listopada 2016, 10 listopada 2016, 18 listopada 2016, 2 grudnia
2016
† do oddania: 9 grudnia 2016
(L) Zadanie 1. Rozwiąż zagadnienie ut + ux = 0, x ∈ [−1, 1], t ∈ [0, 1.2] z warunkiem
początkowym u(0, x) = sin 2πx i okresowym warunkiem brzegowym, tzn. u(t, 1) = u(t, −1).
Użyj dwóch metod:
(1) schematu forward-time backward-space z λ = 0.8,
(2) schematu Laxa-Wendroffa z λ = 0.8.
Pokaż, że rozwiązanie uzyskane w (1) jest rzędu 1, a rozwiązanie uzyskane w (2) jest rzędu 2
używając w obliczeniach h =
1
, 1, 1
10 20 40
i
1
.
80
(L) Zadanie 2. Rozwiąż problem początkowo-brzegowy
ut + ux = 0,
x ∈ [0, 1], t ÿ 0,
u(0, x) = sin 2πx,
x ∈ [0, 1],
schematem leapfrog i poniższymi warunkami brzegowymi:
(1) u(t, 0) – zdefiniowane, u(t, 1) – schemat (3),
(2) u(t, 0) – zdefiniowane, u(t, 1) = 0,
(3) u(t, 0) – schemat (3), u(t, 1) – schemat (4),
(4) u(t, 0) – zdefiniowane, u(t, 1) – schemat (4)
Użyj parametrów h = 0.02, λ = 0.9. Tylko jeden z tych schematów powinien dać dobry
wynik.
(L) Zadanie 3. Zaimplementuj algorytm Thomasa.
(L) Zadanie 4. Rozwiąż problem początkowo brzegowy omawiany w zadaniu 2 schematem
Cranka-Nicolsona. Zbadaj zachowanie rozwiązań.
4
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
(L) Zadanie 5. Użycie schematu Cranka-Nicolsona do rozwiązania problemu z okresowym
warunkiem brzegowym wymaga lekkiej modyfikacji algorytmu Thomasa.
Rozważmy układ równań
ai wi−1 + bi wi + ci wi+1 = di ,
i = 1, . . . , m − 1,
gdzie w0 = wm oraz wm+1 = w1 . Rozwiązujemy trzy układy równań, każde dla i = 1, . . . , m:
ai xi−1 + bi xi + ci xi+1 = di ,
x0 = 0, xm+1 = 0,
(1)
ai yi−1 + bi yi + ci yi+1 = 0,
y0 = 1, ym+1 = 0,
(2)
ai zi−1 + bi zi + ci zi+1 = 0,
z0 = 0, zm+1 = 1.
(3)
Każdy z tych układów bazuje na tych samych macierzach, ale innych prawych stronach,
zatem wykorzystują te same pi ale inne qi .
Rozwiązanie wi otrzymujemy jako
wi = xi + ryi + szi .
Stałe r i s dobieramy tak, by zagwarantować okresowość rozwiązania. Warunek w0 = wm
staje się r = ry0 = xm + rym + szm , a warunek wm+1 = w1 to s = szm+1 = x1 + ry1 + sz1 .
Wystarczy zatem rozwiązać układ równań o niewiadomych r i s.
Zaimplementuj zmodyfikowany algorytm Thomasa i wykorzystaj go do rozwiązania zagadnienia z okresowym warunkiem brzegowym.
5
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
7. Analiza von Neumanna
⋆ przerabiane na zajęciach: 25 listopada 2016
† do oddania: 9 grudnia 2016
(L) Zadanie 1. Dla wartości x ∈ [−1, 7] oraz t ∈ [0, 2.4] rozwiąż równanie transportu
u t + ux = 0
z warunkiem początkowym
u(0, x) =



cos2 πx


0
gdy |x| þ 12 ,
w p.p.
i okresowym warunkiem brzegowym. Użyj schematów:
(1) leapfrog (dla n = 1 użyj schematu forward-time central-space),
(2) Lax-Wendroff,
z parametrami λ = 0.9 i h =
1
.
10
Zaobserwuj pojawiające się oscylacje. Czy w przypadku obu
schematów zachowują się identycznie?
(L) Zadanie 2. Przeprowadź identyczny eksperyment jak powyżej dla warunku początkowego zdefiniowanego następująco:
unm = (−1)n+m ε,
m ∈ Z,
gdzie n jest równe 0 i 1 (w przypadku schematu leapfrog lub 0 (dla schematu Lax-Wendroff ).
Jak zachowują się rozwiązania?
(L) Zadanie 3. Zaimplementuj zmodyfikowaną metodę leapfrog i zbadaj jej zachowanie na
przykładach z poprzednich dwóch zadań.
6
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
8-10. Paraboliczne równania różniczkowe cząstkowe
⋆ przerabiane na zajęciach: 9 grudnia 2016, 16 grudnia 2016, 21 grudnia 2016
† do oddania: 22 grudnia 2016
(L) Zadanie 1. Zaimplementuj podane schematy dla podstawowego równania parabolicznego, tzn. równania przewodnictwa ciepła ut = buxx + f z warunkiem początkowym u0 i brzegowym typu Dirichleta oraz typu Neumanna (zaimplementuj warunek, który nie obniży rzędu
metody).
(L) Zadanie 2. Rozwiąż zagadnienie początkowo brzegowe
ut = buxx ,
−1 þ x þ 1,
u(0, x) = u0 (x),
gdzie
u0 (x) =





1




1

2






0
jeśli |x| <
1
2
jeśli |x| =
1
2
jeśli |x| > 12 .
Rozwiąż zagadnienia aż do t = 12 . Warunek brzegowy i dokładne rozwiązanie są zadane przez
u(t, x) =
∞
Ø
1
cos π(2ℓ + 1)x −π2 (2ℓ+1)2 t
.
+ 2 (−1)ℓ
e
2
π(2ℓ + 1)
ℓ=0
Użyj schematu Cranka-Nicolsona z h =
1
, 1
10 20
oraz
1
.
40
Porównaj dokładność i efektywność
metody dla λ = 1 i µ = 10.
Pokaż ponadto, że jeśli λ jest stała, to błąd rozwiązania mierzony w normie supremum
nie zmniejsza się, ale błąd mierzony w normie L2 zmniejsza się.
(L) Zadanie 3. Zaimplementuj schemat forward-time central-space rozwiązywania równania
konwekcji-dyfuzji i zaobserwuj oscylacje, które pojawiają się po złamaniu warunku h þ
2b
.
a
Następnie zastosuj schemat ze zmodyfikowaną różnicą skończoną dla składnika konwekcyjnego i zaobserwuj różnice między wynikami.
7
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
11-12. Równania drugiego rzędu
⋆ przerabiane na zajęciach: 13 stycznia 2017, 20 stycznia 2017
† do oddania: 27 stycznia 2017
(L) Zadanie 1. Użyj schematu
δt2 unm + 2cδt0 δx0 unm = a2 δx2 unm
dla równania
utt + 2cutx = a2 uxx ,
by uzyskać przybliżone rozwiązanie na przedziale −1 þ x þ 1 i 0 þ t þ 1. Jako dane
początkowe weź
u0 (x) = cos πx,
u1 (x) = c sin πx.
Jako dane brzegowe użyj dokładnego rozwiązania
gdzie η± = c ±
√
1
u(t, x) = (cos π(x − η+ t) + cos π(x − η− t)),
2
c2 + a2 . Przyjmij c = 0.5 oraz a = 1 i użyj siatki
1
, 1
10 20
oraz
1
40
dla λ = 1.
Pokaż, że schemat jest schematem drugiego rzędu.
(L) Zadanie 2. Użyj standardowego schematu drugiego rzędu, by uzyskać przybliżone rozwiązanie równania falowego utt = uxx na przedziale 0 þ x þ 1 i 0 þ t þ 1. Jako dane
początkowe i jako warunek brzegowy typu Dirichleta na brzegu x = 1 użyj analitycznego
rozwiązania
u(t, x) = cos(x + t) + cos(x − t),
a na brzegu x = 0 użyj warunku typu Neumanna ux = 0. Zaimplementuj warunki brzegowe
un+1
=
0
4un+1
− un+1
1
2
,
3
= 2un0 − u0n−1 − 2a2 λ2 (un0 − un1 )
un+1
0
(są to warunki drugiego rzędu) oraz warunek pierwszego rzędu δ+ u0 = 0 (tzn. różnica skończona w przód).
Użyj siatki
1
, 1
10 20
i
1
40
oraz λ = 1. Zademonstruj zbieżność drugiego rzędu rozwiązania
dla schematów z warunkami brzegowymi drugiego rzędu oraz zbieżność pierwszego rzędu dla
schematu z warunkiem brzegowym pierwszego rzędu.
8
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
13-14. Eliptyczne równania różniczkowe cząstkowe
15. Metody iteracyjne dla rzadkich układów liniowych
⋆ przerabiane na zajęciach: 21 lutego 2017, 28 lutego 2017
† do oddania: 7 marca 2017
(L) Zadanie 1. Zaimplementuj funkcję, która rozwiązuje równanie Poissona uxx + uyy = f
w prostokącie Ω = [0, a] × [0, b] z warunkiem brzegowym
(1) typu Dirichleta: u|∂Ω = g,
(2) typu Neumanna:
∂u
∂n |∂Ω
= g.
W przypadku warunku typu Neumanna należy dodatkowo określić jeden punkt (o współrzędnych (x0 , y0 ), niekoniecznie na brzegu), w którym zdefiniowana jest wartość funkcji
u0 = u(x0 , y0 ).
Równanie należy rozwiązać metodą SOR (5-punktowy laplasjan), dobierając krok siatki
h = ∆x = ∆y oraz parametr relaksacyjny ω. Punkt startowy algorytmu iteracyjnego zadany
jest funkcją u[0] wewnątrz zbioru Ω. Obliczenia należy zakończyć, gdy zmiany rozwiązania
w kolejnych iteracjach (mierzone za pomocą normy L2 na siatce) zaczynają być mniejsze niż
zadany parametr ε. Nagłówek funkcji powinien mieć postać
function [u, X, Y, M, N] = PoissonEquationSOR(f, g, Omega, options)
gdzie f i g to funkcje anonimowe lub macierze opisujące f i g, Omega to wektor współrzędnych
górnego prawego wierzchołka prostokąta Ω, a options to struktura z polami:
(1) boundary – o wartości ’Dirichlet’ lub ’Neumann’,
(2) additionalPoint – o wartości [x0, y0, u0], jeśli pole boundary równe ’Neumann’,
(3) fType, gType – o wartości ’function’ lub ’matrix’,
(4) h, omega, error – o wartościach liczbowych,
(5) iter0 – punkt startowy algorytmu (macierz), jeśli nie istnieje to macierz zer,
9
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
(L) Zadanie 2. Korzystając z metody SOR rozwiąż równanie Poissona
uxx + uyy = −2 cos x sin y
w kwadracie jednostkowym. Warunki brzegowe oraz dokładne rozwiązanie dane są wzorem
u = cos x sin y. Użyj standardowej siatki 5-punktowej z krokiem h = ∆x = ∆y = 0.1,
0.05 oraz 0.025. Jako punktu startowego algorytmu iteracyjnego użyj rozwiązania zerowego
wewnątrz kwadratu. Jak zmienia się dokładność metody przy różnych wartościach kroku
siatki?
Użyj ω =
2
1+πh
i zatrzymaj algorytm iteracyjny, gdy zmiany rozwiązania w kolejnych
iteracjach (mierzone za pomocą normy L2 na siatce) są mniejsze niż 10−7 .
10
Warsztaty badawcze – zadania na ćwiczenia & laboratorium
16-18. Równanie Naviera-Stokesa
⋆ przerabiane na zajęciach: 7 marca 2017, 14 marca 2017, 21 marca 2017, 4 kwietnia 2017
† do oddania: 11 kwietnia 2017
(L) Zadanie 1. Napisz skrypt, który rozwiązuje zagadnienie dla układu równań NavieraStokesa omawiane na wykładzie (i umieszczone na poniższym rysunku). Przykładowe wartości
parametrów użytych w zagadnieniu to ν = 0.1 oraz Ug = 4.
Zagadnienie należy rozwiązać metodą funkcji strumienia i wirowości omówioną na wykładzie. Na początek warto przyjąć siatkę, która dzieli rozważany zbiór na 128 komórek
w poziomie i 128 komórek w pionie. Siatkę czasową przyjmij jako ∆t = 10−4 . W częściach
algorytmu, które implementują metodę SOR przyjmij ̟ =
2
1+sin πh
jako parametr relaksa-
cji (h = ∆x = ∆y) oraz ε = 10−4 jako tolerancję normy zmiany rozwiązania w kolejnych
iteracjach.
Skrypt powinien wyświetlać:
(1) pole wektorowe u będące rozwiązaniem zagadnienia,
(2) naniesiona na to pole przykładową trajektorię cząstki startującą z wybranego punktu,
(3) wykres funkcji wirowości ω (ile było potrzebnych iteracji algorytmu SOR?),
(4) wykres funkcji strumienia ψ (ile było potrzebnych iteracji algorytmu SOR?).
Ze względu na wielkość siatki czasowej nie należy wyświetlać rozwiązań w każdym kroku, ale
na przykład co 100 kroków.
✻
✲ ✲ ✲ ✲ ✲ ✲ ✲ ✲ ✲ ✲
u = (Ug , 0)
u = (0, 0)
1
u = (0, 0)
❄
u = (0, 0)
✛
✲
1
11

Podobne dokumenty