module mysubs contains subroutine init(eps) use kinds implicit none real(kind=REAL8), intent(out) :: eps write (*,*) "Auffinden eines Fixpunktes mittels sukzessiver Approximation " write (*,*) "am Beispiel cosinus(x) = x." write (*,*) write (*,*) "Bitte geben Sie die gewuenschte absolute Genauigkeit an." read (*,*) eps do if (eps > 0) exit write (*,*) "Nur positive Genauigkeiten machen Sinn. Versuchen Sie es & &noch einmal." read (*,*) eps end do return end subroutine init subroutine result(x) use kinds implicit none real(kind=REAL8), intent(in) :: x write (*,'(A, F10.7)') 'Der Fixpunkt liegt bei', x return end subroutine result end module mysubs program sukzApproximation ! Auffinden eines Fixpunktes mittels sukzessiver Approximation ! am Beispiel cos(x) = x use kinds use mysubs implicit none real(kind=REAL8) :: eps, fehler real(kind=REAL8) :: x0, x1 call init(eps) x0 = 1 do x1 = cos(x0) fehler = abs(x1-x0) x0 = x1 if (fehler < eps) exit end do call result(x0) stop end program sukzApproximation