Program, który napisałem wykorzystuje trzy sposoby:
- Metodę bisekcji
- Metodę Newtona
- Metodę siecznych
Pierwsza z nich jest bardzo intuicyjna, a wykorzystuje ona własność Darboux. Zakładamy, że funkcja jest ciągła. Jeśli w punkcie A wartość funkcji jest ujemna w punkcie B wartość jest dodatnia. To znaczy, że po drodze funkcja osiąga wartość 0, czyli znajduje się tam miejsce zerowe. W tej metodzie:
- Bierzemy przedział [A, B]
- Przecinamy go w połowie w punkcie C
- Mamy teraz dwa przedziały [A, C] i [C, B]
- Wybieramy ten którego krańce mają przeciwne znaki
- Powtarzamy aż f(C) = 0
Metoda Newtona albo inaczej metoda stycznych. W tej metodzie korzystamy z pochodnych a kolejne przybliżenia miejsca zerowego obliczamy za pomocą wzoru:
Jest ona szybsza niż metoda bisekcji, jednak jej wadą jest to że nie zawsze za jej pomocą da się obliczyć miejsce zerowe. A w przypadku zbyt dalekiego wybrania punktu początkowego może wręcz zacząć oddalać się od miejsca zerowego.
Metoda siecznych jest o tyle wygodna, że nie wymaga liczenie pochodnych (co czasem może być pracochłonne), a jedynie dwu punktów początkowych za pomocą których przeprowadzimy sieczną. Ta metoda działa podobnie jak metoda stycznych. Kolejne sieczne również przybliżają się do miejsca zerowego.
Program został napisany w języku C++. Tutaj działa pod Linuksem, jednak jest przenośny i może być uruchomiony na Windowsie czy Macu.