Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach...

40
Metody Numeryczne Wojciech Szewczuk Wojciech Szewczuk MN

Transcript of Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach...

Page 1: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metody Numeryczne

Wojciech Szewczuk

Wojciech Szewczuk MN

Page 2: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Równania nieliniowe

Równania nieliniowe

W tych równaniach jedna lub więcej zmiennych występujenieliniowo, 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 = (x1, x2, ...xn), że F (X ) = 0

Wojciech Szewczuk MN

Page 3: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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, awięc f zmienia znak w [a, b], to ta funkcja musi mieć zero w (a, b).

Wojciech Szewczuk MN

Page 4: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – połowienia

Wojciech Szewczuk MN

Page 5: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – połowienia

Wojciech Szewczuk MN

Page 6: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – połowienia

Wojciech Szewczuk MN

Page 7: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – algorytm

Dwie uwagi:

w obliczeniach numerycznych lepiej jest wykonać instrukcję c ← a+ (b − a)/2niż c ← (a+ b)/2

zmianę znaku funkcji lepiej badać za pomocą nierówności sgn(w) 6= sgn(u)zamiast wu < 0, gdyż w tym drugim przypadku wykonujemy zbędne mnożenie imożemy spowodować nadmiar lub niedomiar.

Wojciech Szewczuk MN

Page 8: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – algorytm

input a, b, M, δ, εu ← f (a)v ← f (b)e ← b − aoutput a, b, u, vif sgn(u) = sgn(v) then stop

for k = 1 to M doe ← e/2c ← a + ew ← f (c)output k, c, w , eif |e| < δ or |w| < ε then stopif sgn(u) 6= sgn(w) thenb ← cv ← w

elsea← cu ← w

end ifend do

Wojciech Szewczuk MN

Page 9: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – analiza błędu

Oznaczmy kolejne otrzymywane przedziały [a0, b0], [a1, b1] ...

a0 ≤ a1 ≤ a2 ≤ ... ≤ b0

b0 ≥ b1 ≥ b2 ≥ ... ≥ a0

bn+1 − an+1 =1

2(bn − an) (n ≥ 0)

Ciąg {an} jako niemalejący i ograniczony z góry jest zbieżny. Podobnie jest zbieżnyciąg {bn}.Z ostatniej równości wynika, że

bn − an = 2−n(b0 − a0).

Wojciech Szewczuk MN

Page 10: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda bisekcji – analiza błędu

Z ostatniego równania na poprzednim slajdzie wynika, że

limn→∞

bn − limn→∞

an = limn→∞

2−n(b0 − a0) = 0.

Oznaczmyr = lim

n→∞an = lim

n→∞bn.

Przejście do granicy w nierówności 0 ≥ f (an)f (bn) daje 0 ≥ [f (r)]2, skąd

f (r) = 0.

Twierdzenie 1

Jeśli przedziały [a0, b0], [a1, b1], ... są tworzone metodą bisekcji, to granice limn→∞ ani limn→∞ bn istnieją, są identyczne i równe zeru funkcji f . Jeśli r = limn→∞ cn, gdziecn = 1

2 (an + bn), to

|r − cn| ≤ 2−(n+1)(b0 − a0).

Wojciech Szewczuk MN

Page 11: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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 rzeczywistychnazywany 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ą

Wojciech Szewczuk MN

Page 12: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona

Niech f będzie funkcją, której zera należy wyznaczyć numerycznie. Niech r będzietakim 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(h2),

gdzie h = r − x . Jeśli nasze pierwsze przybliżenie jest dobre (h jest małe), tobezpiecznie można pominąć wyraz O(h2) i rozwiązać równanie względem h.

h = −f (x)/f ′(x)

Jeśli x jest przybliżeniem r tox − f (x)/f ′(x)

powinno być lepszym przybliżeniem tego zera.

Metoda Newtona z definicji zaczyna od przybliżenia x0 zera r i polega narekurencyjnym stosowaniu wzoru

xn+1 = xn −f (x)

f ′(x)(n ≥ 0).

Wojciech Szewczuk MN

Page 13: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – algorytm

input x0, M, δ, ε

v ← f (x0)

output 0, x0, v

if |v| < ε then stop

for k = 1 to M do

x1 ← x0 − v/f ′(x0)

v ← f (x1)

output k, x1, v

if |x1 − x0| < δ or |v| < ε then stop

x0 ← x1

end do

Wojciech Szewczuk MN

Page 14: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – analiza błędu

Niech en = xn − r będzie błędem. Załóżmy, że f ′′ jest ciągła i r jest pojedynczymzerem f . Z definicji iteracji w metodzie wynika, że:

en+1 = xn+1 − r = xn −f (xn)

f ′(xn)− r =

= en −f (xn)

f ′(xn)=

enf ′(xn)− f (xn)

f ′(xn)

Z wzoru Taylora mamy

0 = f (r) = f (xn − en) = f (xn)− enf′(xn) +

1

2e2n f′′(ξn),

gdzie ξn jest zawarte pomiędzy xn i r . Stąd mamy

enf′(xn)− f (xn) =

1

2f ′′(ξn)e

2n .

Wojciech Szewczuk MN

Page 15: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – analiza błędu

Wstawiając ostanie równanie do wzoru na en+1 otrzymamy

en+1 =1

2

f ′′(ξn)

f ′(xn)e2n ≈

1

2

f ′′(r)

f ′(r)e2n = Ce2

n

Załóżmy, że C = 1 i że en ≈ 10−4 Wtedy z ostatniego równania wynika, żeen+1 ≈ 10−8 i en+2 ≈ 10−16. Parę dodatkowych iteracji wystarczy, aby otrzymaćdokładność maszynową!

Ostatnie równanie na en+1 jest w przybliżeniu równe pewnej stałej pomnożonej przeze2n . Taka sytuacja nazywana jest zbieżnością kwadratową. Dzięki temu każda iteracja

metody Newtona podwaja liczbę cyfr dokładnych przybliżenia.

Wojciech Szewczuk MN

Page 16: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – zbieżność

en małe i 12f ′′(ξn)f ′(xn)

nie jest zbyt duże =⇒ |en+1| < |en|. Zdefiniujmy

c(δ) =

max|x−r|≤δ

|f ′′(x)|

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 x0 takiego, że |x0 − r | ≤ δ.Daje to |e0| ≤ δ i |ξ0 − r | ≤ δ|.Z definicji c(δ)

1

2

∣∣∣∣ f ′′(ξ0)

f ′(x0)

∣∣∣∣ ≤ c(δ).

Z równania na en+1 dostaniemy

|x1 − r | = |e1| ≤ e20c(δ) = |e0||e0|c(δ) ≤ |e0|δc(δ) = |e0|ρ < |e0| ≤ δ.

Widać, że następny punkt, x1, także leży nie dalej od r niż δ.

Wojciech Szewczuk MN

Page 17: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – zbieżność

Wykorzystując wielokrotnie nierówność możemy napisać, że:

|e1| ≤ ρ|e0|

|e2| ≤ ρ|e1| ≤ ρ2|e0|

|e3| ≤ ρ|e2| ≤ ρ3|e0|

...

|en| ≤ ρn|e0|

0 ≤ ρ < 1 =⇒ limn→∞

ρn = 0 =⇒ limn→∞

en = 0

Wojciech Szewczuk MN

Page 18: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – zbieżność

Twierdzenie 2

Niech r będzie zerem pojedynczym funkcji f i niech jej druga pochodna f ′′ będzieciągła. Wtedy istnieje takie otoczenie punktu r i taka stała C , że jeśli metodaNewtona startuje z tego otoczenia, to kolejne punkty są coraz bliższe r i takie, że

|xn+1 − r | ≤ |C(xn − r)2| (n ≥ 0).

Wojciech Szewczuk MN

Page 19: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – zbieżnośćW pewnych przypadkach metoda Newtona jest zbieżna dla dowolnego punktustartowego:

Twierdzenie 3

Jeśli f ∈ C2(R), jest rosnąca, wypukła i ma zero, to jest ono jedyne, a metodaNewtona daje ciąg do niego zbieżny dla dowolnego punktu startowego.

Dowódf wypukła jeśli ∀

x∈Rf ′′(x) > 0

f rosnąca =⇒ f ′(x) > 0Wobec dwóch powyższych z wzoru na en+1 dostaniemy en+1 > 0 =⇒ xn > r dla(n ≥ 1).Z tego, że f jest rosnąca wynika, że f (xn) > f (r) = 0. Dlatego z

en+1 = xn+1 − r = xn −f (xn)

f ′(xn)− r = en −

f (xn)

f ′(xn)

dostaniemy en+1 < en. A więc ciągi {en} i {xn} są malejące i ograniczone z dołuodpowiednio przez 0 i r oraz istnieją granice e∗ = limn→∞ en i x∗ = limn→∞ xn. Zostatniej równości wynika, że:

e∗ = e∗ − f (x∗)/f ′(x∗) impliesf (x∗) = 0 i x∗ = r .

c.n.u.Wojciech Szewczuk MN

Page 20: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona

Przykład 1

Obliczanie pierwiastków kwadratowychNiech x =

√R i R > 0. x jest pierwiastkiem równania f (x) = x2 − R = 0. Stosując

metodę Newtona otrzymamy wzór iteracyjny:

xn+1 =1

2

(xn +

R

xn

).

Jest to wzór stosowany w podprogramach pierwiastkowania. Przypisuje się goHeronowi (żył między 100 r. p.n.e i 100 r. n.e.).

Wojciech Szewczuk MN

Page 21: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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.

yk+1 = yk − G(x , yk )/∂G

∂y(x , yk )

Wojciech Szewczuk MN

Page 22: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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) = 3x7 + 2y5 − x3 + y3 − 3. Zaczniemy od x = 0 i będziemy jezwiększać z krokiem 0.1 do x = 10.Zaczniemy od x = 0 i y = 1, wtedy G(x , y) = 0.∂G∂y

(x , y) = 10y4 + 3y2

x ← 0; y ← 1; h ← 0.1; M ← 100; N ← 4output 0, x , y , G(x, y)for i = 1 to M do

x ← x + hfor j = 1 to N doy ← y − G(x, y)/ ∂G

∂y(x, y)

end dooutput i , x , y , G(x, y)

end do

Wojciech Szewczuk MN

Page 23: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – układy równań nieliniowych

f1(x1, x2) = 0

f2(x1, x2) = 0

Załóżmy, że (x1, x2) jest przybliżonym rozwiązaniem układu. Obliczmy poprawki h1 ih2 takie, żeby (x1 + h1, x2 + h2) było lepszym przybliżeniem. Zachowując tylko linioweczłony rozwinięcia Taylora rozważanych funkcji otrzymamy

0 = f1(x1 + h1, x2 + h2) ≈ f1(x1, x2) + h1∂f1

∂x1+ h2

∂f1

∂x2,

0 = f2(x1 + h1, x2 + h2) ≈ f2(x1, x2) + h1∂f2

∂x1+ h2

∂f2

∂x2.

Jest to układ równań liniowych względem h1 i h2.

Wojciech Szewczuk MN

Page 24: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Newtona – układy równań nieliniowych

Macierz układu z poprzedniego slajdu jest jakobianem (wszystkie pochodne cząstkowesą obliczane w (x1, x2).

J =[∂f1/∂x1 ∂f1/∂x2∂f2/∂x1 ∂f2/∂x2

]Rozwiązanie układu istnieje jeśli macierz J jest nieosobliwa.[

h1h2

]= −J−1

[f1(x1, x2)f2(x1, x2)

]

Wojciech Szewczuk MN

Page 25: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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+1)2

]=

[x(k)1

x(k)2

]+

[h(k)1

h(k)2

]gdzie układ liniowy

J

[h(k)1

h(k)2

]= −

f1(x(k)1 , x

(k)2

)f2(x(k)1 , x

(k)2

) rozwiązujemy np. metodą eliminacji Gaussa.

Układy n równań rozwiązujemy analogicznie.

Wojciech Szewczuk MN

Page 26: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda siecznychMetodę Newtona definiuje wzór iteracyjny:

xn+1 = xn −f (xn)

f ′(xn).

Jeśli zastąpimy pochodną ilorazem różnicowym

f ′(xn) ≈f (xn)− f (xn−1)

xn − xn−1

to otrzymamy równanie definiujące metodę siecznych

xn+1 = xn − f (xn)xn − xn−1

f (xn)− f (xn−1)(n ≥ 1).

Uwaga! Potrzebne dwa punkty początkowe. Każde nowe xn+1 wymaga już obliczeniatylko jednej nowej wartości f .

Inny sposób na ominięcie liczenia pochodnych można znaleźć w metodzie Steffensena:

xn+1 = xn −[f (xn)]2

f (xn + f (xn))− f (xn),

ale tutaj przy wyliczaniu nowego xn+1 trzeba znaleźć dwie wartości f w porównaniu dojednej w metodzie siecznych.

Wojciech Szewczuk MN

Page 27: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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, faoutput 1, b, fbfor k = 2 to M do

if |fa| > |fb| thena↔ b; fa↔ fb

end ifs ← (b − a)/(fb − fa)b ← afb ← faa← a − fa × sfa← f (a)output k, a, fa

if |fa| < ε or |b − a| < δ then stopend do

Wojciech Szewczuk MN

Page 28: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda siecznych – analiza błędu

en+1 = xn+1 − r =xn−1f (xn)− xnf (xn−1)

f (xn)− f (xn−1)− r =

=xn−1f (xn)− xnf (xn−1)

f (xn)− f (xn−1)−

(xn − en) (f (xn)− f (xn−1))

f (xn)− f (xn−1)=

=xn−1f (xn)− xnf (xn) + enf (xn)− enf (xn−1)

f (xn)− f (xn−1)=

=f (xn)(xn−1 − xn) + enf (xn)− enf (xn−1)

f (xn)− f (xn−1)=

=f (xn)(en−1 + r − en − r) + enf (xn)− enf (xn−1)

f (xn)− f (xn−1)=

=en−1f (xn)− enf (xn−1)

f (xn)− f (xn−1)=

=xn − xn−1

f (xn)− f (xn−1)

f (xn)/en − f (xn−1)/en−1

xn − xn−1enen−1

≈1

f ′(r)

f (xn)/en − f (xn−1)/en−1

xn − xn−1enen−1

Wojciech Szewczuk MN

Page 29: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda siecznych – analiza błędu

Z twierdzenia Taylora mamy

f (xn) = f (r + en) = f (r) + enf′(r) +

1

2e2n f′′(r) +O(e3

n)

f (r) = 0 bo mamy miejsce zerowe

f (xn)/en = f ′(r) +1

2enf′′(r) +O(e2

n)

Ostatnie równanie przepisujemy przesuwając wskaźnik o 1

f (xn−1)/en−1 = f ′(r) +1

2en−1f

′′(r) +O(e2n−1)

Odejmujemy stronami dwie ostatnie nierówności i pomijamy wyrazy wyższych rzędów.

f (xn)/en − f (xn−1)/en−1 ≈1

2(en − en−1)f

′′(r)

Wojciech Szewczuk MN

Page 30: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda siecznych – analiza błędu

f (xn)/en − f (xn−1)/en−1

(en − en−1)=

1

2f ′′(r)

xn − xn−1 = en − en−1

f (xn)/en − f (xn−1)/en−1

(xn − xn−1)=

1

2f ′′(r)

en+1 ≈f ′′(r)

2f ′(r)enen−1 = Cenen−1

Otrzymaliśmy równanie podobne do równania otrzymanego przy analizie metodyNewtona.Przyjmijmy teraz, że zachodzi następująca proporcjonalność asymptotyczna

|en+1| ∼ A|en|α,

gdzie A jest stałą dodatnią.

Wojciech Szewczuk MN

Page 31: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda siecznych – analiza błędu

Przyjmijmy teraz, że zachodzi następująca proporcjonalność asymptotyczna

|en+1| ∼ A|en|α,

gdzie A jest stałą dodatnią. Ta proporcjonalność, definiująca zbieżność rzędu α,oznacza, że limn→∞ |en+1|/(A|en|α) = 1, możemy więc napisać

|en| ∼ A|en−1|α ⇒ |en−1| ∼ (A−1|en|)1/α.

Wstawmy wartości asymptotyczne do „niebieskiego równania”

A|en|α ∼ |C ||en|A−1/α|en|1/α

A1+1/α|C |−1 ∼ |en|1−α+1/α

Wojciech Szewczuk MN

Page 32: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda siecznych – analiza błędu

A1+1/α|C |−1 ∼ |en|1−α+1/α

Lewa strona jest niezerową stałą, a en → 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 jestrówna 1 i 1 + 1/α = α.

A = |C |1/α ≈ |C |0.62 =

∣∣∣∣ f ′′(r)2f ′(r)

∣∣∣∣0.62

Dla takiego A mamy ostatecznie

en+1 ≈ A|en|(1+√

5)/2.

Wojciech Szewczuk MN

Page 33: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

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 metodyNewtona

Wojciech Szewczuk MN

Page 34: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Brenta – metoda hybrydowa

niezawodność bisekcji

szybkość odwrotnej interpolacji kwadratowej

Wojciech Szewczuk MN

Page 35: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Brenta – schemat

dzielimy przedział (a, b) izolacji pierwiastka na połowę

określamy, w którym z przedziałów (a, c = a+b2 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

Wojciech Szewczuk MN

Page 36: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Brenta – schemat

podstawiając y = 0 znajdziemy nowe przybliżenie poszukiwanego pierwiastka

x = −af (b)f (c)[f (b)− f (c)] + bf (c)f (a)[f (c)− f (a)] + cf (a)f (b)[f (a)− f (b)]

[f (a)− f (b)][f (b)− f (c)][f (c)− f (a)]

dla zapewnienia zbieżności powyższe przybliżenie akceptujemy tylko wtedy, gdyleży ono w nowym przedziale izolacji

w przeciwnym razie wynik interpolacji pomijamy i przeprowadzamy następnykrok bisekcji

procedurę powtarzamy aż do uzyskania żądanej dokładności

Wojciech Szewczuk MN

Page 37: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Metoda Brenta – algorytm

input a, b, M, δ, εu ← fx(a); v ← fx(b); e ← b − aif sgn(u) = sgn(v) then STOPfor k = 0 to M do

e ← e/2; c ← a + e; kk ← 0for j = 0 to M dokk ← kk + 1w ← fx(c)x ← −[avw(v − w) + bwu(w − u) + cuv(u − v)]/[(u − v)(v − w)(w − u)]if sgn(w) 6= sgn(u) and x ≤ c and x ≥ a thenb ← c; c ← x ; v ← w

else if sgn(w) 6= sgn(v) and x ≤ b and x ≥ c thena← c; c ← x ; u ← w

elsee ← b − aSTOP wychodzimy z pętli po j , kontynuujemy po k

end ifif e < δ or |w| < ε then

output c, k + kk, wSTOP PROGRAM

end ifend doif e < δ or |w| < ε then

output c, k + kk, woutput STOP PROGRAM

end ifif sgn(w) 6= sgn(u) thenb ← c; v ← w

elsea← c; u ← w

end ifend do

Wojciech Szewczuk MN

Page 38: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Wielomiany

p(z) = anzn + an−1z

n−1 + ...+ a1z + a0

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 Bairstowametoda Laguerre’a

Wojciech Szewczuk MN

Page 39: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Schemat Hornera

p(z) = anzn + an−1z

n−1 + ...+ a1z + a0

oczywisty algorytm obliczania wartości v = p(z0), czyli onliczanie potęgwielkości z0, ich mnożenie przez współczynniki wielomianu i sumowanie tychwspółczynników wymaga 2n − 1 mnożeń i n dodawań

wyrażając wielomian p w postaci

a0 + z(a1 + z(a2 + ...+ z(an−1 + anz)...))

otrzymujemy algorytm, w którym wystarczy wykonać n mnożeń i n dodawań

Wojciech Szewczuk MN

Page 40: Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach numerycznych lepiej jest wykonać instrukcję c a + (b a)=2 niż c (a + b)=2 zmianę

Schemat Hornera – algorytm

input n, (ai : 0 ≤ i ≤ n), z0

v ← anfor k=n-1 to 0 step -1 do

v ← ak + z0v

end do

output v

Wojciech Szewczuk MN