LABORATORIUM 2
Grupa NP, poniedziałek 09.03.2026, godz 08:30

Metody numeryczne - laboratorium 2

Napisz skrypt wyznaczający numerycznie liczbę kroków \(k\) potrzebnych do rozwiązania równania \(f(x)=x^3-2x^2+2\) metodą bisekcji na dowolnym przedziale \(x \in \langle a; b \rangle \) z zadaną tolerancją \(\epsilon\). Narysuj wykres zestawiający liczbę kroków \(k\) z wartością tolerancji \(\epsilon\) i porównaj go z przewidywaniemi teoretycznymi.

Wymagania odnośnie zadania (w nawiasach podana punktacja):

  1. Skrypt ma rozwiązać zadane równanie numerycznie, metodą bisekcji z zadaną tolernacją \(\epsilon\) i zwrócić liczbę kroków \(k\) potrzebnych do uzyskania rozwiązania przy takiej tolerancji. Algorytm metody został przedstawiony na Wykładzie nr 2 na slajdach od 5 do 8 oraz ponizej w ramce. Przed wykonaniem właściwych obliczeń skrypt powinien sprawdzać czy w zadanym przedziale może znajdować się pierwiastek (patrz: punkt 1 algorytmu). Jeśli dany przedział nie spełnia założeń, skrypt powinien wyświetlić komunikat o błędnym przedziale, np. przy pomocy funkcji print. [2p.]

  2. Algorytm ma zostać wykonany dla wartości tolerancji \(\epsilon = \{10^{-3}, 10^{-4}, ..., 10^{-20}\}\). [2p.]

  3. Na koniec skrypt ma wykonać wykres w skali półlogarytmicznej (funkcja semilogx), na którym punktami (kropkami, gwiazdkami, itp.) zaznaczone wartości \(k(\epsilon)\), a linią ciągłą - teoretyczna postać liczby kroków potrzebnych do osiągnięcia zadanej tolernacji błędu (slajd 8). [1p.]

ALGORYTM

  1. Wybieramy przedział \(\langle a; b \rangle\) tak, aby \(f(a)f(b) < 0 \)
  2. Dzielimy przedział na połowy: \(x_0 = a + \frac{b-a}{2}\)
  3. Mamy trzy przypadki:
    • \(|f(x_0)| < \epsilon\) - znaleziono pierwiastek
    • \(f(x_0)\) ma ten sam znak co \(f(a)\), zatem pierwiastek jest w przedziale \(\langle x_0; b \rangle\)
    • \(f(x_0)\) ma ten sam znak co \(f(b)\), zatem pierwiastek jest w przedziale \(\langle a;x_0 \rangle\)
  4. Wybieramy przedział zawierający pierwiastek jako nowy przedział \(\langle a; b \rangle\) i wracamy do kroku 2.