program FindZeroNewton implicit none real:: f,f1 real::xc,xt,eps,xz integer :: maxp,i xt=-0.05 eps=.000000001 maxp=30 do i=1,maxp xc=xt-f(xt)/f1(xt) if(abs(xt-xc) < eps)exit write(6,'(i2,3f11.6)')i,xc,xt,f(xt) xt=xc enddo if (i<=maxp)then xz=xc write(6,*)i,xz else write(6,*)'nessuna soluzione in ',maxp,' passi' endif end program FindZeroNewton real function f(x) implicit none real, intent(in)::x f=x**2-1 end function f real function f1(x) implicit none real, intent(in)::x f1=2*x end function f1