WRITE (6,20)
20 FORMAT(17X, 'VALUE',3X,'ERROR %')
BE = 0.0
C
C
DO 100 N = 2, 100
VAL = TRAPZ(A,B,N)
ERR = ABS(BE-VAL) / VAL
WRITE(6,30) N, VAL, ERR
30 FORMAT(1X,I5,5X,E11.5,5X, 2PF5.2)
IF (ERR .GT. ERRVAL)THEN
BEFORE = VAL
ENDIF
100 ENDDO
STOP
END
C
C
FUNCTION TRAPZ(A,B,N)
F(X) = X * X
C
IF (A .GT. B) THEN
TEMP = A
A = B
B = TEMP
ENDIF
C
H = (B-A) / N
SUM = 0.0
X = A
YA = F(A)
YB = F(B)
DO 200 I = 1, N-1
X = X + H
SUM = SUM + F(X)
200 ENDDO
C
TRAPZ = 0.5 * H * (YA + 2.0*SUM +YB)
RETURN
END
예 제가 잘못했네요 BE = BEFORE 입니다. IF (ERR .GT. ERRVAL)THEN 이부분을 ---->IF (ERR .LT. ERRVAL) THEN STOP ELSE BEFORE = VAL 로 했습니다. 오차가 오차율보다 작이지면 DO 문도 빠져나오기 위해서 아님 N = 100까지 반복이 되어서 이것은 맞는 것입니까? 제가 완성한 프로그램은 다시 위에 올리겠습니다.
첫댓글 에러 메세지 올려주세요
err 를 구하는 부분이 이상하네요. ERR = ABS(BE-VAL) / VAL 이렇게 해 버리면 be 가 변하지 않기 때문에 err가 항상 1. 이 됩니다. before를 사용하려 하신건 아닌지요?
예 제가 잘못했네요 BE = BEFORE 입니다. IF (ERR .GT. ERRVAL)THEN 이부분을 ---->IF (ERR .LT. ERRVAL) THEN STOP ELSE BEFORE = VAL 로 했습니다. 오차가 오차율보다 작이지면 DO 문도 빠져나오기 위해서 아님 N = 100까지 반복이 되어서 이것은 맞는 것입니까? 제가 완성한 프로그램은 다시 위에 올리겠습니다.