urbic.com logotip

Naloga:

Napišite program, ki poišče ničle funkcije.

program bisekcija
implicit none
real :: a,b,c,f
write(*,*) 'vnesi levo krajisce intervala na katerem je nicla, a=?'
read(*,*)a
write(*,*) 'vnesi desno krajisce intervala na katerem je nicla, b=?'
read(*,*)b
if (f(a)*f(b)>0) then
   write(*,*) 'funkcija v a in b ni razlicno predznacena, ne bom nadaljeval'
else
 do while (abs(a-b).gt.1e-5)  !1e-5 je natancnost na katero bomo dolocili nicle
  c=(a+b)/2.
  write(*,'(3f10.6,3f10.2,f10.6)')a,b,c,f(a),f(b),f(c),abs(a-b)
  if (f(a)*f(c).lt.0) then
   b=c
  else
   a=c
  endif
 enddo
  write(*,'(3f10.6,3f10.2,f10.6)')a,b,c,f(a),f(b),f(c),abs(a-b)
  write(*,*)'nicla je=',c
endif
end program bisekcija

function f(x)
implicit none
real::x,f
! tu napisemo funkcijo, katere niclo hocemo poiskati
f=0.2*x**5 - 4.02*x**4 - 2.009*x**3 - 4.099*x**2 - 19.0023*x + 50
end function f

Tekst sedaj shranimo kot datoteko bisekcija.f90 in prevedemo.

Tu je sedaj še print screen postopka prevajanja. V kolikor vam kakšna podrobnost ni jasna, mi sporočite.

Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.