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