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 x k+1 = x k x k x k 1 f(x k ) f(x k 1 ) f(x k) metoda Pegasus if f( k+1 )f(x k ) < 0 then (x k 1, f(x k 1 ) is replaced by (x k, f(x k )), ( ) f(x if f(x k+1 )f(x k ) > 0 then (x k 1, f(x k 1 )) is replaced by x k 1, k 1 )f(x k ) f(x k )+f(x k+1 ), metoda Illinois if f( k+1 )f(x k ) < 0 then (x k 1, f(x k 1 ) is replaced by (x k, f(x k )), if f(x k+1 )f(x k ) > 0 then (x k 1, f(x k 1 )) is replaced by (x k 1, f(x k 1 )/2), metoda Steffensena x k+1 = x k f(x k) g(x k ), gdzie g(x k) = f(x k + f(x k )) f(x k ) f(x k ) metoda Newtona x k+1 = x k f(x k) f (x k ) metoda Halleya x k+1 = x k 1, gdzie a k = f (x k ) a k f(x k ) 1 f (x k ) 2 f (x k ). 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 przykład dla ˆf(x) = f(x)/ f (x) otrzymamy metodę Halleya (zob. Ben Israel). metoda Olvera x k+1 = x k f(x) f (x) 1 f(x k ) 2 f (x k ) 2 [f (x k )] 3 1
Obliczać: liczbę wykonanych iteracji iter wyk, błędy e k = x k ξ, jeśli znane jest dokładne zero ξ funkcji f, oraz f(x k ), x k+1 x k, x k+1 x k / x k+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ć: ( e k e k 1, e k+1 /(e k 1 e k ), e k+1 / e (1+ 5)/2 k Zastosować różne kryteria kończenia procesu iteracyjnego, na przykład: x k+1 x k δ 1 x k, x k+1 x k δ 2, x k+1 x k δ 3 x k + δ 4, ). k iter max, f(x k ) δ 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) = 1 x π, x [0, 5], f(x) = x 3 2x 5, x [0, 3], f(x) = sign(x 2) x 2, x [1, 4], f(x) = x 2 (1 x) n, [0, 1], f(x) = (1 + (1 n) 2 )x (1 nx) 2, [0, 1], f(x) = e x 3x 2, zera w pobliżu 0.5 oraz 4 f(x) = x(x 3) 4(sin x) 2, [3, 4] f(x) = x 2 (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) + x n, [0, 1], n = 1, 5, 10 f(x) = x n + x, [ 0.75, 0.5], n = 3, 5, 9, 19 f(x) = x n + 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) = x n 2
f(x) = e 1 x 1 f(x) = xe 3x f(x) = x 1/3 - x 0 0 Perfidny wielomian Wilkinsona: w(x) = (x 1)(x 2)... (x 20). w(x) = (x 1) 8 = x 8 36x 7 + 546x 6 4536x 5 + 22449x 4 67284x 3 + 118124x 2 109584x + 40320, [0.99, 1.01], [7.99, 8.01]. f(x) = arctg(x) Zadania do wyboru interpolacja 1. Wyznaczać ciąg wielomianów w n (x), stopnia n, interpolujących funkcję f(x) = 1/(1 + 25x 2 ) 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 w n (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), x [ 2, 1], f(x) = x,, x [ 1, 1], f(x) = 1/(1 + x 2 ), 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, x j = 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 w n daną funkcję f w danych węzłach interpolacji x j 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 + x 2. Jako węzły interpolacji wybrać ( 2j + 1 ) x j = cos 2(n + 1) π, 0 j n. Obliczyć błąd f w n 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: gdzie w n (x) = n i=1 ω / i n ω i f(x i ), x x i (i = 0,..., n), x x i x x i=1 i / n ω i = 1 j=0,j i (x i x j ), i = 0, 1,..., n. 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+x 2 ) 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] oraz x i = 5cos iπ 20 (0 i 20) i dla x i = 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 w n (x), stopnia n, interpolujących funkcję f(x) = e x 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 α = 1 sin 2 (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 α = 1 sin 2 (x). 9. Wyznaczyć wielomian p (interpolacja Hermite a) spełniający warunki: p(x i ) = f(x i ), p (x i ) = f (x i ) dla i = 0, 1,..., n, gdzie a = x 0 < x 1 <... < x n = 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 T n+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) = ma następujący szereg Czebyszewa 1 tx, t < 1, 1 2tx + t2 1 tx 1 2tx + t 2 = j=0 t j T j (x). Niech wielomian w n 1, stopnia n 1, interpoluje funkcję f w węzłach interpolacji x i będących pierwiastkami wielomianu Czebyszewa T n (x). Wówczas (zob. Cheney, str. 135) w n 1 (x) = 1 n 1 2 a 0T 0 (x) + a j T j (x), j=1 gdzie a j = 2 n f(x i )T j (x i ). n i=1 Przeprowadzić eksperymenty numeryczne pokazujące jak wielomian interpolacyjny w n 1 i suma częściowa szeregu Czebyszewa s n = n 1 j=0 tj T j (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 x 0 dla metody Newtona zastosowanej do wyznaczenia zera funkcji f(x) = arctg(x). Zinterpretuj wyniki. 2. Wielomian w(x) = 816x 3 3835x 2 +6000x 3125 ma trzy pierwiastki rzeczywiste bliskie. Narysuj wykres wielomianu na przedziale [1.43, 1.7]. Zastosuj następujące metody metod Newtona, x 0 = 1.5, metoda siecznych, x 0 = 1, x 1 = 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 0. Niech [ ] Ax λx f(x, λ) = x T. 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, λ) = 2x T. 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 x k sk Axk λ 2x T = k x k k 0 x T k x k 1 δ k ]. 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 x 0 unormowany, x 0 2 = 1, a za przybliżenie początkowe przyjmij λ 0 = x T 0 Ax 0. Proces iteracyjny wykonuj tak długo, aż spełniona będzie nierówność x k+1 x k 2 ɛ. Sprawdzaj też, czy λ k+1 λ k ɛ. Uwaga. Wektor x k 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 gdzie m jest znaną krotnością zera. x k+1 = x k m f(x k) f (x k ), 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 znanych pierwiastkach. Niech ξ (obl) 1 będzie obliczonym iteracyjną metodą Newtona przybliżeniem pierwiastka wielomianu w(x). Wykonać deflację wielomianu w(x) czynnikiem liniowym x ξ (obl) 1 i wyznaczyć kolejny pierwiastek wielomianu w(x) stosując iteracyjną metodę Newtona do wielomianu u(x)/(x ξ (obl) 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 wielomianów o znanych pierwiastkach. Niech ξ (obl) 1 będzie obliczonym iteracyjną metodą Newtona przybliżeniem pierwiastka wielomianu w(x). Wykonać deflację wielomianu w(x) czynnikiem liniowym x ξ (obl) 1 i wyznaczyć kolejny pierwiastek wielomianu w(x) stosując iteracyjną metodę Newtona do wielomianu u(x)/(x ξ (obl) 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) = (x 2 + 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 x 2 +px+q i u(x) nie mają wspólnych pierwiastków. W metodzie Bairstowa wyznacza się ciągi p 0, p 1,... i q 0, q 1,... kolejnych przybliżeń współczynników poszukiwanego dzielnika kwadratowego. Kryterium kończenia procesu 7
iteracyjnego: p k+1 p k 2 + q k+1 q k 2 ε(p 2 k + q 2 k) lub k > k max, gdzie k max jest zadaną maksymalną liczbą iteracji, które można wykonać. Testy wykonać m.in. dla wielomianów w(x) = x 4 + 2sx 3 + s 2 x 2 + 1, gdzie s jest dowolnym parametrem. Przbliżenie początkowe x 2 + p 0 x + q 0 dzielinika kwadratowego wybrać tak: p 0 = s, q 0 = v (v dowolne). w(x) = (x 2 +tx+v)(x 2 +tx+s)+(s v) 2, gdzie t, s, v są dodowlnymi parametrami. Przbliżenie początkowe x 2 + p 0 x + q 0 dzielinika kwadratowego wybrać tak: p 0 = t, q 0 = 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