Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a) Diagrama de flujo.
INICIO
SYSTEM_CLOCK (COUNT1)
SEED1=COUNT1
RANDOM_SEED(PUT=SEED1)
SYSTEM_CLOCK (COUNT2)
SEED2=COUNT2
RANDOM_SEED(PUT=SEED2)
N
N 1=0 , N 2=0
I=1, N θ
RANDOM_NUMBER( R1)
R= √ ¿ ¿
NO SI
R≤ 0.5
N 2=N 2 +1 N 1=N 1 +1
C='FUERA' C='DENTRO'
I, R1 , R 2 , R , C
RANDOM_SEED(GET=SEED1)
RANDOM_SEED(GET=SEED2)
N 1, N 2
PI = 4
( N ¿¿ 1/ N ¿¿ 2)¿ ¿
PI
RPTA
NO SI
α RPTA==”NO”
FIN
b) Algoritmo
RANDOM_NUMBER (x1)
RANDOM_NUMBER (y1)
Paso 12: R= √ ¿ ¿
RANDOM_SEED(GET=SEED1)
RANDOM_SEED(GET=SEED2)
c) Codificación
PROGRAM S_SIMULACION_MONTECARLO_PI
IMPLICIT NONE
INTEGER::COUNT1,COUNT2
INTEGER, DIMENSION(1)::SEED1, SEED2
INTEGER::N, I, N1, N2
REAL:: x1, y1, R, PI
CHARACTER(6):: C,RPTA*2
PRINT*, 'HALLANDO EL VALOR DE PI CON MET. DE MONTECARLO'
CALL SYSTEM_CLOCK(COUNT1)
SEED1=COUNT1
CALL RANDOM_SEED(PUT=SEED1)
CALL SYSTEM_CLOCK(COUNT2)
SEED2=COUNT2
CALL RANDOM_SEED(PUT=SEED2)
DO
PRINT*; 'INGRESAR LOS NÚMEROS DE PUNTOS'
READ*,N
N1=0; N2=0
DO I=1,N
CALL RANDOM_NUMBER(x1)
CALL RANDOM_NUMBER(y1)
R=SQRT ((x1-0.5)**2+(y1-0.5)**2)
IF(R≤0.5)THEN
N1=N1+1
C='DENTRO'
ELSE
N2=N2+1
C='FUERA '
END IF
CALL RANDOM_SEED(GET=SEED1)
CALL RANDOM_SEED(GET=SEED2)
END DO
PRINT*, 'PUNTOS DENTRO'=,N1
PRINT*, 'PUNTOS FUERA'=,N2
PI=4*(REAL(N1)/REAL(N))
PRINT*,'VALOR DE PI=',PI
PRINT*,SI, PARA CONTINUAR: '
READ*,RPTA
IF(RPTA=='NO')EXIT
END DO
END PROGRAM SIMULACION_MONTECARLO_PI
d) Verificación de resultados