LABORATORIUM 2
Grupa NP, czwartek 07.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ą regula falsi na dowolnym przedziale \(x \in \langle a; b \rangle \), przym wartości $a$ i $b$ powinny być 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ą regula falsi. Algorytm metody został przedstawiony na Wykładzie nr 2 na slajdach od 9 do 12. 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. 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 (funkcja plot), 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. [1.5p.]

ALGORYTM

  1. Wybieramy przedział \(\langle a; b \rangle\) tak, aby \(f(a)f(b) < 0 \)
  2. Wyznaczamy przybliżenie pierwiastka: \(x_0 = \frac{af(b)-bf(a)}{f(b)-f(a)}\)
  3. Mamy trzy przypadki:
    • \(f(x_0) = 0\) - 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.