Zadania numeryczne
Transkrypt
Zadania numeryczne
102 |Dh f − f 0 | |Dh2 f − f 0 | |Dh3 f − f 0 | 100 10−2 |∆ f 0 | 10−4 10−6 10−8 10−10 10−12 10−14 10−18 10−16 10−14 10−12 10−10 10−8 10−6 10−4 10−2 100 h Figure 1: Bład ˛ bezwzgl˛edny pochodnej obliczonej trzema metodami dla f (x ) = e x w punkcie x = 1. Wst˛ep do metod numerycznych Zadania numeryczne Uwagi ogólne. • Zadania należy przesyłać spakowane do formatu tar.gz (np. pod linuxem można wykonać komend˛e tar -czvf zad01.tar.gz Zad01). • W paczce powinny znajdować si˛e kody źródłowe (najlepiej z Makefilem), wyniki w formie tekstowej i opis (opracowanie) w pdf. • Zadania prosz˛e wysyłać poprzez formularz znajdujacy ˛ si˛e na mojej stronie th.if.uj.edu.pl/~trom/Metody_Numeryczne_1/login.php • W opracowaniu prosz˛e zwi˛eźle opisać wybór i opis metody, a także podać szacunkowy koszt (złożoność) programu oraz krótka˛ analiz˛e bł˛edów. N1. Napisz program testujacy ˛ trzy metody liczenia pochodnej dla różnych wartości h . Prosz˛e zrobić wykres zależności |Dh f (x ) − f 0 (x )| od h w skali logarytmicznej dla funkcji f (x ) = sin(x ) w punkcie x = 1. Odczytać z wykresu optymalna˛ wartość h oraz dokładność z jaka˛ można obliczyć pochodna. ˛ Patrz rys. 1. f (x + h ) − f (x ) Dh 1 f = , h Dh 2 f = Dh 4 f = f (x + h ) − f (x − h ) , 2h − f (x + 2h ) + 8 f (x + h ) − 8 f (x − h ) + f (x − 2h ) . 12h 1 N2. Napisz program, który faktycznie sprawdza do jakiej pot˛egi można podnieść szybciej wykonujac ˛ mnożenia. Uwaga: obliczenia (pow(x,n)) oraz własna˛ metoda˛ należy wykonywać wielokrotnie, tak aby czas działania programu był zauważalny np. rz˛edu sekundy. N3. Oblicz wartość wyrażenia: f (x ) = N X cos(n x ) exp(−n ) n =0 dobierajac ˛ N tak aby dokładność wyniku była 10−10 dla x = 0.2. Funkcji cos i exp można użyć tylko jeden raz! Zlicz ilość operacji wg. nast˛epujacych ˛ danych: • wszystkie obliczenie arytmetyczne i logiczne +1, • każdorazowe uruchomienie własnej funkcji +1, • funkcje z biblioteki matematycznej (cos i exp) +30. Ocenie b˛edzie podlegała głównie ilość operacji. Wskazówka: W celu efektywnego obliczenia cos n x warto posłużyć si˛e wzorem: cos((n + 1)x ) = 2 cos x cos(n x ) − cos((n − 1)x ) N4. Rozwiazać ˛ układ równań: 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 0 x1 1 0 x2 2 0 x3 3 0 x4 = 4 . 0 x5 5 1 x6 6 4 x7 7 Skorzystać z faktu, że macierz jest macierza˛ trójdiagonalna. ˛ N5. Korzystajac ˛ ze wzoru Shermana-Morrisona rozwiazać ˛ poniższy układ równań: 4 1 0 0 0 0 1 1 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 0 0 0 0 0 1 4 1 1 x1 1 0 x2 2 0 x3 3 0 x4 = 4 . 0 x5 5 1 x6 6 4 x7 7 Uwaga: Prosz˛e rozwiazać ˛ układ bez znajdowania macierzy A −1 . Zamiast tego zapis typu x = A −1 b należy rozumieć jako rozwiazanie ˛ układu A x = b . N6. Znaleźć rozwiazanie ˛ układu N × N równań o poniższej strukturze: dla n = 0 u n = 1 (D2 + D1 + 41) u = 0 dla 0 < n < N − 1 u = 1 dla n = N − 1 n gdzie macierze D sa˛ zdefiniowane w nast˛epujacy ˛ sposób (dla n 6= 0 ∧ n 6= N − 1): (D1 )mn = −δn ,m+1 + δn ,m−1 /(2h ), 2 (D2 )m n = δn ,m+1 − 2δn ,m + δn ,m−1 /(h 2 ), oraz h = 4.0/(N − 1). Wskazówka: macierz dla takiego układu jest macierza˛ trójdiagonalna. ˛ Co si˛e stanie jeśli ostatnie równanie b˛edzie miało postać: −3u 0 + 4u 1 − u 2 = 0? Rozwiaż ˛ powyższe równania, a rozwiazania ˛ przedstaw na wykresie (xn = nh , u n ) dla dużego N, np. N = 1001. N7. Zaimplementować metod˛e: • relaksacyjna˛ x (n+1) = x (n) + γ b − A x (n ) , • Jacobiego: x (n +1) = D −1 b − R x (n ) , • Gausa-Seidla x (n+1) = L −1 b − U x (n ) , • Successive OverRelaxation ω (n+1) (n ) xi = (1 − ω)xi + ai i ! bi − X (n +1) ai j x j − j <i X (n ) ai j x j , i = 1, 2, . . . , N . j >i Prosz˛e znaleźć rozwiazania ˛ układu A x = b , gdzie 4 −1 0 2 4 −1 , b = 6 A = −1 0 −1 4 2 z dokładnościa˛ 10−10 . Która metoda jest najszybsza? N8. Znaleźć wartości własne macierzy z dokładnościa˛ 10−8 1 2 3 A = 2 4 5 , 3 5 −1 korzystajac ˛ z metody pot˛egowej, Rayleigha i metody iteracyjnej QR: B (0) = A, Q (n ) R (n ) = B (n ) , B (n +1) := R (n )Q (n ) . N9. Znaleźć 4 wektory własne odpowiadajace ˛ najmniejszym wartościom własnym macierzy N × N zdefiniowanej w nast˛epujacy ˛ sposób: A n ,m = −δn ,m+1 + 2δn,m − δn ,m−1 h2 + 6δn ,m cosh2 (xn ) , dla h = 20/(N − 1) oraz xn = (n − N /2)h . Prosz˛e wybrać duże N ∼ 100 . . . 1000. Jako rozwiazanie ˛ prosz˛e podać wartości własne oraz dla każdej ze znalezionych wartości własnych narysować wykres {xn , vn }. Wskazówka1: najlepiej skorzystać z metody Rayleigha lub odwrotnej metody pot˛egowej. Wskazówka2: macierz w zadaniu jest znowu macierza˛trójdiagonalna, ˛ w˛ec rozwiazanie ˛ odpowiedniego układu równań nie jest zbyt kosztowne. 3 N10. Znaleźć wszystkie rozwiazania ˛ równania det(A − λ1) wszystkimi metodami omawianymi na zaj˛eciach z dokładnościa˛ 10−8 . Które metody działaja˛ najszybciej? A jest macierza˛ z zadania N8. N11. Rozwiazać ˛ równanie z 3 − 1 = 0, z ∈ C metoda˛ Newtona. Zaznaczyć różnymi kolorami baseny atrakcji poszczególnych rozwiaza ˛ ń na płaszczyźnie (Rez , Imz ). N12. Rozwiazać ˛ równanie z 3 + 3z 2 − 5z + 9 = 0, z ∈ C metoda˛ Newtona. Zaznaczyć różnymi kolorami baseny atrakcji poszczególnych rozwiaza ˛ ń na płaszczyźnie (Rez , Imz ) ∈ [−6, 2] × [−4, 4]. Uwaga: Trzema atraktorami b˛eda˛ rozwiazania ˛ równania, czwartym b˛edzie dwucykl (±1, 0). N13. Znaleźć wszystkie rozwiazania ˛ układu równań: ¨ x y − exp(−x + y ) sin x 2 + y − 0.9 x = 0, = 0. w kwadracie (−2, 2) × (−2, 2). Można korzystać z gotowych bibliotek numerycznych, ale nie z gotowych programów typu Mathematica. N14. Znaleźć rozwianie ˛ nast˛epujacego ˛ układu N równań nieliniowych na N niewiadomych u n : =0 u 0 u n −1 − 2u n + u n +1 − 2h 2 u n (u n2 − 1) = 0, dla 0 < n < N − 1 u =1 N −1 dla dużego N = 100..1000 oraz h = 20/(N − 1). Narysować wykres rozwiazania ˛ (nh , u n ). Wskazówka1: oczywiście jakobian b˛edzie macierza˛trójdiagonalna, ˛ co mocno przyspieszy rozwiazy˛ wanie problemu metoda˛ Newtona. Wskazówka2: Gdy dane poczatkowe ˛ zostana˛ źle dobrane, metoda Newtona może źle działać, wtedy można poczatkowo ˛ zmniejszyć krok. N15. Znaleźć minimum funkcji F (u 0 , . . . , u N −1 ) = N −2 X n=0 2 1 u n+1 − u n 2 1 2 + un − 1 , 2 h 2 dla h = 20.0/(N −1) oraz duże N ≈ 100 . . . 1000 przy dodatkowych warunkach u 0 = 0 oraz u N −1 = 1, metoda˛ wyżarzania. N16. Znajdź interpolacj˛e funkcji f1 (x ) = 1 2 oraz f2 (x ) = e −x 2 1+ x na przedziale x ∈ [−5, 5] • dla N równoodległych punktów. Dla jakiego N otrzymamy najmniejszy bład ˛ przybliżenia σ = max| f (x ) − fa p p r o x (x )|? Dlaczego z funkcja˛ f1 sa˛ takie problemy? Narysuj wykresy (również poza punktami interpolacji!) dla N minimalizujacego ˛ bład. ˛ 2 ptk. π . Jaka˛ teraz można uzyskać dokładność? Dlaczego? 2 ptk. • dla N punktów xn = 5 cos Nn−1 • Wykonaj aproksymacj˛e przy użyciu splajnów kubicznych dla N równoodległych punktów. Ile punktów by musiało być aby osiagn ˛ ać ˛ dokładność taka˛ jak w poprzednim podpunkcie? 2 ptk. 4 • Wykonaj aproksymacj˛e przy pomocy funkcji sinc: f (x ) ≈ N −1 X f (xn ) sinc n =0 x −x n h xn = −5 + nh , , sinc(x ) = sin(πx ) , πx h = 10/(N − 1). 2 ptk.. Uwaga: w tym zadaniu najważniejsza jest właściwa analiza i wnioski i to one stanowia˛ podstaw˛e oceny. N17. Obliczyć całk˛e Z 1 2 ex dx p 1− x2 −1 z dokładnościa˛ do 10−6 za pomoca˛ złożonej metody trapezów, Simpsona i reguły 3/8, stosujac ˛ iteracyjne zag˛eszczanie podprzedziałów. Uwaga: za liczenie dwukrotnie (lub wi˛ecej) wartości funkcji w obr˛ebie jednej metody przy zag˛eszczaniu b˛eda˛ odejmowane punkty. Wskazówka: zmienić zmienne tak aby pozbyć si˛e nieskończoności na brzegach przedziału. N18. Korzystajac ˛ z szybkiej transformaty Fouriera (np. DCT-II z biblioteki FFTW) oblicz współczynniki rozkładu funkcji N X 1 = cn TL n (x ) f (x ) = 1 + x 2 n =0 w bazie wielomianów Chebysheva dla przedziału x ∈ [0, ∞) oraz N = 200. Wskazówka: wprowadzajac ˛ zmienna˛ s x t = 2 arc cot L zamieniamy TL n (x ) = cos(n t ). • Narysować współczynniki w skali logarytmicznej (n , log |cn |). Jak duże N można wziać? ˛ • Obliczyć pochodna˛ g (x ) = d f /d x w każdym z punktów interpolacyjnych, narysować wykres i porównać z wartościami dokładnymi. • Obliczyć całk˛e h (x ) = x Z d x 0 f (x 0 ) 0 w każdym z punktów interpolacyjnych, narysować wykres i porównać z wartościami dokładnymi. Jaka jest złożoność obliczeniowa obliczenie pochodnej i całki w punktach interpolacyjnych? Wskazówka: proces obliczania pochodnej i całki można przyspieszyć (za dodatkowe 2ptk.) korzystajac ˛ z odwrotnych transformacji cosinusowej i sinusowej. N19. Stosujac ˛ FFT prosz˛e znaleźć cz˛estości kilku pierwszych ≥ 3 dźwi˛eków jednego z utworów (najlepiej zapis nutowy) th.if.uj.edu.pl/trom/Metody_Numeryczne_1/sample1.wav th.if.uj.edu.pl/trom/Metody_Numeryczne_1/sample2.wav przygotowane w formacie wav 44100Hz, 2ch, 16bit/sample (4 bajty jedna próbka w dwóch kanałach po 2 bajty). Uwaga: w muzyce standardowo dźwi˛ekowi A 4 przypisuje si˛e cz˛estotliwość 440Hz. Oktawa (2 razy wi˛eksza cz˛estość) podzielona jest na 12 półtonów ω1 /ω2 = 2(n1 −n2 )/12 . Np. dźwi˛eki A 4 (440Hz) i d 5# (622.25Hz) sa˛ oddalone o 6 półtonów. 5