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