Metody numeryczne Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Elektrotechnika stacjonarne-dzienne pierwszego stopnia z tyt. inżyniera Informatyka stacjonarne-dzienne drugiego stopnia z tyt. magistra inżyniera Całkowanie numeryczne Laboratorium, prowadzący: mgr inż. Błażej Cichy Rok akademicki 1/11 1 Uwagi teoretyczne 1.1 Kwadratury Newtona-Cotesa Kwadratury Newtona-Cotesa polegają na całkowaniu wielomianu Lagrange a, który jest reprezentowany następująco: f(x) P n (x) = f k L n,k (x) (1) k= Ogólnie metoda całkowania Newtona-Cotesa posiada następującą postać: x n x n f(x)dx P n (x)dx = x n ( n ) f k L n,k (x) k= = n k= ( x n L n,k (x)dx dx = n ) k= ( x n f k = n w k f k k= f k L n,k (x)dx ) = () Pierwsze cztery kwadratury są następujące: x 1 f(x)dx h(f + f 1 ) regua trapezu x f(x)dx h(f + 4f 1 + f ) regua Simpsona x f(x)dx h(f 8 + f 1 + f + f ) regua Simpsona/8 f(x)dx h(7f 45 + f 1 + 1f + f + 7f 4 ) regua Boole a () 1
Całkowanie numeryczne 1. Wyprowadzenie metody Simpsona Rozpoczynamy od zdefiniowania wielomianu Lagrange a (lista zadań o interpolacji) stopnia drugiego: (x x 1 )(x x ) P (x) = f ( x 1 )( x ) + f (x )(x x ) 1 (x 1 )(x 1 x ) + f (x )(x x 1 ) (x )(x x 1 ) Całkujemy wielomian wyciągając przed znak całki wartości funkcji: x P (x) = f x (x x 1 )(x x ) ( x 1 )( x ) dx + f 1 x x (x )(x x 1 ) +f (x )(x x 1 ) dx (x )(x x ) (x 1 )(x 1 x ) dx Aby wykonać całkowanie należy wprowadzić nowe oznaczenia, x = +ht oraz dx = h dt. Zmieniamy zakres całkowania od to t Ponieważ węzły są równo rozmieszczone, czyli x k = +kh co oznacza, że różnicę elementów x k x j możemy zastąpić przez (k j)h oraz różnicę x x k przez h(t k). Po podstawieniu możemy wykonać dalsze przekształcenia: x P (x) f h(t)h(t ) h dt + f h(t )h(t ) h(t )h(t) ( h)( h) 1 h dt + f (h)( h) h dt = (h)(h) (4) (5) = f h = f h (t t + )dt f 1 h (t t)dt + f h (t t)dt = ( ) t t + t t= ( ) t f 1 h t= ( ) t h t + f t= t = t= t= t= (6) h = f f 1h 4 + f h = h(f + 4f 1 + f ) 1. Złożona metoda trapezów Znaczące polepszenie numerycznego całkowania uzyskamy, jeśli poszczególne metody zostaną zastosowane dla podprzedziałów. Załóżmy że mamy pięć punktów:,..., x 4. Gdy będziemy całkować każdy podprzedział oddzielnie do możemy zastosować np.: metodę trapezów: x 1 x f(x)dx = f(x)dx + f(x)dx + f(x)dx + f(x)dx x 1 x x h (f + f 1 ) + h (f 1 + f ) + h (f + f ) + h (f + f 4 ) = = h (f + f 1 + f + f + f 4 ) Błąd E T n (f) w złożonej metodzie trapezów można wyznaczyć ze wzoru En T (f) = h (b a) f (c n ) 1 gdzie c n jest nieznanym punktem w przedziale [a, b], zaś h = (b a)/n. Natomiast oszacowanie błędu dla dużych wartości n określone jest wzorem x E T n (f) h 1 (f (b) f (a)). (7)
Całkowanie numeryczne 1.4 Złożona metoda Simpsona Podobnie jak w poprzedniej metodzie również dla metody Simpsona możemy polepszyć jakość całkowania, jeśli będziemy stosować dla mniejszych przedziałów. x f(x)dx = f(x)dx + f(x)dx x h (f + 4f 1 + f ) + h (f + 4f + f 4 ) = h (f + 4f 1 + f + 4f + f 4 ) Błąd E S n (f) w metodzie Simpsona można wyznaczyć ze wzoru En S (f) = h4 (b a) f (4) (c n ) 18 gdzie c n jest nieznanym punktem w przedziale [a, b], h = (b a)/n, zaś f (4) oznacza czwartą pochodną funkcji f. Oszacowanie błędu dla dużych wartości n określone jest wzorem Metoda Gaussa.1 Wstęp E S n (f) h4 18 (f (b) f (a)) Stosowanie metod opartych na kwadraturach Newtona-Cotesa niesie ze sobą pewien błąd a ponadto dla osiągnięcia odpowiedniej dokładności wymaga wykonania obliczeń w wielu punktach. Powstaje więc pytanie: Czy jest możliwe wyznaczenie przybliżonej wartości całki wykonując obliczenia dla małej liczby punktów? Ponadto, czy metoda taka może dawać idealne (pomijając błędy numeryczne obliczeń) wyniki dla pewnych klas funkcji? Odpowiedzią na te pytania jest metoda Gaussa.. Sformułowanie problemu Załóżmy, że należy wyznaczyć wartość całki przy pomocy przybliżonej metody f(x)dx (8) I(f) I n (f) = w j f(x j ) j=1 dodatkowo zakładając, że wagi w j oraz węzły x j będą dobrane tak, aby I n (f) = I(f) dla wszystkich wielomianów stopnia n 1. Błąd musi zatem wynosić zero (a więc I n (f)) dla wszystkich wielomianów stopnia niższego lub równego n 1. Konstrukcję metody przeprowadza się dla wielomianów postaci f(x) = x k dla k =, 1,,,... n 1.
Całkowanie numeryczne 4 Pozwala to na wyznaczenie niewiadomych w j oraz x j. Dokładność tej metody całkowania jest wprost proporcjonalna do wartości n. Dla metod całkowania definiuje się ponadto stopień precyzji. Metoda całkowania posiada stopień precyzji równy k, jeśli daje idealnie dokładny wynik dla wszystkich wielomianów stopnia k, zaś dla wielomianu stopnia k + 1, błąd jest niezerowy. Stopień precyzji metody Gaussa stopnia n jest zatem równy n 1.. Przypadek n = 1 f(x)dx I 1 (f) = w j f(x j ) = w 1 f(x 1 ) (9) Z założenia metoda ma być idealnie dokładna dla wielomianu stopnia, a więc f(x) = 1. Podstawiając f(x) = 1 do wzoru (??) i uwzględniając założenie o zerowym błędzie metody, otrzymuje się j=1 (1)dx = I 1 (f) = w 1 1 Aby równość była spełniona, należy tak dobrać współczynnik w 1, aby Całka po lewej stronie wynosi (1)dx = w 1 (1)dx = x x=1 x x= = 1 + 1 = a więc (1)dx = = w 1 Współczynnik w 1 wynosi więc. Pozostało wyznaczenie wartości x 1. Aby to uczynić, możliwe jest wymuszenie, aby błąd dla wielomianu stopnia 1 (a więc f(x) = x) był zerowy. Oznacza to, że f(x)dx = I 1 (f) = w 1 f(x 1 ) Podstawiając f(x) = x oraz wcześniej wyznaczony współczynnik w 1 = (x)dx = x 1
Całkowanie numeryczne 5 Całka po lewej stronie wynosi a zatem (x)dx = x x x=1 = 1 x= 1 = = x 1 Z tego wynika, że x 1 =. Podsumowując, dla n = 1 i dowolnej funkcji f zachodzi f(x)dx f() Metoda jest idealnie dokładna dla wszystkich wielomianów stopnia n 1, a więc jej stopień precyzji wynosi 1. Łatwo pokazać, że dla wielomianów wyższych stopni (np. dla x ) metoda nie daje idealnie dokładnego wyniku..4 Przypadek n = Ponieważ n =, więc obliczenia należy przeprowadzić dla wielomianów stopnia, 1,,. Podstawiając do wzoru ogólnego na całkowanie numeryczne metodą Gaussa otrzymuje się f(x)dx I (f) = w j f(x j ) = w 1 f(x 1 ) + w f(x ) (1) j=1 Z założenia metoda ma być idealnie dokładna dla wielomianu stopnia, a więc f(x) = 1. Podstawiając f(x) = 1 do wzoru (??) i uwzględniając założenie o zerowym błędzie metody, otrzymuje się upraszczając (1)dx = I (f) = w 1 1 + w 1 = w 1 + w Z założenia metoda ma być również idealnie dokładna dla wielomianu stopnia 1, a więc f(x) = x. Podstawiając f(x) = x do wzoru (??) i uwzględniając założenie o zerowym błędzie metody, otrzymuje się z czego wykonując całkowanie otrzymuje się (x)dx = w 1 x 1 + w x = w 1 x 1 + w x
Całkowanie numeryczne 6 Z założenia metoda ma być również idealnie dokładna dla wielomianu stopnia, a więc f(x) = x. Podstawiając f(x) = x do wzoru (??) i uwzględniając założenie o zerowym błędzie metody, otrzymuje się Całka po lewej stronie wynosi (x )dx = w 1 x 1 + w x (x )dx = 1 x x=1 1 x x= = Z tego wynika, że = w 1 x 1 + w x Z założenia metoda ma być również idealnie dokładna dla wielomianu stopnia, a więc f(x) = x. Podstawiając f(x) = x do wzoru (??) i uwzględniając założenie o zerowym błędzie metody, otrzymuje się Całka po lewej stronie wynosi Z tego wynika, że (x )dx = w 1 x 1 + w x (x )dx = 1 4 x4 x=1 1 4 x4 x= = = w 1 x 1 + w x Uwzględnienie wszystkich obliczeń dla f(x) = 1, x, x, x prowadzi do układu równań = w 1 + w = w 1 x 1 + w x = = w 1 x 1 + w x w 1 x 1 + w x Można pokazać, że rozwiązaniem tego układu równań są liczby oraz w 1 = 1 w = 1 x 1 = x = w 1 = 1 w = 1 x 1 = x =
Całkowanie numeryczne 7 Podsumowując, dla n = i dowolnej funkcji f zachodzi f(x)dx f( ) + f( ) Metoda jest idealnie dokładna dla wszystkich wielomianów stopnia n, a więc jej stopień precyzji wynosi. Łatwo pokazać, że dla wielomianów wyższych stopni (np. dla x 4 ) metoda nie daje idealnie dokładnego wyniku..5 Metoda Gaussa wyższych stopni Analogicznie do poprzednio opisanych przypadków, dla n > zadanie polega na wyznaczeniu wartości x 1, x,..., x n oraz w 1, w,..., w n tak, aby wyrażenie f(x)dx = w j f(x j ) j=1 było prawdziwe dla f(x) = 1, x, x, x,..., x n Wykonanie całkowań analogicznych dla pokazanych poprzednio prowadzi do następującego układu równań = w 1 + w + + w n = w 1 x 1 + w x + + w n x n = w 1 x 1 + w x + + w n x n = w 1 x 1 + w x + + w n x n (11).. = w n 1 x1 n + w x n + + w n x n n = w 1 x1 n + w x n + + w n x n n Metoda taka ma stopień precyzji równy n 1. Rozwiązanie takiego równania jest zadaniem bardzo trudnym. Z tego powodu wartości x k oraz w k często umieszcza się w tabelach. n x k w k 1.. ±.577569 1. ±.774596669.5555555556..8888888889 4 ±.86116116.478548451 ±.998146.651451549 5 ±.961798459.6968851 ±.5846911.47868675..5688888889 n x k w k 6 ±.9469514.1714494 ±.6619865.676157 ±.86191861.46791946 7 ±.9491791.19484966 ±.741511856.7975915 ±.458451514.81855..417959187 8 ±.96898565.11856 ±.7966664774.8145 ±.555499.1766459 ±.184645.668784.6 Przystosowanie metody Gaussa dla dowolnych przedziałów Metoda Gaussa nadaje się wyłącznie do wyznaczania całek w przedziale [, 1]. Znacznie częściej w zastosowaniach praktycznych konieczne jest jednak wyznaczenie wartości
Całkowanie numeryczne 8 całki b f(x)dx Stosując podstawienie b + a + t(b a) x = dla t [, 1]. Prowadzi to do całki w postaci: b a a ( ) b + a + t(b a) f dt która może zostać wyznaczona przy pomocy metody Gaussa. Zadania 1. Wyznaczyć wzory dla pierwszych czterech rzędów kwadratury Newtona-Cotesa.. Wyznaczyć wzory dla metod złożonych dla pierwszych czterech rzędów kwadratury Newtona-Cotesa.. Stosując kwadratury Newtona-Cotesa stopnia 1-4 wyznaczyć wartości całek oznaczonych z następujących funkcji: (a) x 1 (b) sin(x) (c) e x Przedział całkowania można być dowolny ale wspólny dla wszystkich trzech funkcji. Ocenić na podstawie reszty kwadratury oraz wartości wyznaczanej analitycznie zależność dokładności obliczeń od stopnia kwadratury. 4. Zastosować metody złożone trapezu oraz Simpsona dla wymienionych w poprzednim punkcie funkcji. Czy wyniki uległy poprawie? 5. Zaimplementować metodę Simpsona 6. Metoda prostokątów polega na zastąpieniu całki z funkcji f całką (polem pod wykresem) z prostokąta o wysokości f(x 1 ) i szerokości ( x 1 ). Zaimplementować tą metodę. 7. Udowodnić, że metoda Gaussa stopnia daje idealnie dokładny (pomijając błędy numeryczne) wynik przy całkowaniu wielomianu f(x) = ax + bx + c, a. 8. Wyznaczyć błąd metody Gaussa stopnia przy całkowaniu funkcji f(x) = x 4. 9. Zaimplementować metodę Gaussa stopnia 1,, i 8 dla dowolnego przedziału całkowania.
Całkowanie numeryczne 9 1. Wyznaczyć korzystając z metody Gaussa stopnia, oraz 8 wartość całki 1 dx. Wskazówka: Przed wykonywaniem obliczeń zmodyfikować granice całko- 1+x wania. 11. Korzystając z wyników zadań poprzednich porównać dokładność poznanych metod. Literatura [1] Bjärck Ake i Dahlquist Germund. Metody numeryczne. PWN, Warszawa, 1987. [] Jerzy Brzózka i Lech Dorobczyński. Programowanie w MATLAB. Warszawa, Wydanie I, 1998. [] Zenon Fortuna, Bohdan Macukow i Janusz Wąsowski. Metody numeryczne. WNT, Warszawa, 1995. [4] Jerzy Klamka i in. Metody numeryczne. Politechnika Śląska, Gliwice, 1998. [5] David Kincaid i Ward Cheney. Analiza numeryczna. WNT, Warszawa, 6. [6] Anna Kamińska i Beata Pańczyk. Matlab. Ćwiczenia z..., Przykłady i zadania. Warszawa, Wydanie I,. [7] Wanat Kazimierz. Algorytmy numeryczne. Helion, Gliwice, 1994. [8] Bogumiła Mrozek i Zbigniew Mrozek. MATLAB i Simulink. Poradnik użytkownika. Wydanie II, 4. [9] Jurij Povstenko. Wprowadzenie do metod numerycznych. Akademicka Oficyna Wydawnicza EXIT, Warszawa, Wydanie drugie poprawione i uzupełnione, 5. [1] Rudra Pratap. MATLAB 7 dla naukowców i inżynierów. PWN, 7. [11] Wiesława Regel. Wykresy i obiekty graficzne w MATLAB. Warszawa, Wydanie I,. [1] Marcin Stachurski. Metody numeryczne w programie Matlab. Warszawa, Wydanie I,.