Metoda bisekcji znajduje przybliżone miejsce zerowe funkcji ciągłej f(x) na przedziale [a, b], jeśli f(a) i f(b) mają przeciwne znaki (czyli funkcja na pewno przecina oś OX gdzieś w tym przedziale). W każdym kroku dzielimy przedział na pół i sprawdzamy, w której połowie znak się zmienia.
Każdy krok zmniejsza przedział o połowę, więc liczba kroków potrzebnych do osiągnięcia dokładności epsilon wynosi w przybliżeniu log₂((b-a)/epsilon) — stąd nazwa "połowienie" i związek z notacją O(log n).
Naiwne obliczenie wartości wielomianu W(x) = aₙxⁿ + aₙ₋₁xⁿ⁻¹ + ... + a₀ wymaga O(n²) mnożeń (bo trzeba osobno liczyć każdą potęgę x). Schemat Hornera zapisuje wielomian w postaci zagnieżdżonej: W(x) = ((...(aₙx + aₙ₋₁)x + aₙ₋₂)x + ... )x + a₀, co pozwala policzyć wynik w O(n) mnożeń.
Bez używania funkcji bibliotecznej math.sqrt() można wyznaczyć pierwiastek z liczby a na dwa sposoby: metodą bisekcji (szukamy miejsca zerowego f(x) = x² - a) albo szybciej zbieżną metodą Newtona.
Używając metody bisekcji, znajdź przybliżone rozwiązanie równania x³ - x - 2 = 0 na przedziale [1, 2] z dokładnością 10⁻⁶.
Zmodyfikuj funkcję obliczającą wielomian naiwnie (używając x ** i w pętli) i porównaj liczbę wykonanych mnożeń z wersją Hornera dla wielomianu stopnia 10.
1. Warunkiem koniecznym do zastosowania metody bisekcji jest:
2. Jaką złożoność obliczeniową ma obliczenie wartości wielomianu schematem Hornera?
3. Metoda Newtona do liczenia pierwiastka kwadratowego opiera się na wzorze: