program rootFinder !////////////////////////////////////////////////////////////////// !// programa para encontrar la raiz de cos(x) entre xini=1 y // !// y xfin=2 (pi/2) por el metodo del punto medio. // !// Inicialmente cos(xini) y cos(xfin) tienen distinto signo // !// Hallo el punto medio. si el signo de dicho punto es igual al // !// de xini, entonces xini pasa a ser el punto medio y queda // !// definido un nuevo intervalo (xini,xfin) reducido a la mitad, // !// donde el coseno tiene signo distinto en sus extrmos // !// Se reitera el procedimiento hasta que xfin-xini sea menor a // !// un error dado // !////////////////////////////////////////////////////////////////// real,parameter :: maxError = 0.1 real :: xini,xfin,midpoint real :: error xini = 1.0 xfin = 2.0 error = xfin-xini print*,"xini,xfin,error: ",xini,xfin,error do while (error > maxError) midPoint = xini+(xfin-xini)/2 if (sign(1.0,cos(xini)) == sign(1.0,cos(midPoint))) then xini = midPoint else xfin = midPoint end if error = xfin-xini print*,"xini,xfin,error: ",xini,xfin,error end do end program rootfinder