lang | title | author | date |
---|---|---|---|
pl |
Metoda bisekcji |
Jerry Sky |
2020-10-22 |
Założenia:
-
$f$ jest funkcją ciągłą w$[a;b]$ -
$f(a) \cdot f(b) < 0$ ($f$ zmienia znak)
Warunek końca:
- Dane: $a,b,M, \delta, \epsilon$
- Wyniki $k, \tilde{r}, f(\tilde{r})$
$u \gets f(a)$ $v \gets f(b)$ $e \gets b - a$ -
if
$\operatorname{sgn}(u) = \operatorname{sgn}(v)$ :return error
-
for
$k \gets 1$ to
$M$ :$e \gets \frac{e}{2}$ $c \gets a + e$ $w \gets f(c)$ -
if
$|e| < \delta$ or
$|w| < \epsilon$ :-
return
$k,c,w$
-
-
if
$\operatorname{sgn}(w) \neq \operatorname{u}$ :$b \gets c$ $v \gets w$
-
else
$a \gets c$ $u \gets w$
Niech
Jeśli
Końce generowanych przedziałów spełniają zależności $$ 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\ $$
Ponieważ ciąg
Zatem
$$
\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
Niech
Błąd możemy oszacować następująco:
$$
|r - c_n| \le \frac{1}{2} (b_n - a_n) = 2^{-(n+1)} (b_0 - a_0) \quad \blacksquare
$$
Niech
Jaka jest liczba iteracji metody bisekcji, aby wyznaczyć pierwiastek z błędem względnym $10^{-12}$?
$$
\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