BISEKCIJSKA METODA
Pri bisekcijski metodi moramo najprej poiskati takšen interval (xl,xd),
da funkcija f(x) na tem intervalu natanko enkrat zamenja predznak.
Če velja f(xl)*f(xd)<0,je koren zaprt v interval xl < α < xd.
Pri bisekcijski metodi interval, ki vsebuje koren, na vsakem koraku iteracije razpolovimo.
Pri nadaljnem računanju obdržimo tisto polovico intervala, v kateri ima funkcija na krajiščih
nasprotni predznak. Z zmanjševanjem intervala se z mejama poljubno približamo korenu enačbe.
Algoritem bisekcijske metode
1.postavimo indeks i=1,izberemo začetni meji xl in xd intervala, da velja
f(xl)*f(xd)<0,
določimo dopustno relativno napako ε, določimo maksimalno število iteracij (ponovitev).
2.izračunamo razpolovišče
in funkcijski
vrednosti f(xl) in f(xi). Če je f(xi)=0, je xi
koren α in zaključimo ponavljanje.
3.če imata funkcijski vrednosti f(xl) in f(xi) nasproten predznak je
f(xl)*f(xi)<0 se koren (ničla) nahaja znotraj intervala (xl,xi) in
postavimo xd=xi.
V nasprotnem primeru se koren nahaja znotraj intervala (xi,xd)
zato postavimo xl=xi. Če je i=1 povečamo indeks (števec) in se vrnemo na drugi korak.
4.če je izvedemo predpisano maksimalno število iteracij se program ustavi, računanje prekinemo. Pomeni, da
xi ni primeren približek rešitve enačbe.
5.če je
, povečamo indeks i in se
vrnemo na drugi korak. Sicer pomeni, da je xi,dober približek rešitve enačbe α. Ponavljanje zaključimo.
Ker je
sledi, da je
ocena relativne napake korena
.
FUNCTION f(x)
F=X-EXP(-X)+0.3*SIN(X)
RETURN
END
PRINT*,'podaj levo in desno mejo ter stevilo ponovitev:'
READ*,xl,xd,maxit
IF(f(xl)*f(xd)<0) THEN
DO i=1,maxit
x=(xl+xd)/2
IF(f(xl)*f(x)<0) xd=x
IF(f(xl)*f(x)>0) xl=x
IF(f(xl)*f(x)==0) GOTO 10
PRINT*,'x novi=',x,'korak=',i
IF(ABS((xd-xl)/(xd+xl)).LT.0.0005) STOP
ENDDO
ELSE
STOP'pogoj za bisekcijo ni izpolnjen'
ENDIF
STOP
10 PRINT*,'nicla funkcije=',x
END
