LABORATORIUM 2
Grupa NP, wtorek 05.03.2024, godz 12:15

Metody numeryczne - laboratorium 2

Napisz skrypt wyznaczający numerycznie rzeczywiste rozwiązanie równania \(f(x)=3x^3-4x^2-1\) metodą bisekcji na dowolnym przedziale \(x \in \langle a; b \rangle \), wczytane z klawiatury. Narysuj wykres zestawiający punkty wyznaczone numerycznie z analityczną postacią funkcji.

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

  1. Skrypt ma rozwiązać zadane równanie numerycznie, metodą bisekcji. Algorytm metody został przedstawiony na Wykładzie nr 2 na slajdach od 5 do 8. 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. Jeżeli podany przedział jest prawidłowy, należy wczytać z klawiatury dokładność z jaką ma zostać wyznaczone miejsce zerowe. [2p.]

  2. Poprawne rozwiązanie ma zostać wyświetlone w czytelnej i łatwej do odnalezienia formie, np. rozwiazanie = 1.485. Zmienne z kroków pośrednich także powinny zostać wyświetlone w celu łatwiejszego namierzenia przyczyny ewentualnych błędów. [0.5p.]

  3. Na koniec skrypt ma wykonać wykres, na którym punktami (kropkami, gwiazdkami, itp.) zaznaczone zostaną rozwiązania pośrednie wyznaczone przez metodę, a linią ciągłą - analityczna postać funkcji \(f(x)\) otrzymana na podstawie wzoru z treści zadania. [1p.]

  4. Należy wypisać liczbę kroków potrzebnych algorytmowi do wyznaczenia miejsca zerowego z określoną dokładnością. [0.5p.]

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.