Metody Numeryczne
Równania nieliniowe Równania nieliniowe W tych równaniach jedna lub więcej zmiennych występuje nieliniowo, np równanie Keplera x a sin x = b. Zajmiemy się teraz lokalizacją pierwiastków równań nieliniowych zer funkcji. szukamy takiego x, że f (x) = 0 szukamy takiego X = (x 1, x 2,...x n ), że F (X ) = 0
Równania nieliniowe Konsekwencje własność Darboux funkcji ciągłych Jeśli f jest funkcją ciągłą w przedziale [a, b] i jeśli f (a)f (b) < 0, a więc f zmienia znak w [a, b], to ta funkcja musi mieć zero w (a, b).
Metoda bisekcji połowienia
Metoda bisekcji połowienia
Metoda bisekcji połowienia
Metoda bisekcji algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)/2 niż c (a + b)/2 zmianę znaku funkcji lepiej badać za pomocą nierówności sgn(w) sgn(u) zamiast wu < 0, gdyż w tym drugim przypadku wykonujemy zbędne mnożenie i możemy spowodować nadmiar lub niedomiar.
Metoda bisekcji algorytm input a, b, M, δ, ɛ u f (a) v f (b) e b a output a, b, u, v if sgn(u) = sgn(v) then stop for k = 1 to M do e e/2 c a + e w f (c) output k, c, w, e if e < δ or w < ɛ then stop if sgn(u) sgn(w) then b c v w else a c u w end if end do
Metoda bisekcji analiza błędu Oznaczmy kolejne otrzymywane przedziały [a 0, b 0 ], [a 1, b 1 ]... a 0 a 1 a 2... b 0 b 0 b 1 b 2... a 0 b n+1 a n+1 = 1 (bn an) (n 0) 2 Ciąg {a n} jako niemalejący i ograniczony z góry jest zbieżny. Podobnie jest zbieżny ciąg {b n}. Z ostatniej równości wynika, że b n a n = 2 n (b 0 a 0 ).
Metoda bisekcji analiza błędu Z ostatniego równania na poprzednim slajdzie wynika, że Oznaczmy lim bn lim an = lim n n n 2 n (b 0 a 0 ) = 0. r = lim an = lim bn. n n Przejście do granicy w nierówności 0 f (a n)f (b n) daje 0 [f (r)] 2, skąd f (r) = 0. Twierdzenie 1 Jeśli przedziały [a 0, b 0 ], [a 1, b 1 ],... są tworzone metodą bisekcji, to granice lim n a n i lim n b n istnieją, są identyczne i równe zeru funkcji f. Jeśli r = lim n c n, gdzie c n = 1 2 (an + bn), to r c n 2 (n+1) (b 0 a 0 ).
Metoda Newtona Metoda Newtona jest ogólną procedurą, którą można zastosować w wielu sytuacjach. Jej szczególny wariant dotyczący lokalizacji miejsc zerowych funkcji rzeczywistych nazywany jest też metodą Newtona-Raphsona. Metoda Newtona: szybsza od metody bisekcji i siecznych zbieżność kwadratowa nie zawsze zbieżna często używana w kombinacji z inną, wolniejszą, ale globalnie zbieżną metodą
Metoda Newtona Niech f będzie funkcją, której zera należy wyznaczyć numerycznie. Niech r będzie takim zerem, a x jego przybliżeniem. Jeśli f istnieje, to na mocy twierdzenia Taylora 0 = f (r) = f (x + h) = f (x) + hf (x) + O(h 2 ), gdzie h = r x. Jeśli nasze pierwsze przybliżenie jest dobre (h jest małe), to bezpiecznie można pominąć wyraz O(h 2 ) i rozwiązać równanie względem h. h = f (x)/f (x) Jeśli x jest przybliżeniem r to x f (x)/f (x) powinno być lepszym przybliżeniem tego zera. Metoda Newtona z definicji zaczyna od przybliżenia x 0 zera r i polega na rekurencyjnym stosowaniu wzoru x n+1 = x n f (x) f (x) (n 0).
Metoda Newtona algorytm input x 0, M, δ, ɛ v f (x 0 ) output 0, x 0, v if v < ɛ then stop for k = 1 to M do x 1 x 0 v/f (x 0 ) v f (x 1 ) output k, x 1, v if x 1 x 0 < δ or v < ɛ then stop x 0 x 1 end do
Metoda Newtona analiza błędu Niech e n = x n r będzie błędem. Załóżmy, że f jest ciągła i r jest pojedynczym zerem f. Z definicji iteracji w metodzie wynika, że: Z wzoru Taylora mamy e n+1 = x n+1 r = x n f (xn) f (x n) r = = e n f (xn) f (x = enf (x n) f (x n) n) f (x n) 0 = f (r) = f (x n e n) = f (x n) e nf (x n) + 1 2 e2 n f (ξ n), gdzie ξ n jest zawarte pomiędzy x n i r. Stąd mamy e nf (x n) f (x n) = 1 2 f (ξ n)e 2 n.
Metoda Newtona analiza błędu Wstawiając ostanie równanie do wzoru na e n+1 otrzymamy e n+1 = 1 f (ξ n) 2 f (x n) e2 n 1 f (r) 2 f (r) e2 n = Cen 2 Załóżmy, że C = 1 i że e n 10 4 Wtedy z ostatniego równania wynika, że e n+1 10 8 i e n+2 10 16. Parę dodatkowych iteracji wystarczy, aby otrzymać dokładność maszynową! Ostatnie równanie na e n+1 jest w przybliżeniu równe pewnej stałej pomnożonej przez e 2 n. Taka sytuacja nazywana jest zbieżnością kwadratową. Dzięki temu każda iteracja metody Newtona podwaja liczbę cyfr dokładnych przybliżenia.
Metoda Newtona zbieżność e n małe i 1 f (ξ n) 2 f nie jest zbyt duże = e (x n) n+1 < e n. Zdefiniujmy c(δ) = max f (x) x r δ 2 min x r δ f (x) (δ > 0). Wybieramy δ tak, żeby δc(δ) < 1. Jest to możliwe bo δ 0 = c(δ) 1 2 f (r)/f (r), a więc δc(δ) 0. Zdefiniujmy ρ = δc(δ). Załóżmy, że zaczynamy iteracje Newtona od x 0 takiego, że x 0 r δ. Daje to e 0 δ i ξ 0 r δ. Z definicji c(δ) 1 f (ξ 0 ) 2 f (x 0 ) c(δ). Z równania na e n+1 dostaniemy x 1 r = e 1 e 2 0 c(δ) = e 0 e 0 c(δ) e 0 δc(δ) = e 0 ρ < e 0 δ. Widać, że następny punkt, x 1, także leży nie dalej od r niż δ.
Metoda Newtona zbieżność Wykorzystując wielokrotnie nierówność możemy napisać, że: e 1 ρ e 0 e 2 ρ e 1 ρ 2 e 0 e 3 ρ e 2 ρ 3 e 0. e n ρ n e 0 0 ρ < 1 = lim n ρn = 0 = lim n en = 0
Metoda Newtona zbieżność Twierdzenie 2 Niech r będzie zerem pojedynczym funkcji f i niech jej druga pochodna f będzie ciągła. Wtedy istnieje takie otoczenie punktu r i taka stała C, że jeśli metoda Newtona startuje z tego otoczenia, to kolejne punkty są coraz bliższe r i takie, że x n+1 r C(x n r) 2 (n 0).
Metoda Newtona zbieżność W pewnych przypadkach metoda Newtona jest zbieżna dla dowolnego punktu startowego: Twierdzenie 3 Jeśli f C 2 (R), jest rosnąca, wypukła i ma zero, to jest ono jedyne, a metoda Newtona daje ciąg do niego zbieżny dla dowolnego punktu startowego. Dowód f wypukła jeśli f (x) > 0 x R f rosnąca = f (x) > 0 Wobec dwóch powyższych z wzoru na e n+1 dostaniemy e n+1 > 0 = x n > r dla (n 1). Z tego, że f jest rosnąca wynika, że f (x n) > f (r) = 0. Dlatego z e n+1 = x n+1 r = x n f (xn) f (xn) f r = en (x n) f (x n) dostaniemy e n+1 < e n. A więc ciągi {e n} i {x n} są malejące i ograniczone z dołu odpowiednio przez 0 i r oraz istnieją granice e = lim n e n i x = lim n x n. Z ostatniej równości wynika, że: e = e f (x )/f (x ) impliesf (x ) = 0 i x = r. c.n.u.
Metoda Newtona Przykład 1 Obliczanie pierwiastków kwadratowych Niech x = R i R > 0. x jest pierwiastkiem równania f (x) = x 2 R = 0. Stosując metodę Newtona otrzymamy wzór iteracyjny: x n+1 = 1 2 (x n + Rxn ). Jest to wzór stosowany w podprogramach pierwiastkowania. Przypisuje się go Heronowi (żył między 100 r. p.n.e i 100 r. n.e.).
Metoda Newtona funkcje uwikłane G(x, y) = 0 Równanie można rozwiązać względem y dla ustalonego x, stosując metodę Newtona. y k+1 = y k G(x, y k )/ G y (x, y k)
Metoda Newtona funkcje uwikłane Przykład 2 Zbudujemy tablicę wartości y, które dla danych x spełniają równanie G(x, y) = 0, gdzie G(x, y) = 3x 7 + 2y 5 x 3 + y 3 3. Zaczniemy od x = 0 i będziemy je zwiększać z krokiem 0.1 do x = 10. Zaczniemy od x = 0 i y = 1, wtedy G(x, y) = 0. G y (x, y) = 10y 4 + 3y 2 x 0; y 1; h 0.1; M 100; N 4 output 0, x, y, G(x, y) for i = 1 to M do x x + h for j = 1 to N do y y G(x, y)/ G (x, y) y end do output i, x, y, G(x, y) end do
Metoda Newtona układy równań nieliniowych f 1 (x 1, x 2 ) = 0 f 2 (x 1, x 2 ) = 0 Załóżmy, że (x 1, x 2 ) jest przybliżonym rozwiązaniem układu. Obliczmy poprawki h 1 i h 2 takie, żeby (x 1 + h 1, x 2 + h 2 ) było lepszym przybliżeniem. Zachowując tylko liniowe człony rozwinięcia Taylora rozważanych funkcji otrzymamy 0 = f 1 (x 1 + h 1, x 2 + h 2 ) f 1 (x 1, x 2 ) + h 1 f 1 x 1 + h 2 f 1 x 2, 0 = f 2 (x 1 + h 1, x 2 + h 2 ) f 2 (x 1, x 2 ) + h 1 f 2 x 1 + h 2 f 2 x 2. Jest to układ równań liniowych względem h 1 i h 2.
Metoda Newtona układy równań nieliniowych Macierz układu z poprzedniego slajdu jest jakobianem (wszystkie pochodne cząstkowe są obliczane w (x 1, x 2 ). [ ] f1 / x J = 1 f 1 / x 2 f 2 / x 1 f 2 / x 2 Rozwiązanie układu istnieje jeśli macierz J jest nieosobliwa. [ ] [ ] h1 = J h 1 f1 (x 1, x 2 ) 2 f 2 (x 1, x 2 )
Metoda Newtona układy równań nieliniowych Metoda Newtona dla układu równań nieliniowych wyraża się wzorem [ ] [ ] [ ] x (k+1) 1 x (k) x (k+1) = 1 h (k) 2 x (k) + 1 2 h (k) 2 gdzie układ liniowy J [ h (k) 1 h (k) 2 rozwiązujemy np. metodą eliminacji Gaussa. Układy n równań rozwiązujemy analogicznie. ] ( ) = f 1 x (k) 1, x (k) ( 2 ) f 2 x (k) 1, x (k) 2
Metoda siecznych Metodę Newtona definiuje wzór iteracyjny: x n+1 = x n f (xn) f (x n). Jeśli zastąpimy pochodną ilorazem różnicowym f (x n) f (xn) f (x n 1) x n x n 1 to otrzymamy równanie definiujące metodę siecznych x n x n 1 x n+1 = x n f (x n) f (x n) f (x n 1 ) (n 1). Uwaga! Potrzebne dwa punkty początkowe. Każde nowe x n+1 wymaga już obliczenia tylko jednej nowej wartości f. Inny sposób na ominięcie liczenia pochodnych można znaleźć w metodzie Steffensena: x n+1 = x n [f (x n)] 2 f (x n + f (x n)) f (x n), ale tutaj przy wyliczaniu nowego x n+1 trzeba znaleźć dwie wartości f w porównaniu do jednej w metodzie siecznych.
Metoda siecznych algorytm Algorytm zawiera modyfikację, polegającą na tym, że kolejne wartości funkcji będą miały moduły nierosnące. input a, b, M, δ, ɛ fa f (a); fb f (b) output 0, a, fa output 1, b, fb for k = 2 to M do if fa > fb then a b; fa fb end if s (b a)/(fb fa) b a fb fa a a fa s fa f (a) output k, a, fa if fa < ɛ or b a < δ then stop end do
Metoda siecznych analiza błędu e n+1 = x n+1 r = x n 1f (x n) x nf (x n 1 ) f (x n) f (x n 1 ) = x n 1f (x n) x nf (x n 1 ) f (x n) f (x n 1 ) r = (xn en) (f (xn) f (x n 1)) f (x n) f (x n 1 ) = x n 1f (x n) x nf (x n) + e nf (x n) e nf (x n 1 ) f (x n) f (x n 1 ) = f (xn)(x n 1 x n) + e nf (x n) e nf (x n 1 ) f (x n) f (x n 1 ) = f (xn)(e n 1 + r e n r) + e nf (x n) e nf (x n 1 ) f (x n) f (x n 1 ) = x n x n 1 f (x n) f (x n 1 ) 1 f (r) = e n 1f (x n) e nf (x n 1 ) f (x n) f (x n 1 ) = = = f (x n)/e n f (x n 1 )/e n 1 e ne n 1 x n x n 1 f (x n)/e n f (x n 1 )/e n 1 e ne n 1 x n x n 1 = =
Metoda siecznych analiza błędu Z twierdzenia Taylora mamy f (x n) = f (r + e n) = f (r) + e nf (r) + 1 2 e2 n f (r) + O(e 3 n ) f (r) = 0 bo mamy miejsce zerowe f (x n)/e n = f (r) + 1 2 enf (r) + O(e 2 n) Ostatnie równanie przepisujemy przesuwając wskaźnik o 1 f (x n 1 )/e n 1 = f (r) + 1 2 e n 1f (r) + O(e 2 n 1 ) Odejmujemy stronami dwie ostatnie nierówności i pomijamy wyrazy wyższych rzędów. f (x n)/e n f (x n 1 )/e n 1 1 2 (en e n 1)f (r)
Metoda siecznych analiza błędu f (x n)/e n f (x n 1 )/e n 1 (e n e n 1 ) x n x n 1 = e n e n 1 = 1 2 f (r) f (x n)/e n f (x n 1 )/e n 1 (x n x n 1 ) = 1 2 f (r) e n+1 f (r) 2f (r) ene n 1 = Ce ne n 1 Otrzymaliśmy równanie podobne do równania otrzymanego przy analizie metody Newtona. Przyjmijmy teraz, że zachodzi następująca proporcjonalność asymptotyczna gdzie A jest stałą dodatnią. e n+1 A e n α,
Metoda siecznych analiza błędu Przyjmijmy teraz, że zachodzi następująca proporcjonalność asymptotyczna e n+1 A e n α, gdzie A jest stałą dodatnią. Ta proporcjonalność, definiująca zbieżność rzędu α, oznacza, że lim n e n+1 /(A e n α ) = 1, możemy więc napisać e n A e n 1 α e n 1 (A 1 e n ) 1/α. Wstawmy wartości asymptotyczne do niebieskiego równania A e n α C e n A 1/α e n 1/α A 1+1/α C 1 e n 1 α+1/α
Metoda siecznych analiza błędu A 1+1/α C 1 e n 1 α+1/α Lewa strona jest niezerową stałą, a e n 0 = 1 α + 1/α = 0 α = 1 + 5 2 1.62 Zbieżność metody siecznych jest nadliniowa. Możemy wyznaczyć stałą A, gdyż wiemy, że prawa strona równania na górze jest równa 1 i 1 + 1/α = α. Dla takiego A mamy ostatecznie A = C 1/α C 0.62 = f (r) 0.62 2f (r) e n+1 A e n (1+ 5)/2.
Metoda siecznych metoda siecznych jest zbieżna wolniej od metody Newtona metoda siecznych jest zbieżna szybciej od metody bisekcji każdy krok metody siecznych wymaga obliczenia tylko jednej wartości funkcji każdy krok metody Newtona wymaga obliczenia dwóch wartości funkcji (f i f ) w pewnym sensie para kroków metody siecznych odpowiada jednemu metody Newtona
Metoda Brenta metoda hybrydowa niezawodność bisekcji szybkość odwrotnej interpolacji kwadratowej
Metoda Brenta schemat dzielimy przedział (a, b) izolacji pierwiastka na połowę określamy, w którym z przedziałów (a, c = a+b 2 i (c, b) leży pierwiastek zamiast kontynuować połowienie przez punkty a, f (a), c, f (c), b, f (b) prowadzimy parabolę i szukamy punktu przecięcia z osią X wzór na parabolę przechodzącą przez trzy dane punkty x = [y f (b)][y f (c)] [f (a) f (b)][f (a) f (c)] a+ [y f (a)][y f (c)] + [f (b) f (a)][f (b) f (c)] b + [y f (a)][y f (b)] [f (c) f (a)][f (c) f (b)] c
Metoda Brenta schemat podstawiając y = 0 znajdziemy nowe przybliżenie poszukiwanego pierwiastka af (b)f (c)[f (b) f (c)] + bf (c)f (a)[f (c) f (a)] + cf (a)f (b)[f (a) f (b)] x = [f (a) f (b)][f (b) f (c)][f (c) f (a)] dla zapewnienia zbieżności powyższe przybliżenie akceptujemy tylko wtedy, gdy leży ono w nowym przedziale izolacji w przeciwnym razie wynik interpolacji pomijamy i przeprowadzamy następny krok bisekcji procedurę powtarzamy aż do uzyskania żądanej dokładności
Metoda Brenta algorytm input a, b, M, δ, ɛ u fx(a); v fx(b); e b a if sgn(u) = sgn(v) then STOP for k = 0 to M do e e/2; c a + e; kk 0 for j = 0 to M do kk kk + 1 w fx(c) x [avw(v w) + bwu(w u) + cuv(u v)]/[(u v)(v w)(w u)] if sgn(w) sgn(u) and x c and x a then b c; c x; v w else if sgn(w) sgn(v) and x b and x c then a c; c x; u w else e b a STOP wychodzimy z pętli po j, kontynuujemy po k end if if e < δ or w < ɛ then output c, k + kk, w STOP PROGRAM end if end do if e < δ or w < ɛ then output c, k + kk, w output STOP PROGRAM end if if sgn(w) sgn(u) then b c; v w else end if end do a c; u w
Wielomiany p(z) = a nz n + a n 1 z n 1 +... + a 1 z + a 0 Poszukiwanie zer wielomianów można zastosować metody poznane do tej pory (w szczególności netodę Newtona) można skorzystać ze szczególnych włsności wielomianów metoda Bairstowa metoda Laguerre a
Schemat Hornera p(z) = a nz n + a n 1 z n 1 +... + a 1 z + a 0 oczywisty algorytm obliczania wartości v = p(z 0 ), czyli onliczanie potęg wielkości z 0, ich mnożenie przez współczynniki wielomianu i sumowanie tych współczynników wymaga 2n 1 mnożeń i n dodawań wyrażając wielomian p w postaci a 0 + z(a 1 + z(a 2 +... + z(a n 1 + a nz)...)) otrzymujemy algorytm, w którym wystarczy wykonać n mnożeń i n dodawań
Schemat Hornera algorytm input n, (a i : 0 i n), z 0 v a n for k=n-1 to 0 step -1 do v a k + z 0 v end do output v