LABORATORIUM 2 Grupa P, wtorek 12.03.2024, godz 12:15
Napisz skrypt wyznaczający numerycznie wszystkie trzy pierwiastki równania $f(x)=(x-2)(x-3)(x-6)=0$ metodą bisekcji na przedziale \(x \in \langle 1; 7 \rangle \). W celu wyszukania obszaru, gdzie znajdują się rozwiązania, zadany przedział podziel na $N$ równych podprzedziałów. Narysuj wykres zestawiający punkty wyznaczone numerycznie z analityczną postacią funkcji. Zastanów się, czemu dla niektórych wartość $N$ nie są znajdywane żadne pierwiastki.
Wymagania odnośnie zadania (w nawiasach podana punktacja):
Skrypt ma znaleźć wszystkie pierwiastki równania numerycznie, metodą bisekcji z 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.]
Poprawne rozwiązania mają zostać wyświetlone w czytelnej i łatwej do odnalezienia formie, np. “rozwiazanie 1 = 2, rozwiazanie 2 = 3, rozwiazanie 3 = 6”. Zmienne z kroków pośrednich także powinny zostać wyświetlone w celu łatwiejszego namierzenia przyczyny ewentualnych błędów. [0.5p.]
Na koniec skrypt ma wykonać wykres (funkcja plot), na którym punktami (kropkami, gwiazdkami, itp.) zaznaczone zostaną rozwiązania wyznaczone przez metodę, a linią ciągłą – analityczna postać funkcji $f(x)$ otrzymana na podstawie wzoru z treści zadania.[1.5p.]
ALGORYTM
- Wybieramy przedział \(\langle a; b \rangle\) tak, aby \(f(a)f(b) < 0 \)
- Dzielimy przedział na połowy: \(x_0 = a + \frac{b-a}{2}\)
- 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\)
- Wybieramy przedział zawierający pierwiastek jako nowy przedział \(\langle a; b \rangle\) i wracamy do kroku 2.