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