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ą xIndeks dolny 22 typu double. To w niej będą przechowywane kolejne przybliżenia. Na początek przypisujemy jej wartość xIndeks dolny 11.
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