Równania nieliniowe Izolda Gorgol wyciąg z prezentacji
Transkrypt
Równania nieliniowe Izolda Gorgol wyciąg z prezentacji
Równania nieliniowe Izolda Gorgol wyciąg z prezentacji Równania nieliniowe f (x) = 0 Zadanie: rozwiązać równanie, tzn. podać miejsce zerowe z żądaną dokładnością O funkcji f będziemy robić różne założenia. Metody iteracyjne Opierają się na konstrukcji ciągu (xn ) zbieżnego do szukanego wyniku x0 (teoretycznie i numerycznie) i przerwaniu obliczeń po uzyskaniu żądanej dokładności ε. (xn ): lim xn = x0 . n→+∞ Obliczenia przerywamy, gdy osiągniemy takie n0 , że |xn0 − x0 | < ε. Czasami trzeba dodać inne warunki przerwania obliczeń. Rząd zbieżności Ze względów numerycznych ważna jest teoretyczna szybkość zbieżności konstruowanego ciągu. DEFINICJA Niech lim xn = x0 . Mówimy, że ciąg (xn ) jest zbieżny do x0 n→+∞ — logarytmicznie wtt, gdy lim n→+∞ |xn+1 − x0 | = 1; |xn − x0 | — co najmniej liniowo wtt, gdy istnieją stała 0 < c < 1 oraz n0 takie, że |xn+1 − x0 | 6 c|xn − x0 | dla n > n0 ; — co najmniej nadliniowo wtt, gdy istnieją ciąg (εn ) zbieżny do 0 oraz n0 takie, że |xn+1 − x0 | 6 εn |xn − x0 | dla n > n0 ; — co najmniej rzędu α wtt, gdy istnieją stała c > 0 oraz n0 takie, że |xn+1 − x0 | 6 c|xn − x0 |α dla n > n0 . Metoda bisekcji – podstawy teoretyczne Założenie: f – ciągła WNIOSEK (z tw. Darboux) Jeżeli f jest funkcją ciągłą na przedziale ha, bi oraz f (a)f (b) < 0, to funkcja f ma w przedziale (a, b) miejsce zerowe. Metoda bisekcji – rozwiązanie teoretyczne 1. startujemy od przedziału ha, bi, dla którego f (a)f (b) < 0; 2. obliczamy f ( a+b 2 ); a) jeśli f ( a+b ) = 0, to x0 = a+b 2 2 ; a+b b) jeśli f (a)f ( 2 ) < 0, to nowym przybliżeniem jest przedział a, a+b 2 ; a+b c) jeśli f ( a+b 2 )f (b) < 0, to nowym przybliżeniem jest przedział 2 ,b ; 3. obliczenia kończymy, gdy długość skonstruowanego przedziału nie przekracza 2ε i wtedy x0 = a+b 2 . Konstruujemy więc dwa ciągi zbieżne do szukanego rozwiązania: lewych i prawych końców przedziałów. Metoda bisekcji – realizacja numeryczna — środek przedziału obliczamy: c = a + b−a 2 , — posługujemy się warunkiem sgn(f (a)) 6= sgn(f (b)) zamiast f (a)f (b) < 0, 1 — dodajemy dwa dodatkowe warunki zatrzymania obliczeń: — |f (c)| 6 δ; — ustalamy M – maksymalną liczbę kroków obliczeń. Metoda bisekcji – algorytm Input: a, b, M, ε, δ Output: k, re, f (e r) 1. 2. 3. 4. 5. u := f (a); v := f (b); e := b − a; if sgn(u) = sgn(v) then STOP for k = 1 to M do a) e := 2e ; c := a + e; w := f (c); b) if |e| < ε or |w| < δ then output k, c, w; c) if sgn(u) 6= sgn(w) then b := c; v := w else a := c; u := w; Zbieżność metody i analiza błędu TWIERDZENIE Jeżeli ([an , bn ]) jest ciągiem przedziałów tworzonych metodą bisekcji, to granice lim bn istnieją, są równe i równe miejscu zerowemu funkcji f . Jeśli r = lim cn , gdzie cn = n→+∞ −(n+1) 2 n→+∞ an +bn , 2 lim an i n→+∞ to |r − cn | 6 (b0 − a0 ). Metoda jest zbieżna liniowo. Metoda Newtona (stycznych) – podstawy teoretyczne Założenia: f – klasy C , f 0 (r) 6= 0 2 TWIERDZENIE Taylora Jeżeli funkcja f ma ciągłe pochodne do rzędu n − 1 na przedziale hx0 , xi oraz istnieje pochodna n–tego rzędu na (x0 , x), to istnieje punkt c ∈ (x0 , x) taki, że f 0 (x0 ) f 00 (x0 ) 2 f n−1 (x0 ) (n−1) f (n) (c) f (x0 + h) = f (x0 ) + h+ h + ···+ + h + (x − x0 )n . 1! 2! (n − 1)! n! Metoda Newtona – rozwiązanie teoretyczne Jeśli h jest dostatecznie małe, to można przyjąć, że f (x0 + h) ≈ f (x0 ) + f 0 (x0 )h. Niech r = x0 + h będzie rozwiązaniem, czyli f (r) = 0. f (x0 ) Wówczas h = − 0 . f (x0 ) f (x0 ) Jeśli x0 jest przybliżeniem r, to x0 − 0 jest przybliżeniem lepszym. f (x0 ) Metoda Newtona (stycznych) – realizacja numeryczna Startujemy od punktu x0 . Konstruujemy ciąg przybliżeń rozwiązania r według zasady: f (xn ) xn+1 = xn − 0 . f (xn ) Podobnie, jak w metodzie bisekcji, obliczenia kończymy, gdy: — |xn+1 − xn | 6 ε — |f (xn+1 )| 6 δ; — osiągniemy M – maksymalną liczbę kroków obliczeń. UWAGA Metoda może nie być zbieżna, gdy x0 nie jest dostatecznie blisko rozwiązania r. 2 Metoda Newtona (stycznych) – algorytm Input: x0 , M, ε, δ Output: k, re, f (e r) 1. v := f (x0 ); 2. if |v| < δ then output 0, x0 , v; 3. for k = 1 to M do f (x0 ) a) x1 := x0 − 0 ; f (x0 ) b) v := f (x1 ); c) if |x1 − x0 | < ε or |v| < δ then output k, x1 , v; d) x0 := x1 ; Zbieżność metody i analiza błędu TWIERDZENIE (o lokalnej zbieżności metody Newtona) Niech funkcja f będzie klasy C 2 , r jednokrotnym miejscem zerowym funkcji f , zaś (xn ) ciągiem konstruowanym za pomocą metody Newtona. Wówczas istnieje stała C oraz otoczenie punktu r takie,że jeśli punkt startowy x0 należy do tego otoczenia, to limn→+∞ xn = r oraz |xn+1 − r| 6 C(xn − r)2 . Metoda jest zbieżna co najmniej kwadratowo. Metoda siecznych – podstawy teoretyczne 2 0 Założenia: f – klasy C , f (r) 6= 0 W metodzie Newtona trzeba mieć możliwość obliczenia pochodnej danej funkcji w punkcie. Nie zawsze jest to możliwe. Przybliżamy pochodną funkcji ilorazem różnicowym: (x0 ) f 0 (x0 ) ≈ f (x0 +h)−f . h Metoda siecznych – realizacja numeryczna f (xn ) − f (xn−1 ) xn − xn−1 xn − xn−1 xn+1 = xn − f (xn ) f (xn ) − f (xn−1 ) Potrzebujemy dwóch punktów startowych. Dodatkowo zakładamy, aby ciąg (|f (xn )|) był nierosnący (bo szukamy miejsca zerowego); pozwoli to wybrać zmieniany koniec przedziału. Warunki końca obliczeń jak w metodzie Newtona. f 0 (xn+1 ) ≈ Metoda siecznych – algorytm Input: x0 , x1 M, ε, δ Output: k, re, f (e r) 1. 2. 3. 4. v := f (x0 ); w := f (x1 ); if |v| < δ then output 0, x0 , v; if |w| < δ then output 1, x1 , w; for k = 2 to M do a) if |v| > |w| then x0 ↔ x1 , v ↔ w; b) s := (x1 − x0 )/(w − v); c) x1 := x0 ; w := v; d) x0 := x0 − v ∗ s; e) v := f (x0 ); f) if |x1 − x0 | < ε or |v| < δ then output k, x0 , v; Zbieżność metody i analiza błędu 3 TWIERDZENIE (o lokalnej zbieżności metody siecznych) Niech funkcja f będzie klasy C 2 , r jednokrotnym miejscem zerowym funkcji f , zaś (xn ) ciągiem konstruowanym za pomocą metody siecznych. Wówczas istnieje stała C oraz otoczenie punktu r takie, że jeśli punkty startowe x0 i x1 należą do tego otoczenia, to limn→+∞ xn = r oraz √ |xn+1 − r| 6 C|xn − r|(1+ 5)/2 . √ Metoda jest zbieżna nadliniowo (rzędu (1 + 5)/2). 4