3. Przybliżone rozwiązywanie równań nieliniowych i ich układów 158
Przypominamy, że liczby Fibonacciego F, są określone wzorem rekurencyj-nym
F0 = Fi = 1, Fj = F,_, + F,_2, i = 2, 3, ... Na przykład: F1 = 21, F,0 = 89.
bm _ fl(0) Q
Algorytm optymalnego podziału jest następujący. Niech c = Znajdujemy takie N, aby FN_, < c ^ FN. Określamy
t(p= ' - (b — a) + a Fn-i+ i
t(2°= -_fi —(6-a) + a, i = 1,2, ..., A — 2 •'W-/+1
Zgodnie z rys. 3.7 w każdej iteracji obliczamy nowe punkty a i b w sposób następujący:
Jeżeli/(/(j)) ^ to a pozostaje bez zmiany, b = t(%.
Jeżeli /(f(j}) > f{t(2), to a — t(iJ, a b pozostaje bez zmiany.
P
Po /-tej iteracji długość przedziału <a; i) zostaje zmniejszona -—
Ff/-i+\
razy bez względu na to, która nierówność jest spełniona.
Po (N — 2) iteracjach długość przedziału zostaje zmniejszona do wartości
(b-a) =
Fn-1 Fn-2 _
FN Fn_ 1 F:
bw _ fl(0)
Wykonano łącznie N — 1 obliczeń wartości funkcji.
Przykład. Znaleźć minimum funkcji f(x) = |jc| zlokalizowane w przedziale <—4; 4>. Pożądana dokładność q = 1.
Przykład ten rozwiążemy dwiema metodami:
a) Metoda połowienia
/V>= -2, ty>=o, ry>=2
/(-2) </(0), /(2) >/(0) =- <u; ń> = <-2; 2> f<2)= -l, r«)=o, t‘2>= 1
/(-1) >/(0), /(l) >/(0) =><—u; 6> = <1; l>=>f = 0
/(O = 0
Wykonano łącznie 5 obliczeń funkcji.
b) Metoda Johnsona
b — a
Fs = 8 =-, więc N = 5
e
3.5. Poszukiwanie minimów funkcji jednej zmiennej
159
/(,”= I'8 + (-4) = -1, ry’ = |-8 + (-4) = 1 /(-i)=/(i)=»<«; *> = <-4; i>
/<2>=?-5 + (-4)= -2, ł?>=j-5 + (-4)=-l
/(—2) >/(—1)=> <a; by = <—2; 1>
,w=i-3 + (—2) = —1, f(23,= j-3 + (-2) = 0
/(— 1) >/(0) =>(a; = < — 1; l>~/ = 0
Wykonano łącznie 4 obliczenia wartości funkcji.
Uwaga. Ponieważ do zmniejszenia — razy długości przedziału potrzeba N — 1 obliczeń
N-\ [F~N
wartości funkcji, więc jedno obliczenie wartości funkcji zmniejsza średnio przedział /—
275
1,61.
razy. Można wykazać, że Iz^/£)
Zatem lim
yv—oo
*->ITn 1+75
1,22, a dla
Dla porównania wskaźnik ten dla metody podziału na trzy części wynosi metody połowienia J2 a 1,41.
3.5.3. Metoda złotego podziału
< Metoda ta polega na takim wyborze punktów podziału t\0 oraz t(2°, aby przedział (a; b) zmniejszał swą długość po każdej iteracji tyle samo razy oraz by po wyznaczeniu punktów nowego podziału, tzn. t((+ 0 i t(2+ jeden z tych punktów pokrywał się z wyznaczonym punktem podziału w poprzedniej iteracji. Ma to na celu zmniejszenie obliczeń wartości funkcji, gdyż jedynie w pierwszej iteracji obliczamy dwie wartości funkcji, w następnych zaś już tylko jedną wartość funkcji. Zauważmy, że cechę tę miał omówiony poprzednio algorytm optymalny. Wymagania powyższe spełnia algorytm, w którym
Ą0 — a = b — t\° = x {b — a), x e (0; 1)
b - t<j> = x(b - t<?)
Stąd t2 + x — 1 = 0, czyli x = « 0,62. Liczba x jest stosunkiem