Zadaniem naszej grupy było znalezienie miejsc zerowych równań nieliniowych za pomocą podanych metod numerycznych. Mieliśmy podane funkcje i badaliśmy ma ich podstawie różne metody obliczania miejsc zerowych podając im przedziały, na jakich te metody będą pracowały oraz warunek błędu, jaki musiał być spełniony, aby zakończyć obliczenia. Wybraliśmy trzy metody z czterech zaproponowanych:
- bisekcji( połowienia)
- falsi
- siecznych
Metoda bisekcji - polega na podaniu początkowego przedziału, jaki ma zostać zbadany, przedział ten musi spełniać warunki:
- funkcja musi być ciągła
- musi przyjmować różne znaki na końcach przedziałów
Funkcja sprawdza czy końce przedziału spełniają warunek pierwszy, jeśli tak to przedział zostaje przepołowiony i sprawdza się drugi warunek. Zadanie kończy się w momencie wyliczenia pierwiastka z dokładnością wcześniej zadana lub z ograniczeniem liczby iterakcji, jakie wprowadzimy.
x=(a+b)/2;
if fl(a)*fl(x)>0 a=x;
else
b=x;
end
Metoda falsi - polega ona dokładnie tak samo jak metoda bisekcji z ta różnicą ze nie dzielimy na pół a wyznaczamy sieczną, sieczna ta wyznaczona jest przez dwa punkty. Nowe granice tak samo jak i warunek stopu realizuje się tak samo jak w metodzie bisekcji.
x=a-fl(a)*(b-a)/(fl(b)-fl(a));
Metoda siecznych - sens tej metody polega na przyjęciu, że funkcja na dostatecznie małym odcinku <a,b> w przybliżeniu zmienia się w sposób liniowy. W metodzie tej każde następne przybliżenie pierwiastka wyliczane jest na podstawie dwóch poprzednich, które musimy podać na samym początku. Rysujemy tak jakby prosta przechodzącą przez te punkty i obliczamy pierwsze przybliżenie. Jeżeli wartość funkcji w tym przedziale jest równa zero lub mniejsza od zadanego stopu to otrzymujemy wtedy pierwiastek i kończymy algorytm. Jeżeli nie to powtarzamy rysowanie prostej tylko tym razem za końcowe punkty podstawiamy obliczone wcześniej przybliżenia.
if fl(a)*fl(b)<e
x=a-fl(b)*((b-a)/(fl(b)-fl(a)));