LABORATORIUM 2 Grupa NP, wtorek 05.03.2024, godz 08:30
Napisz skrypt wyznaczający numerycznie rzeczywiste rozwiązanie równania \(f(x)=3x^3-4x^2-1\) metodą stycznych (tzn. metodą Newtona) na dowolnym przedziale \(x \in \langle a; b \rangle \), dla $a$ i $b$ wczytanych z klawiatury . Narysuj wykres zestawiający punkty wyznaczone numerycznie z analityczną postacią funkcji.
Wymagania odnośnie zadania (w nawiasach podana punktacja):
Skrypt ma rozwiązać zadane równanie numerycznie, metodą Newtona. Algorytm metody został przedstawiony na Wykładzie nr 2 na slajdach od 13 do 16. Przed wykonaniem właściwych obliczeń skrypt powinien sprawdzać czy w zadanym przedziale może znajdować się pierwiastek (patrz: punkt 2 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ą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.]
Na koniec skrypt ma wykonać wykres (funkcja plot() z pakitu matplotlib), 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
- Analitycznie liczymy pochodną funkcji \(f(x) \), tzn \(g(x) = f'(x)\)
- Wybieramy przedział \(\langle a; b \rangle\) tak, aby \(f(a)f(b) < 0 \)
- Jako punkt startowy wybieramy \(x_0=a\) lub \(x_0=b\)
- Liczymy \(x_1 = x_0 - \frac{f(x_0)}{g(x_0)}\)
- Powtarzamy poprzedni punkt, podstawiając za \(x_0\) obliczoną wartość \(x_1\) i otrzymując w ten sposób \(x_2\) etc aż do chwili, gdy \(f(x_k)=0\) lub osiągnięta zostanie odpowiednia zbieżność.