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