I_R_W14_M28_C++ Miejsca zerowe funkcji
Implementacja algorytmu w języku C++
Napiszmy program realizujący algorytm wyznaczania miejsca zerowego funkcji w przedziale <1,3> z dokładnością do trzech miejsc po przecinku.
Na początek dołączamy niezbędne biblioteki. W trakcie pisania programu będziemy korzystali z funkcji fabs umożliwiającej obliczenie wartości bezwzględnejwartości bezwzględnej wyrażenia. Dołączamy bibliotekę cmathcmath, dzięki której będziemy mogli użyć tej funkcji.
Tworzymy definicję funkcji o nazwie funkcja. Jej rolą jest obliczenie i zwrócenie wartości analizowanej funkcji w punkcie x zgodnie z wcześniej podanym wzorem.
W programie zdefiniujemy kolejną funkcję będącą pochodną funkcji, której miejsce zerowe chcemy wyznaczyć. Pochodna funkcji ma następujący wzór:
W programie nadajemy jej nazwę pochodna.
Możemy przejść do zdefiniowania funkcji realizującej kolejne przybliżenia. Jej przyjmowanymi parametrami są: punkt startowy xIndeks dolny 11 wartość błędu bezwzględnego ex oraz dokładność ey, czyli maksymalna różnica pomiędzy kolejnymi przybliżeniami, przy której możemy zakończyć algorytm.
Tworzymy zmienną x2 typu double. To w niej będą przechowywane kolejne przybliżenia. Na początek przypisujemy jej wartość x1.
W pętli do..while przypisujemy zmiennej x1 wartość x2. W tym momencie wartość zapisana w zmiennej xIndeks dolny 22 staje się nowym punktem startowym. Następnie zgodnie z przedstawionym wcześniej wzorem obliczamy miejsce zerowe i zapisujemy do zmiennej x2. Jeżeli różnica pomiędzy kolejnymi przybliżeniami (wartość bezwzględna, którą obliczamy funkcją fabs()) jest większa od dokładności przyjmowanej jako parametr, przechodzimy na początek pętli i ponawiamy obliczenia. W przeciwnym wypadku wychodzimy z pętli i na koniec zwracamy wartość zmiennej x2, czyli przybliżoną wartość miejsca zerowego funkcji. Wykonywanie pętli kończymy również w przypadku, gdy wartość funkcji dla podanego argumentu jest mniejsza lub równa dokładności, oznacza to również, że znaleźliśmy miejsce zerowe z zadowalającą dokładnością.
Na koniec w głównej funkcji programu main() wywołujemy funkcję metodaStycznych z punktem startowym 3 i przybliżeniem oraz błędem bezwzględnym równymi 0,001. Wynik tego wywołania, pomnożony przez 1000, zapisujemy w zmiennej typu całkowitego przyblizenie. Dzięki temu wynik zostanie zaokrąglony do części całkowitej i w momencie, gdy do zmiennej wynik zapiszemy przybliżenie podzielone przez 1000, otrzymamy zaokrąglenie do części tysięcznej.
Wynikiem przedstawionego programu i jednocześnie miejscem zerowym funkcji w przedziale <1,3> jest .
Pamiętaj, że zbieżnośćzbieżność nie zawsze musi zachodzić. Jeżeli źle dobierzemy punkt startowy, algorytm stycznej nie zwróci wyniku. W takim wypadku program może np. nigdy się nie kończyć, ponieważ w każdej iteracji będzie się oddalał od znalezienia miejsca zerowego.
Słownik
biblioteka zawierająca deklaracje funkcji matematycznych, takich jak potęgowanie, pierwiastkowanie czy obliczanie wartości bezwzględnej
argument funkcji, dla której przyjmuje ona wartość 0
odległość danej liczby od zera na osi liczbowej
własność mówiąca o tym, że dany problem posiada rozwiązanie, do którego przybliżamy się wraz ze wzrostem liczby wykonanych iteracji