Wyznaczanie miejsc zerowych funkcji

Transkrypt

Wyznaczanie miejsc zerowych funkcji
Wyznaczanie miejsc zerowych funkcji
Piotr Modliński
26 października 2010
Spis treści
1 Wstęp
1
2 Metody iteracyjne
2.1 Zbieżność metody . . . . . . . . . . .
2.2 Lokalizacja zer . . . . . . . . . . . .
2.3 Metody odnajdywania zer . . . . . .
2.3.1 Metoda bisekcji . . . . . . . .
2.3.2 Metoda regula falsi . . . . . .
2.3.3 Metoda stycznych – Newtona
2.3.4 Metoda siecznych . . . . . . .
2.3.5 Metoda iteracji prostej . . . .
1
2
2
2
2
3
3
4
5
3 Praktyczne warunki stopu
5
4 Uwagi
4.1 Zera wielokrotne . . . . . . . . . . .
4.2 Przybliżenia pochodnych . . . . . . .
6
6
6
5 Zadania kontrolne
5.1 Zadanie 1 . . . . . . . . . . . . . . .
5.2 Zadanie 2 . . . . . . . . . . . . . . .
5.3 Zadanie 3 . . . . . . . . . . . . . . .
6
6
6
6
1
pomocą funkcji elementarnych. Bardzo wiele problemów sprowadza się do znalezienia miejsc zerowych
wielomianów, a nawet wśród nich wystarczy, że stopień jest nieco większy i już mamy duże problemy z
wyznaczeniem wyniku. Kolejnym przykładem może
być wyznaczenie pierwiastka kwadratowego określonej liczby a, które także można przekształcić do rozwiązania równania postaci f (x) = x2 − a = 0. Podobnie rozwiązanie równania wykorzystać można dla
wyznaczenia odwrotności liczby a bez wykonywania
dzielenia1 .
Często jednak nie jest konieczne wyznaczenie
miejsca zerowego w sposób dokładny, a wystarczy
pewne („bardzo dobre” – nie gorsze niż ) przybliżenie – np. w większości zastosowań inżynierskich
nie interesuje nas wartość dokładna, a jedynie wystarczająco bliska skoro i tak mamy do czynienia z
błędami pomiarów. Wówczas do przybliżonego rozwiązania takiego zadania posłużyć się możemy komputerem.
Na zajęciach zajmiemy się jedynie grupą tzw. metod iteracyjnych które w kolejnych krokach (iteracjach) coraz dokładniej przybliżają nam poszukiwane miejsce zerowe. Nie będziemy też koncentrować
się na metodach najbardziej efektywnych, czy wykorzystywanych w specjalizowanych algorytmach, a
na tych najprostszych, które owszem – umożliwiają
znalezienie rozwiązania, jednak są na tyle proste, że
opanowanie ich nie powinno stanowić problemu.
Wstęp
Przy wszelkiego rodzaju obliczeniach, rozwiązywaniu równań itp. spotykamy się z bardzo podstawowym problemem – wyznaczenia miejsc zerowych danej funkcji. Warto zwrócić uwagę na fakt, że zadanie
to jest równoważne rozwiązywaniu równań nieliniowych – każde równanie przekształcić można do postaci f (X) = 0. Czasami, w bardzo specyficznych
przypadkach, jesteśmy w stanie wyznaczyć rozwiązanie w sposób analityczny, jednak nie zawsze tak
jest. Przykładem takiego problemu może być tzw.
równanie Keplera (f (x) ≡ x − sin(x) − M = 0),
które jest bardzo istotnym narzędziem w astronomii, gdyż pozwala wyznaczyć przyszłe położenie planety, jednak poza paroma prostymi przypadkami, w
ogólności nie daje się rozwiązać w prosty sposób za
2
Metody iteracyjne
Jak zaznaczono we wstępie, metody te pozwalają
w kolejnych krokach na coraz dokładniejsze przybliżanie miejsc zerowych2 . Każde kolejne oszacowanie
1
które jest niepożądane w pewnych sytuacjach – np. w
128-bitowym rejestrze wektorowym procesorów AMD wynik
jest obardzony znaczącym błędem, który jest ponoszony jako
cena zwiększonej szybkości obliczeń
2
w ogólności pod nazwą metod iteracyjnych występują
różne algorytmy pozwalające w kolejnych iteracjach zbliżać
się do rozwiązania różnych problemów, czy to szukania miejsc
1
(kolejny krok) wykonywany jest na podstawie jednego, lub kilku poprzednich:
zmiana znaku wartości funkcji ciągłej. Dodatkowo jeśli znak pochodnej się nie zmienia,
mamy tylko jedno miejsce zerowe.
x(k+1) = Φk (x(k) , . . . , x(k+1−m) )
Metoda graficzna
Ilość kroków wykorzystywanych do wyznaczenia koRozłożenie badanej funkcji na dwie składowe
lejnego określana jest jako m-krokowość metody
f (x) = f1 (x) − f2 (x) i określanie liczby prze(w ten sposób metoda wykorzystująca tylko jeden
cięć (np. f (x) = x4 − (2x + 1)).
punkt jest metodą jednokrokową, dwa ostatnie poW niniejszym opracowaniu nie będę metodom lokatrzebuje dwukrokowa itd).
lizacji poświęcał większej uwagi.
2.1
Zbieżność metody
2.3
Metody odnajdywania zer
Określa się tzw. rząd metody p definiowany następująco:
W poniższych rozważaniach zakładamy, że na rozp
k
b
b ¬ A · xk+1 − x
ważanym przedziale [a, b] mamy funkcję ciągłą, klasy
x − x
C 1 , która ma jedno miejsce zerowe które oznaczamy
gdzie xb jest poszukiwanym miejscem zerowym, a
przez xb. Ewentualne dalsze założenia opisane przy
A współczynnikiem zbieżności. Rząd metody okrekonkretnych metodach.
śla szybkość, z jaką kolejne przybliżenia zbiegają do
rozwiązania rzeczywistego. W przypadku w którym
p = 1 mówimy o zbieżności liniowej, kiedy p ­ 1 o 2.3.1 Metoda bisekcji
zbieżności ponadliniowej, która jest szybsza od linio- Znana także pod innymi nazwami (metoda równego
wej.
podziału, metoda połowienia itp.) jest podstawową
2.2
i najbardziej chyba intuicyjną z metod rozwiązywania równań nieliniowych – poszukiwania miejsc zerowych. Opiera się na twierdzeniu Bolzano-Cauchy:
Lokalizacja zer
Metody iteracyjne w znakomitej większości dobrze
działają w przypadku, w którym badana funkcja posiada jedno miejsce zerowe. Zazwyczaj jednak nie
jest tak pięknie i bywa z tym różnie. Stąd pierwszym krokiem jest tzw. lokalizacja miejsc zerowych
– wyznaczenie przedziału, w którym takie miejsce
jest tylko jedno. Ułatwi to znacznie działanie algorytmom, skróci czas ich działania (ilość iteracji), a w
skrajnych przypadkach będzie wręcz niezbędne dla
uzyskania poprawnych rezultatów. Po wyznaczeniu
przedziału po prostu traktujemy go jako dziedzinę
funkcji na której działamy, przez co w samym algorytmie iteracyjnym nie musimy już martwić się
wieloma miejscami zerowymi.
Metod lokalizacji zer można wymyślić wiele, najprostsze i najbardziej chyba intuicyjne to:
Jeżeli funkcja ciągła f (x) ma na końcach przedziału domkniętego wartości różnych znaków, to wewnątrz tego przedziału,
istnieje co najmniej jeden pierwiastek równania f (x) = 0
Poza ciągłością na przedziale [a, b] mamy dodatkowe założenie, że na krańcach przedziału funkcja
ma przeciwne znaki, zatem:
f (a) · f (b) < 0
Całość algorytmu przedstawiona jest na rysunku 1 i
w poniższych punktach (zaczyna się od k = 1):
1. Sprawdź, czy punkt x(k) =
kiem równania f (x(k) ) = 0
Tablicowanie
Utwórzmy tablicę wartości funkcji wyznaczanych co pewien stały krok i sporządźmy przybliżony wykres łącząc kolejne punkty. W okolicy
przecięcia wykresu z osią y = 0 powinno znaleźć
się nasze miejsce zerowe.
a+b
2
jest pierwiast-
2. Jeżeli tak, algorytm kończy się, a punkt x(k) jest
szukanym miejscem zerowym.
3. Jeżeli nie, x(k) dzieli przedział [a, b] na dwa
mniejsze przedziały: [a, x(k) ], oraz [x(k) , b]. Proces powtarzany jest od początku dla przedziału,
który spełnia założenie przeciwnych znaków, tj.
f (a) · f (x(k) ) < 0 (wówczas b = x(k) ), lub
f (x(k) ) · f (b) < 0 (wtedy a = x(k) ).
Analiza matematyczna
Określenie metodami analitycznymi – np.
zerowych, sortowania, czy wielu innych
2
punktów3 ). Algorytm powtarza się dla nowego
przedziału.
Źród ło: p l.wikiped ia.o rg
Rysunek 1: Metoda bisekcji – kolejne kroki
Źród ło : pl.wikip ed ia.o rg
Działanie algorytmu kończy się po znalezieniu
pierwiastka, lub po osiągnięciu żądanej dokładności
Rysunek 2: Metoda regula falsi – kolejne kroki
. Warto zwrócić uwagę, że dokładność można oszacować jeszcze przed rozpoczęciem obliczeń – ponie- Stosowanie reguły można uprościć wyprowadzając
waż z każdym krokiem przedział [a, b] zmniejsza się wzory na kolejne punkty:
dwukrotnie, błąd popełniany w k-tej iteracji można
(b)−b·f (a)
¬ .
szacować przez b−a
2k
x(1) = a·ff (b)−f
(a)
Dla metody bisekcji można przyjąć, że A = 0, 5,
 (k)
zaś p = 1.
(x(k) )
 x ·f (a)−a·f(k)
gdyf (a)f (x(k) ) ¬ 0
f
(a)−f
(x
)
Za pomocą prostych przekształceń można poka- x(k+1) =
 x(k) ·f (b)−b·f (x(k) ) gdyf (b)f (x(k) ) < 0
zać, że dla znalezienia pierwiastka z zadaną dokładf (b)−f (x(k) )
nością trzeba wykonać co najmniej k iteracji, gdzie:
Rząd metody szacować można na liniowy (p = 1),
'
&
b−a
przy czym metoda jest skuteczna zwłaszcza przy
k = k() = log2
funkcjach zbliżonych do liniowych.
2.3.2
2.3.3
Metoda regula falsi
Metoda stycznych – Newtona
Metoda ta, nazywana także metodą NewtonaRaphsona polega na wyznaczaniu kolejnych przybliżeń miejsca zerowego (x(k+1) ) jako miejsc zerowych
stycznych do wykresu w poprzednm punkcie (x(k) ).
Metoda – podobnie jak każda inna, posiada pewne
założenia niezbędne do poprawnego działania. Założenia te są bardzo podobne do metody regula
falsi: dokładnie jeden pierwiastek na przedziale [a, b],
różne znaki na krańcach przedziału (f (a) · f (b) < 0),
oraz dodatkowo stały znak pierwszej i drugiej pochodnej na całym przedziale.
Przebieg pokazany jest na rysunku 3, oraz w punk1. Poprowadź cięciwę przez punkty A(a, f (a)) i
tach poniżej:
B(b, f (b)).
Drugą z metod, którymi się zajmiemy będzie tzw.
regula falsi (łac: fałszywa reguła, lub łac: fałszywa
[linia] prosta). W porównaniu z metodą bisekcji metoda różni się tym, że inaczej wyznaczany jest punkt
x(k) . Potrzeba tych samych założeń, co w przypadku
metody bisekcji, tj. założenia o istnieniu jednego
pierwiastka na przedziale [a, b], oraz różnych znakach
na jego końcach.
Przebieg algorytmu przedstawiono w kolejnych
punktach, oraz na rysunku 2:
2. Punkt przecięcia x(k) cięciwy z osią OX jest pierwszy krok
brany jako przybliżenie rozwiązania.
• Wybierz punkt startowy x(0) (zazwyczaj
).
jest to jedna z wartości a, b, 0, 1, a+b
2
3. Jeśli przybliżenie jest wystarczająco dobre, algorytm kończy się
• k=1
(k)
4. W przeciwnym razie punkt x staje się no3
jeśli badana funkcja ma stały znak pierwszej i drugiej
wym punktem a, lub b (w zależności od tego, pochodnej, za każdym razem zastępowany jest ten sam koniec
jaki jest znak wartości funkcji w każdym z tych przedziału
3
k-ty krok
jest w połączeniu z innymi – np. z metodą bisekcji
i po osiągnięciu pewnego przybliżenia miejsca zerowego dopiero następuje „przełączenie” na Newtona,
• Wyprowadź styczną f (x(k−1) ) do wykresu żeby szybko znaleźć z dużą dokładnością szukane
funkcji w punkcie x(k−1) .
rozwiązanie.
• Oznacz punkt przecięcia stycznej z osią
OX przez x(k) – jest to kolejne (k-te) przybliżenie punktu xb.
x3 - 2x + 2
• Jeśli wyznaczone przybliżenie jest satysfakcjonujące, algorytm się w tym momencie kończy, jeśli nie, k jest zwiększane o 1
i następuje kolejna iteracja.
Źród ło : pl.wikip ed ia.o rg
Rysunek 4: Cykl w metodzie Newtona – funkcja x3 −
2x + 2 w punktach 0 i 1
2.3.4
Od sposobu działania nazywana też metodą interpolacji liniowej, bądź także metodą Eulera opiera się na
przyjęciu założenia, że na dostatecznie małym przedziale [a, b] funkcja zmienia się w przybliżeniu w sposób liniowy, zatem krzywa y = f (x) może na odcinku
[a, b] zostać zastąpiona sieczną (prostą przechodzącą
przez punkty A(a, f (a)) i B(b, f (b))). Za (kolejną)
przybliżoną wartość pierwiastka przyjmuje się wówczas punkt przecięcia siecznej z osią OX. Oczywiście
jeśli pożądana jest większa dokładność, punkt przecięcia staje się po prostu nową granicą przedziału
i operację się powtarza. Kolejne iteracje wykorzystują nie jeden punkt (jak w poprzednio rozważanych metodach), ale dwa, stąd jest to metoda drugiego rzędu. Granicami przedziału w kolejnej iteracji
są dwie ostatnio wyznaczone wartości. Metoda siecznych klasyfikowana jest jako pewien wariant metody
Newtona, gdyż dla dostatecznie bliskich punktów
na podstawie których wyznaczany jest kolejny, iloraz różnicowy jest bliski pochodnej, zatem kolejne
punkty generowane są w ten sam sposób. Powoduje
to niestety przenoszenie zasadniczej wady metody
Newtona, jaką jest brak zbieżności globalnej, za to
nie wymaga obliczania pochodnych.
Na rysunku 5 przedstawiono kolejne dwa kroki algorytmu. Najpierw na podstawie wartości x1 i x2
wyznaczono wartość x3 , a następnie na podstawie
x2 i x3 wyznaczono x4 .
Źród ło: p l.wikiped ia.o rg
Rysunek 3: Metoda stycznych – kolejne kroki
Stosowanie reguły można uprościć wyprowadzając
wzory na kolejne punkty:
x(k+1) = x(k) −
Metoda siecznych
f (x(k) )
f 0 (x(k) )
Oszacowanie błędu Błąd k-tego przybliżenia
można oszacować na jeden z następujących sposobów:
f (x(k) )
(k) b
x − x ¬
m
2
M
b − x(k) ¬
x
xb − x(k−1)
2m
gdzie m
=
minx∈[a,b] |f 0 (x)|, oraz M
=
00
maxx∈[a,b] |f (x)|
Problemy Metoda nie jest narzędziem doskonałym z kilku powodów. Metoda nie w każdym przypadku jest zbieżna – w szczególności jeśli punkt startowy jest zbyt daleko od miejsca zerowego, bardzo
często algorytm się „rozbiega”. Innymi słowy nie
jest zbieżna globalnie. Może wpaść w swoisty cykl
(por. rys. 4) bądź w ogóle nie wystartować jeśli
źle wybierzemy punkt początkowy (np. dla funkcj
f (x(k) )
(k)
(k−1)
(k+1)
(k)
2
x
−
x
x
=
x
−
f (x) = 1 − x jeśli początkowym punktem będzie
f (x(k) ) − f (x(k−1) )
x(0) = 0 to kolejny punkt będzie w nieskończono√
ści!!!). Dlatego metoda ta często wykorzystywana Jeśli f (x) ∈ C 2 [a, b] to p = 1+2 5 ≈ 1, 618 . . .
4
bezwzględna długość kroku
W każdej iteracji wyznaczany jest kolejny krok,
który jest bliżej rozwiązania optymalnego od
poprzedniego. Jeśli kolejne kroki będą zbyt blisko siebie, założyć można, że jesteśmy wystarczająco blisko zera4 :
(k+1)
x
Źród ło: en.wikiped ia.org
− x(k) ¬ Rysunek 5: Metoda siecznych – dwa pierwsze kroki względna długość kroku
Analogicznie jak w poprzednim wypadku, ale
tym razem nie patrzymy na bezwzględną wiel2.3.5 Metoda iteracji prostej
kość kroku, tylko bierzemy pod uwagę stosuZupełnie inną od poprzednio omówionych jest tzw.
nek długości kroku do wartości wyznaczonego
metoda iteracji prostej oparta na twierdzeniu Bapunktu. To podejście jest znacznie lepsze pod
nacha o kontrakcji. Nie jest to metoda powstała na
względem numerycznym od poprzedniego (poskutek inżynierskich przybliżeń, ale jej uzasadnienie
dobne cechy), jak i „organoleptycznym” (różtkwi w analizie funkcji i nie będziemy szczegółowo
nicę między 0, 1 a 0, 0001 łatwiej dostrzec niż
się w nią zagłębiać (tylko tyle, ile jest niezbędne).
między 1.000.000.000 a 1.000.000.000, 1 mimo,
Przekształćmy nasze równanie f (x) = 0 w rówże w tym drugim przypadku bezwzględna różnanie równoważne wprowadzając funkcję φ(x) taką,
nica jest większa niż w pierwszym.) Problem
że:
ze „stromymi” funkcjami analogiczny jak w pox = φ(x) ≡ f (x) = 0
przednim przypadku. Formalnie można to więc
zapisać następująco:
Następnie miejsce zerowe znajdziemy przez ciąg kolejnych przybliżeń, gdzie:
(k+1)
x
− x(k) ¬ x(k+1) x(k) = φ(x(k−1) )
najlepsza znaleziona wartość
Przyjmujemy wartość jaką będziemy uważać za
„wystarczająco bliską zera” i jeśli bezwzględna
wartość funkcji jest od niej mniejsza zakładamy,
że „trafiliśmy” w miejsce zerowe. UWAGA! Dla
bardzo „płaskich” funkcji może powodować bardzo duże różnice! Np. znajdzie zera dla funkcji
f (x) = x1 ! Formalnie zapisując:
Cały problem polega na tym, że funkcja φ(x) nie
może być dowolnym przekształceniem, ale tzw. odwzorowaniem zwężającym, tj. dla D0 ⊂ [a, b] będącym domkniętym podzbiorem dziedziny mamy:
• φ(D0 ) ⊂ D0
• ∃L∈[0,1] ∀x,y∈D0
|φ(x) − φ(y)| ¬ L|x − y|
Wówczas równanie x = φ(x) ma dokładnie jedno
rozwiązanie xb, oraz xb = limk→∞ x(k) dla dowolnego
początkowego przybliżenia x(0) ∈ D0 .
3
f (x(k) )
¬
maksymalna ilość iteracji
Najprostsza chyba możliwość – kiedy k osiągnie graniczną wartość, czyli obliczenia trwają
już zbyt długo, kończymy działanie. Pozostaje
tylko określenie czy udało się znaleźć miejsce
zerowe, czy nie. Można więc ten warunek dać
jako nadrzędny – kolejne są sprawdzane tylko
pod warunkiem, że:
Praktyczne warunki stopu
Nazbyt optymistycznym byłoby zakładać, że metoda
w końcu „wstrzeli” się dokładnie w miejsce zerowe.
Ponieważ dziedzina rozważanej funkcji jest zbiorem
mocy C, a przy nieskończonej liczbie kroków mamy
„tylko” ℵ0 sprawdzonych punktów, szansa trafienia
jest statystycznie równa 0. W praktyce potrzebuk < k max
jemy jednak „wystarczająco dokładnego” przybliże4
jednak jeśli pochodna funkcji w otoczeniu zera ma dużą
nia miejsca zerowego. Jak je uzyskać? Istnieje kilka wartość bezwzględną, czyli funkcja jest bardzo stroma, warsposobów określenia chwili, w której algorytm powi- tości mogą się znacznie różnić! Np. f (x) = ctg(x) − 1010 dla
x≈0
nien już się zatrzymać:
5
4
4.1
Uwagi
1. x = x3 − 4, 5
2. x =
Zera wielokrotne
q
4,5+x
x
√
W przypadku występowania na danym przedziale
3. x = 3 4, 5 + x
więcej niż jednego miejsca zerowego (bądź zer wielokrotnych) pewne metody nie działają poprawnie,
5.3 Zadanie 3
inne wymagają dodatkowych warunków dla poprawności działania. Często także dochodzi do obniżenia Proszę zlokalizować zera, a następnie wyznaczyć
rzędu metody (działa wolniej). Istnieją różne mo- pierwiastki równania:
dyfikacje przedstawionych metod pozwalające wy64x3 − 112x2 + 28x + 15 = 0
znaczać pierwiastki wielokrotne, czy w wielu wymiarach, w dziedzinie zespolonej itd, ale nie będziemy
się nimi tutaj zajmować.
4.2
Przybliżenia pochodnych
Pochodne funkcji w punkcie wyznacza się za pomocą
ilorazów różnicowych:
f 0 (x) ≈
f (x + h) − f (x − h)
2h
f (x + h) − 2f (x) + f (x − h)
h2
Tak zdefiniowane ilorazy są wystarczająco dobrym
oszacowaniem. Oczywiście z jednej strony im mniejsze h, tym oszacowanie jest dokładniejsze, jednak
z zajęć poświęconych błędom numerycznym wiemy,
że nie można dowolnie tej wartości zmniejszać, gdyż
jesteśmy ograniczeni błędami zaokrągleń – wówczas
nastąpi skokowe pogorszenie oszacowania do tego
poziomu, że będzie ono zupełnie nieprzydatne.
f 00 (x) ≈
5
5.1
Zadania kontrolne
Zadanie 1
Proszę znaleźć rozwiązania następujących równań
nieliniowych metodami przedstawionymi w niniejszym opracowaniu:
1. x3 − x − 4, 5 = 0 na przedziale [1, 2]
2. ctg(x) − x = 0 na przedziale [π/4, π/2]
3. x2 − α = 0 dla wybranej wartości parametru α
5.2
Zadanie 2
Dla metody iteracji prostej proszę określić, które
przekształcenia równania x3 − x − 4, 5 = 0 na przedziale [1, 2] są zbieżne i dlaczego (proszę uzasadnić),
a następnie sprawdzić eksperymentalnie poprawność
wniosków:
6