Obliczenia Naukowe i Metody Numeryczne Laboratorium

Transkrypt

Obliczenia Naukowe i Metody Numeryczne Laboratorium
Obliczenia Naukowe i Metody Numeryczne
Laboratorium Komputerowe
lista 4 – 5 października 2012
Temat: interpolacja i iteracyjne metody obliczania zer funkcji
Uwagi. Zalecane jest graficzne ilustrowanie przeprowadzonych eksperymentów numerycznych. Należy zrealizować zadanie obowiązkowe i jedno z zadań do wyboru (interpolacja lub
iteracyjne metody).
Metody iteracyjne – zadanie obowiązkowe
Eksperymentalnie zbadać szybkość zbieżności co najmniej dwóch spośród następujących
iteracyjnych metod obliczania zera funkcji f (x):
• metoda bisekcji
• metoda siecznych
xk+1 = xk −
• metoda Pegasus
if f (k+1 )f (xk ) < 0
if
f (xk+1 )f (xk ) > 0
• metoda Illinois
if f (k+1 )f (xk ) < 0
if
f (xk+1 )f (xk ) > 0
xk − xk−1
f (xk )
f (xk ) − f (xk−1 )
then (xk−1 , f (xk−1 ) is replaced by (xk , f (xk )),
f (x
)f (x )
k
then (xk−1 , f (xk−1 )) is replaced by xk−1 , f (xkk−1
)+f (xk+1 ) ,
then (xk−1 , f (xk−1 ) is replaced by (xk , f (xk )),
then (xk−1 , f (xk−1 )) is replaced by (xk−1 , f (xk−1 )/2),
• metoda Steffensena
xk+1 = xk −
f (xk )
,
g(xk )
gdzie
g(xk ) =
• metoda Newtona
xk+1 = xk −
f (xk + f (xk )) − f (xk )
f (xk )
f (xk )
f 0 (xk )
• metoda Halleya
xk+1 = xk −
1
,
ak
gdzie ak =
f 0 (xk ) 1 f 00 (xk )
−
.
f (xk )
2 f 0 (xk )
• modyfikacje metody Newtona: Chcemy obliczyć zero funkcji f (x). Metodę Newtona
zamiast do funkcji f stosujemy
do pewnej zmodyfikowanej funkcji fˆ, zależnej od f . Na
p
0
ˆ
przykład dla f (x) = f (x)/ f (x) otrzymamy metodę Halleya (zob. Ben Israel).
• metoda Olvera
xk+1 = xk −
f (x)
1 f (xk )2 f 00 (xk )
−
f 0 (x) 2 [f 0 (xk )]3
1
Obliczać:
• liczbę wykonanych iteracji iterwyk ,
• błędy ek = |xk − ξ|, jeśli znane jest dokładne zero ξ funkcji f , oraz
xk+1 − xk ,
f (xk ),
|xk+1 − xk |/|xk+1 |.
Jeśli liczba iteracji będzie bardzo duża, to wyświetlać tylko niektóre spośród powyższych
wielkości - z informacją, w jakiej iteracji one wystąpiły - lub wyniki dla 10 ostatnich
iteracji, itp.
• Dla metody siecznych dodatkowo obliczać:
ek ek−1 ,
ek+1 /(ek−1 ek ),
√
(1+ 5)/2
ek+1 / ek
.
• Zastosować różne kryteria kończenia procesu iteracyjnego, na przykład:
|xk+1 − xk | ¬ δ1 |xk |,
|xk+1 − xk | ¬ δ2 ,
k ¬ itermax ,
|xk+1 − xk | ¬ δ3 |xk | + δ4 ,
|f (xk )| ¬ δ5
Przykłady funkcji testowych
Uwaga. Obok funkcji jest podany przedział, w którym należy szukać jej zera. Parametr n jest
liczbą naturalną.
• f (x) =
• f (x) =
1
x ∈ [0, 5],
x−π ,
x3 − 2x − 5, x ∈
[0, 3],
p
• f (x) = sign(x − 2) |x − 2|,
• f (x) = x2 − (1 − x)n ,
• f (x) = (1 + (1 −
n)2 )x
x ∈ [1, 4],
[0, 1],
− (1 − nx)2 , [0, 1],
• f (x) = ex − 3x2 , zera w pobliżu −0.5 oraz 4
• f (x) = x(x − 3) − 4(sin x)2 , [3, 4]
• f (x) = x2 − (1 − x)n , [0, 1], n = 1, 5, 10
• f (x) = (1 + (1 − n)4 )x − (1 − nx)4 , [0, 1], n = 1, 4, 8
• f (x) = (x − 1)exp(−nx) + xn , [0, 1], n = 1, 5, 10
• f (x) = xn + x, [−0.75, 0.5], n = 3, 5, 9, 19
• f (x) = xn + x + 10−4 , [−0.75, 0.5], n = 3, 5, 9, 19
• f (x) = sin x − 0.5, [0, 1.5]
• f (x) = 2xexp(−n) + 1 − 2exp(−nx), [0, 1], n = 1, 2, 3, 4
• f (x) = x − exp(−x), [0, 1]
• f (x) = sin x, [1, 6], [1, 10]
• f (x) = tg(x) − cos(x) − 0.5, [0, 3]
• f (x) = xn
2
• f (x) = e1−x − 1
• f (x) = xe−3x
• f (x) = x1/3 - x0 6= 0
• Perfidny wielomian Wilkinsona: w(x) = (x − 1)(x − 2) . . . (x − 20).
• w(x) = (x − 1)8 = x8 − 36x7 + 546x6 − 4536x5 + 22449x4 − 67284x3 + 118124x2 −
109584x + 40320, [0.99, 1.01], [7.99, 8.01].
• f (x) = arctg(x)
Zadania do wyboru – interpolacja
1. Wyznaczać ciąg wielomianów wn (x), stopnia n, interpolujących funkcję f (x) = 1/(1 +
25x2 ) na przedziale [−a, a] z węzłami równoodległymi. Obliczenia wykonać dla n =
1, 2, 3, .... i różnych wartości parametru a. Wielomiany interpolujące wyznaczyć za pomocą wzoru Newtona. Obliczenia powtórzyć dla innych funkcji f , np. dla funkcji f (x) =
1−|x|, f (x) = cos (x). Badać, czy wielomian interpolacyjny wn (x) co raz lepiej przybliża
funkcję f , jeśli zwiększamy n. Czy taki sam wniosek otrzymuje się dla wszystkich x z
przedziału [−a, a]? Obliczenia powtórzyć dla węzłów Czebyszewa.
2. Zbadać zbieżność wielomianów interpolacyjnych dla następujących funkcji interpolowanych (zob. skrypt Grabarski,...)
• f (x) = x + sin (2x),
• f (x) = |x|, ,
x ∈ [−2, 1],
x ∈ [−1, 1],
• f (x) = 1/(1 + x2 ),
x ∈ [−5, 5].
• jakaś inna funkcja.
Wybrać węzły równoodległe i węzły Czebyszewa.
3. Zapoznaj się z wzorem interpolacyjnym Newtona dla wielomianu interpolacyjnego z
węzłami równoodległymi, w którym stosuje się różnice progresywne (zob. np. Fortuna, Macukow, ..., str. 49 ). Przeprowadź eksperymenty numeryczne, korzystając z tego
wzoru i z wzoru Lagrange’a.
4. Wiadomo, że współczynniki wielomianu interpolacyjnego Lagrange’a można wyznaczyć
rozwiązując układ równań liniowych z macierzą Vandermonde’a. Zastosuj to do wyznaczenia współczynników wielomianu interpolacyjnego z węzłami interpolacji, na przykład,
xj = j dla j = 0, 1, 2, . . . , n. Obliczaj wskaźnik uwarunkowania macierzy Vandermonde’a. Ten sam wielomian interpolacyjny wyznacz inną metodą. Porównaj wartości obu
wyznacznych wielomianów interpolacyjnych w jakichś punktach z przedziału zawierającego węzły interpolacji.
5. Wielomian interpolujący wn daną funkcję f w danych węzłach interpolacji xj można
przedstawić np. w postaci Lagrange’a i postaci Newtona. Werner zaproponował sposób
przejścia od postaci Lagrange’a do postaci Netwona. Zrealizować algorytmy obliczania
wartości wielomianu interpolacyjnego podanego w postaci Lagrangre’a oraz zamiany
postaci Lagrange’a na postać Newtona. Porównać dokładność wyników uzyskanych za
3
√
pomocą obu wzorów na przykład dla funkcji f (x) = 1 + x2 . Jako węzły interpolacji
wybrać
2j + 1 xj = cos
π , 0 ¬ j ¬ n.
2(n + 1)
Obliczyć błąd f − wn w 19 punktach równoodległych z przedziału [−1, 1] (wystarczy
wyznaczyć maksymalny moduł tych różnic).
Literatura:
W. Werner, Polynomial interpolation: Lagrange versus Newton, Mathematics of Computation, 43 (1984), 205–217.
6. Wielomian interpolacyjny w postaci Lagrange’a można przekształcić do postaci barycentrycznej. Porównać algorytmy obliczania wartości wielomianu interpolacyjnego z wzoru
Lagrange’a i z wzoru w postaci barycentrycznej. Eksperymenty numeryczne wykonać
podobne jak w innych zadanich. Postać barycentryczna wielomianu interpolacyjnego:
wn (x) =
n
X
i=1
n
.X
ωi
ωi
f (xi )
,
x − xi
x − xi
i=1
gdzie
.
ωi = 1
n
Y
(xi − xj ),
x 6= xi
(i = 0, . . . , n),
i = 0, 1, . . . , n.
j=0,j6=i
Literatura:
Jean-Paul Berrut, L.N. Trefethen, Barycentric Lagrange interpolation, SIAM Review,
2005 (zob. strona domowa Trefethena).
7. Wyznaczyć wielomian interpolujący funkcję f (x) = (1+x2 )−1 na przedziale [−5, 5] w 21
węzłach równoodległych (końce przedziału są węzłami). Porównać wartości wielomianu
interpolacyjnego w 41 punktach równoodległych z przedziału [−5, 5] z dokładnymi wartościami funkcji f . To samo wykonać dla węzłów losowo wybranych z przedziału [−5, 5]
iπ
oraz xi = 5cos 20
(0 ¬ i ¬ 20) i dla xi = 5cos 2i+1
42 π (0 ¬ i ¬ 20). Obliczenia powtórzyć
dla innej liczby węzłów. Wielomiany interpolujące wyznaczyć za pomocą wzoru Newtona. Obliczenia powtórzyć na przykład dla funkcji f (x) = |x| i f (x) = max{0, 1 − x} na
przedziale [−4, 4].
8. Wyznaczać ciąg wielomianów wn (x), stopnia n, interpolujących funkcję f (x) = ex na
przedziale [0, a] z węzłami równoodległymi. Obliczenia wykonać dla n = 1, 2, 3, .... i
różnych wartości parametru a. Wielomiany interpolujące wyznaczyć za pomocą wzoru Newtona, wykorzystując fakt, że węzły są równoodległe. Obliczenia powtórzyć dla
innych funkcji f , np. dla funkcji f (x) = x sin πx . Badać, czy wielomian interpolacyjny
dobrze przybliża funkcję f .
√
√
Testy wykonać też dla funkcji f (x) = arc sin x na przedziale [−1/ 2, 1/ 2]. Zbadać,
√jak
√
wielomian interpolacyjny przybliża funkcję dla argumentów z przedziału [−1/ 2, 1/ 2].
Dla argumentów spoza tego przedziału skorzystać ze wzoru
sin (π/2 − α) = cos α =
q
1 − sin2 (x).
√
√
Testy wykonać też dla funkcji f (x) = arc sin x na przedziale [−1/ 2, 1/ 2]. Zbadać,
√
√jak
wielomian interpolacyjny przybliża funkcję dla argumentów z przedziału [−1/ 2, 1/ 2].
4
Dla argumentów spoza tego przedziału skorzystać ze wzoru
sin (π/2 − α) = cos α =
q
1 − sin2 (x).
9. Wyznaczyć wielomian p (interpolacja Hermite’a) spełniający warunki:
p(xi ) = f (xi ),
p0 (xi ) = f 0 (xi )
dla i = 0, 1, . . . , n,
gdzie a = x0 < x1 < . . . < xn = b. Zastosować uogólnione ilorazy różnicowe i wzór interpolacyjny Newtona dla węzłów wielokrotnych (zob. podręcznik Kincaida i Cheneya).
Obliczenia wykonać dla węzłów równoodległych. Ocenić dokładność, z jaką wielomian
interpolacyjny przybliża daną funkcję
10. Wyznaczyć wielomian interpolacyjny Hermite’a dla węzłów Czebyszewa, czyli pierwiastków wielomianu Czebyszewa Tn+1 . W tym przypadku wielomian interpolacyjny ma
szczególną postać (zob. Phillips, Taylor, str. 146-147). Obliczenia wykonać m.in. dla
funkcji sin πx na przedziale [0, 1]. Ocenić, z jaką dokładnością wielomian interpolacyjny
przybliża funkcję.
Literatura:
G.M. Phillips, P.J. Taylor, Theory and applications of numerical analysis, Academic
Press, London 1996.
11. Wiadomo, że funkcja (zob. Cheney, str. 63)
f (x) =
1 − tx
,
1 − 2tx + t2
|t| < 1,
ma następujący szereg Czebyszewa
∞
X
1 − tx
tj Tj (x).
=
1 − 2tx + t2 j=0
Niech wielomian wn−1 , stopnia ¬ n − 1, interpoluje funkcję f w węzłach interpolacji
xi będących pierwiastkami wielomianu Czebyszewa Tn (x). Wówczas (zob. Cheney, str.
135)
n−1
X
1
wn−1 (x) = a0 T0 (x) +
aj Tj (x),
2
j=1
gdzie
aj =
n
2X
f (xi )Tj (xi ).
n i=1
Przeprowadzić eksperymenty numeryczne pokazujące jak wielomian interpolacyjny wn−1
Pn−1 j
i suma częściowa szeregu Czebyszewa sn = j=0
t Tj (x) przybliżają funkcję f . Rozważyć dwa przypadki: 0.5 < |t| < 1 i |t| ¬ 0.5. Do obliczania sum częściowych szeregu
Czebyszewa zastosować algorytm Clenshawa (zob. Paszkowski, str. 275). Uwaga. Nie
stosować procedur podanych w książce Paszkowskiego, tylko napisać własną wersję programu.
Literatura:
1. E.W. Cheney, Introduction to approximation theory, McGraw-Hill, New York 1966.
2. S. Paszkowski, Zastosowania numeryczne wielomianów i szeregów Czebyszewa, PWN,
Warszawa 1975.
5
Zadania do wyboru – metody iteracyjne
1. Zastosuj metodę bisekcji do wyznaczenia dodatniego rozwiązania równania
2x
= arc tg(x).
1 + x2
Obliczone rozwiązanie przyjmij jako przybliżenie początkowe x0 dla metody Newtona
zastosowanej do wyznaczenia zera funkcji f (x) = arctg(x). Zinterpretuj wyniki.
2. Wielomian w(x) = 816x3 −3835x2 +6000x−3125 ma trzy pierwiastki rzeczywiste bliskie.
Narysuj wykres wielomianu na przedziale [1.43, 1.7]. Zastosuj następujące metody
• metod Newtona, x0 = 1.5,
• metoda siecznych, x0 = 1, x1 = 2,
• metoda bisekcji, początkowy przedział [1, 2],
do wyznaczenia jego pierwiastków
3. Wielowymiarowa metoda Newtona służy do rozwiązywania układu równań nieliniowych.
Może być zastosowana do wyznaczenia wartości własnej λ i wektora własnego x macierzy
A: Ax = λx, x 6= 0. Niech
"
#
Ax − λx
f (x, λ) =
.
xT x − 1
Wówczas wektor x i liczba λ są rozwiązaniem układu równań f (x, λ) = 0, gdy λ jest wartością własną macierzy A, a x odpowiadającym jej wektorem własnym unormowanym.
Niech
"
#
Ax − λI −x
J(x, λ) =
.
2xT
0
J jest macierzą stopnia n + 1, gdzie n jest stopniem macierzy A. Wielowymiarowa
metoda iteracyjna Newtona, zastosowana do układu f (x, λ) = 0, ma postać:
"
xk+1
λk+1
#
"
=
xk
λk
#
"
+
sk
δk
#
,
gdzie jest rozwiązaniem układu równań liniowych
"
A − λk I −xk
2xTk
0
#"
sk
δk
#
"
=−
Axk − λk xk
xTk xk − 1
#
.
Wobec tego w każdej iteracji trzeba rozwiązywać układ równań liniowych. Napisz program wyznaczający wartość własną i wektor własny metodą Newtona. Dla porównania
zastosuj funkcję eig. Jako przybliżenie początkowe wybierz dowolny wektor x0 unormowany, ||x0 ||2 = 1, a za przybliżenie początkowe przyjmij λ0 = xT0 Ax0 . Proces iteracyjny
wykonuj tak długo, aż spełniona będzie nierówność
||xk+1 − xk ||2 ¬ .
Sprawdzaj też, czy |λk+1 − λk | ¬ . Uwaga. Wektor xk jest k-tym przbliżeniem wektora
własnego, a λk jest k-tym przybliżeniem wartości własnej.
6
4. Zbadać wpływ krotności zera funkcji na szybkość zbieżności metody Newtona. Wybrać kilka funkcji testowych, na przykład, f (x) = (x − 1)m . Oliczenia powtórzyć dla
zmodyfikowanej metody Newtona
xk+1 = xk − m
f (xk )
,
f 0 (xk )
gdzie m jest znaną krotnością zera.
5. Zastosować iteracyjną metodę Newtona wyznaczania zera funkcji do obliczenia pierwiastków wielomianu ze współczynnikiem 1 przy najwyższej potędze. Wartości wielomianu i jego pochodnej wyznaczać jednocześnie za pomocą odpowiedniej modyfikacji
algorytmu Hornera - jest to szczególny przypadek algorytmu Shaw-Trauba (zob. Jankowscy, str. 40, Kincaid, Cheney str. 120-124). Obliczenia wykonywać dla wielomianów o
(obl)
znanych pierwiastkach. Niech ξ1
będzie obliczonym iteracyjną metodą Newtona przybliżeniem pierwiastka wielomianu w(x). Wykonać deflację wielomianu w(x) czynnikiem
(obl)
liniowym x − ξ1
i wyznaczyć kolejny pierwiastek wielomianu w(x) stosując iteracyjną
(obl)
metodę Newtona do wielomianu u(x)/(x−ξ1 ). itd Obliczone w ten sposób pierwiastki
wielomianu w porównać z pierwiastkami dokładnymi i obliczonymi za pomocą funkcji
roots. Zastosować trzy sposoby wykonywania deflacji wielomianu : algorytm Hornera, odwrotny algorytm Hornera, sklejany algorytm Hornera (zob. Kiełbasiński, Cohen).
Zbadać, jak kolejność wyznaczania pierwiastków ma wpływ na ich dokładność
6. Zastosować iteracyjną metodę Newtona (metoda stycznych) wyznaczania zera funkcji
do obliczenia pierwiastków wielomianu ze współczynnikiem 1 przy najwyższej potędze.
Wartości wielomianu i jego pochodnej wyznaczać jednocześnie za pomocą odpowiedniej
modyfikacji algorytmu Hornera - jest to szczególny przypadek algorytmu Shaw-Trauba
(zob. Jankowscy, str. 40, Kincaid, Cheney str. 120-124). Obliczenia wykonywać dla
(obl)
wielomianów o znanych pierwiastkach. Niech ξ1
będzie obliczonym iteracyjną metodą Newtona przybliżeniem pierwiastka wielomianu w(x). Wykonać deflację wielomianu
(obl)
w(x) czynnikiem liniowym x − ξ1
i wyznaczyć kolejny pierwiastek wielomianu w(x)
(obl)
stosując iteracyjną metodę Newtona do wielomianu u(x)/(x−ξ1 ). itd Obliczone w ten
sposób pierwiastki wielomianu w porównać z pierwiastkami dokładnymi i obliczonymi
za pomocą funkcji roots. Zastosować trzy sposoby wykonywania deflacji wielomianu :
algorytm Hornera, odwrotny algorytm Hornera, sklejany algorytm Hornera (zob. Kiełbasiński, Cohen). Zbadać, jak kolejność wyznaczania pierwiastków ma wpływ na ich
dokładność.
7. Zastosować iteracyjną metodę Bairstowa do wyznaczenia dzielnika kwadratowego wielomianu w(x) ( Niech
w(x) = (x2 + px + q)u(x) + ax + b,
gdzie
a = a(p, q), b = b(p, q).
Wiadomo, że macierz pochodnych cząstkowych funkcji a(p, q) i b(p, q) jest nieosobliwa w
punkcie (p,q) wtedy i tylko wtedy, gdy wielomiany x2 +px+q i u(x) nie mają wspólnych
pierwiastków.
W metodzie Bairstowa wyznacza się ciągi p0 , p1 , . . . i q0 , q1 , . . . kolejnych przybliżeń
współczynników poszukiwanego dzielnika kwadratowego. Kryterium kończenia procesu
7
iteracyjnego:
|pk+1 − pk |2 + |qk+1 − qk |2 ¬ ε(p2k + qk2 )
lub k > kmax , gdzie kmax jest zadaną maksymalną liczbą iteracji, które można wykonać.
Testy wykonać m.in. dla wielomianów
• w(x) = x4 + 2sx3 + s2 x2 + 1, gdzie s jest dowolnym parametrem. Przbliżenie
początkowe x2 + p0 x + q0 dzielinika kwadratowego wybrać tak: p0 = s, q0 = v (v
dowolne).
• w(x) = (x2 +tx+v)(x2 +tx+s)+(s−v)2 , gdzie t, s, v są dodowlnymi parametrami.
Przbliżenie początkowe x2 + p0 x + q0 dzielinika kwadratowego wybrać tak: p0 =
t, q0 = v.
Chętni studenci oprócz klasycznej wersji metody Bairstowa mogą przetestować jej modyfikację zaproponowaną przez Cohena.
Literatura
1. A. Ben-Israel, Newton method with modified functions, Contemporary Math. 24 (1997),
39–50. (praca jest dostępna na stronie domowej Ben-Israela
http://rutcor.rutgers.edu/ ˜ bisrael/).
2. W. Cheney, D. Kincaid, Numerical Mathematics and Computing, Brooks/Cole, 1980.
3. A.M. Cohen, Is the polynomial so perfidious?, Numerische Mathematik 68 (1994), 225–
238.
4. Z. Fortuna, B. Macukow, J. Wąsowski, Metody numeryczne, WNT, Warszawa 1998.
5. A. Grabarski, I. Musiał-Walczak, W. Sadkowski, A. Smoktunowicz, J. Wąsowski, Ćwiczenia laboratoryjne z metod numerycznych, praca zbiorowa pod red. J. Wąsowskiego,
Oficyna Wyd. Politechniki Warszawskiej, Warszawa 2002.
6. J. i M. Jankowscy, M. Dryja Przegląd metod i algorytmów numerycznych, część 2, WNT,
Warszawa 1982.
7. T. Fiała, A. Krebsz, On the convergence and divergence of Bairstow method, Numerische Mathematik 50 (1987), 477–482.
8. A. Kiełbasiński, Zagadnienie deflacji wielomianowej, Matematyka Stosowana III (1974),
93–106.
9. A. Kiełbasiński, H. Schwetlick, Numeryczna algebra liniowa, WNT, Warszawa 1992.
10. D. Kincaid, W. Cheney, Analiza numeryczna, WNT, Warszawa, 2005.
11. E. Stożek, Metody numeryczne w zadaniach, Wyd. Uniw. Łódzkiego, Łódź 1994.
Krystyna Ziętak
8

Podobne dokumenty