Vorige Seite Kein Verweis Übersicht Kein Verweis content index Hilfeseiten  

Fixpunktbestimmung mit sukzessiver Approximation

Auffinden eines Fixpunktes mittels sukzessiver Approximation.
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