ERRORS AND NORMS EXAMPLES
It is recommended to look at the numerical methods codes where the use of loops is demonstrated. Some additional examples are included here.
EXAMPLE: USE OF A TOLERANCE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Uses bisection method to find square root ! ! x*x - c = 0 ! over the interval [a,b] ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROGRAM sqrt IMPLICIT NONE INTEGER :: nmax, n REAL :: tol, d REAL :: a, b, c REAL :: fa, fc WRITE(*,*) ’ Input Constant d (x^2-d=0) ’ READ(*,*) d WRITE(*,*) ’ Input Lower and Upper Limits’ READ(*,*) a, b tol = 0.000001 nmax = 100 fa = f(a,d) c = (a + b ) /2. fc = f(c,d) n = 1 DO WHILE (n <= nmax) IF((b-a)/2.0 < tol) THEN WRITE(*,*) ’Root’,c,’gives’,fc,’after’,n,’iterations’ EXIT ENDIF IF(fa*fc > 0.0) THEN a = c ELSE b = c ENDIF c = (a + b ) /2. fc = f(c,d) n = n + 1 ENDDO CONTAINS REAL FUNCTION F(x,n) REAL :: x REAL :: n f = x*x - n END FUNCTION F END PROGRAM
EXAMPLE: NORMS
IMPLICIT NONE REAL, PARAMETER :: pi=4.0*ATAN(1.0) INTEGER :: i, nl, ierr REAL :: fs CHARACTER(LEN=50) :: myfile INTEGER, DIMENSION(:), ALLOCATABLE :: f REAL, DIMENSION(:), ALLOCATABLE :: time, myreal, myimag !COMPLEX, DIMENSION(:,:), ALLOCATABLE :: comp REAL, DIMENSION(:,:), ALLOCATABLE :: comp ... !Store norms norm(1:nl) = (/(SQRT(myreal(i)**2 + myimag(i)**2), i=1,nl)/)