Metoda bisekcji

by Jerry Sky

2020-10-22



1. Metoda bisekcji (połowienia)

Założenia:

cn=12(an+bn)(n0) c_n = \frac{1}{2} (a_n + b_n) \quad (n\ge 0)

Warunek końca: bnanδ|b_n - a_n| \le \delta, f(cn)ϵ|f(c_n)| \le \epsilon

2. Algorytm

  1. uf(a)u \gets f(a)
  2. vf(b)v \gets f(b)
  3. ebae \gets b - a
  4. if sgn(u)=sgn(v)\operatorname{sgn}(u) = \operatorname{sgn}(v):
    1. return error
  5. for k1k \gets 1 to MM:
    1. ee2e \gets \frac{e}{2}
    2. ca+ec \gets a + e
    3. wf(c)w \gets f(c)
    4. if e<δ|e| < \delta or w<ϵ|w| < \epsilon:
      1. return k,c,wk,c,w
    5. if sgn(w)u\operatorname{sgn}(w) \neq \operatorname{u}:
      1. bcb \gets c
      2. vwv \gets w
    6. else
      1. aca \gets c
      2. uwu \gets w

3. Twierdzenie o zbieżności metody bisekcji

Niech [a0,b0];[a1,b2];;[an,bn];[a_0, b_0]; [a_1, b_2]; \dots; [a_n, b_n]; \dots będzie ciągiem przedziałów konstruowanych przez metodę bisekcji. Wówczas istnieją granice limnan\lim_{n \to \infty} a_n oraz limnbn\lim_{n \to \infty} b_n i są sobie równe, reprezentujące zero rr funkcji ff.

Jeśli r=limncnr = \lim_{n \to \infty} c_n oraz cn=12(an+bn)c_n = \frac{1}{2}(a_n + b_n), wówczas rcn2(n+1)(b0a0). |r - c_n| \le 2^{-(n+1)} (b_0 - a_0).

3.1. D-d

Końce generowanych przedziałów spełniają zależności a0a1a2b0b0b1b2a0 a_0 \le a_1 \le a_2 \le \dotsb \le b_0\\ b_0 \ge b_1 \ge b_2 \ge \dotsb \ge a_0\\

bnan=12(bn1an1)=2n(b0a0) b_n - a_n = \frac{1}{2}(b_{n-1} - a_{n-1}) = 2^{-n} (b_0 - a_0)

Ponieważ ciąg {an}\{ a_n \} (odp. {bn}\{ b_n \}) jest rosnący (odp. malejący) i ograniczony z góry (odp. dołu), więc zbieżny.
Zatem limnbnlimnan=limn2n(b0a0)=0 \lim_{n \to \infty} b_n - \lim_{n \to \infty} a_n = \lim_{n \to \infty} 2^{-n} (b_0 - a_0) = 0

Stąd limnbn=limnan=r\lim_{n \to \infty} b_n = \lim_{n \to \infty} a_n = r. Przechodząc do granicy w nierówności 0f(an)f(bn)0 \ge f(a_n) \cdot f(b_n), otrzymujemy 0(f(r))20 \ge \left( f(r) \right)^2. Co implikuje f(r)=0f(r) = 0 (zbieżność).
Niech [an,bn][a_n, b_n] będzie przedziałem wygenerowanym przez metodę bisekcji. Jeśli warunek końca jest już spełniony, oczywiście r[an,bn]r \in [a_n, b_n], wówczas najlepszym przybliżeniem pierwiastka rr jest środek przedziału cn=an+bn2c_n = \frac{a_n + b_n}{2}.
Błąd możemy oszacować następująco: rcn12(bnan)=2(n+1)(b0a0) |r - c_n| \le \frac{1}{2} (b_n - a_n) = 2^{-(n+1)} (b_0 - a_0) \quad \blacksquare


3.2. Przykład

Niech [50,63][50, 63] będzie przedziałem, w którym ff ma pierwiastek.
Jaka jest liczba iteracji metody bisekcji, aby wyznaczyć pierwiastek z błędem względnym 101210^{-12}? rcnrrcn502(n+1)13501012 \frac{|r - c_n|}{|r|} \le \frac{|r - c_n|}{50} \le 2^{-(n+1)} \frac{13}{50} \le 10^{-12}

Rozwiązując powyższą nierówność otrzymujemy n37n \ge 37.