Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach...
Transcript of Metody Numeryczne - astro.uni.wroc.pl · Metoda bisekcji – algorytm Dwie uwagi: w obliczeniach...
Metody Numeryczne
Wojciech Szewczuk
Wojciech Szewczuk MN
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
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
Metoda bisekcji – połowienia
Wojciech Szewczuk MN
Metoda bisekcji – połowienia
Wojciech Szewczuk MN
Metoda bisekcji – połowienia
Wojciech Szewczuk MN
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Metoda Brenta – metoda hybrydowa
niezawodność bisekcji
szybkość odwrotnej interpolacji kwadratowej
Wojciech Szewczuk MN
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
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
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
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
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
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