clear all; close all; clc; %% Metoda bisekcije za traženje nultočke nelinearne funkcije % ova skripta zadaje funkciju i za nju traži realnu nultočku u danom % intervalu [a, b] %% Numerička matematika (Marko Hajba) f = inline('2*x^5+x-2', 'x') % f(x)= 2x^5+x-2 %granice intervala a i b u kojem trazimo nultocku a = -1; b = 1; tol = 10^-6; % tolerancija (dopustena velicina greske) k_max = 100; % maksimalni broj dopuštenih iteracija k_iter = 0; % varijabla koja broji koliko smo iteracija napravili if f(a)*f(b) > 0 % uvjet metode error('Funkcija ima isti predznak na rubovima danog intervala!') end while abs(b-a) > tol %uvjet zaustavljanja x = (a+b)/2; % poloviste intervala [a, b] y = f(x); % vrijednost f-je f u x if y == 0 % našli smo rješenje rj = x; break end if f(a)*y < 0 % slucaj kada je nultocka u intervalu [a, x] b = x; else % inače je nultocka u intervalu [x, b] a = x; end k_iter= k_iter + 1; % broj obavljenih iteracija povećamo za 1 if k_iter >=k_max %provjera broja iteracija print('Metoda nije konvergirala u zadanom broju iteracija') break; end end %ispisi broj potrebnih iteracija za rjesenje i rjesenje k_iter rj = (b+a)/2 % crtamo funkciju f i nultočku koju smo dobili metodom bisekcije fplot(f, [-1, 1]) hold on plot(rj, y, 'r*')