사다리꼴 적분 근사(외부 프로그램을 서브루틴의 인수로 사용)
외부 프로그램을 서브루틴의 인수로 사용
사다리꼴 적분 근사
PROGRAM Integral
IMPLICIT NONE
REAL :: A, B
REAL, EXTERNAL :: Integrand
INTEGER :: Number_of_Subintervals
WRITE (*, '(1X, A)', ADVANCE = "NO") &
"적분 구간의 처음과 끝, 그리고 구간 수를 입력하시오(ex 0, 1, 100 : "
READ * , A, B, Number_of_Subintervals
CALL Integrate(Integrand, A, B, Number_of_Subintervals)
CONTAINS
SUBROUTINE Integrate(F, A, B, N)
REAL, INTENT(IN) :: A, B
INTEGER, INTENT(IN) :: N
REAL :: F, DeltaX, X, Y, Sum
INTEGER :: I
DeltaX = (B - A) / REAL(N)
X = A
Sum = 0.0
DO I = 1, N - 1
X = X + DeltaX
Y = F(X)
Sum = Sum + Y
END DO
Sum = DeltaX * ((F(A) + F(B)) / 2.0 + Sum)
Print '(1X, I4, "개의 구간을 이용한 면적 = ", F10.5)', Number_of_Subintervals, Sum
END SUBROUTINE Integrate
END PROGRAM Integral
FUNCTION Integrand(X)
REAL :: Integrand
REAL, INTENT(IN) :: X
Integrand = EXP(X**2)
END FUNCTION Integrand
위 소스를 07_06_Integral.f95로 저장
컴파일 및 프로그램 테스트