Documente Academic
Documente Profesional
Documente Cultură
/*FI-UNAM
/*PROGRAMACION AVANZADA
PROGRAM NEWTON
IMPLICIT NONE
INTEGER::I,J,N,OP /*DECLARACION DE ARIABLES ENTERAS
REAL(KIND=2)::TOL,VSUP,SUMX,SUMY,SUMDF,SUMF,SUMZ,A,C,TOL,VAP,LIQ /*DECLARACION DE
VARIABLES DE TIPO REAL
CHARACTER(LEN=30),ALLOCATABLE,DIMENSION(:)::COMP /*DECLARACION DE VECTOR QUE GUARDA
CARACTERES
REAL(KIND=2),ALLOCATABLE,DIMENSION(:,:)::TABL /*DECLARACION DE LA MATRIZ QUE
ALMACENARA LAS OPERACIONES
/*MENSAJE EN PANTALLA
WRITE(*,*)"*******************************************************"
WRITE(*,*)"* PROGRAMA ELABORADO POR SIERRA MURILLO BRYAN DAVID *"
WRITE(*,*)"*******************************************************"
WRITE(*,*)
WRITE(*,*)"ESTE PROGRAMA CALCULA EL EQUILIBRIO LIQUIDO-VAPOR DE LA SIGUIENTE
MEZCLA"
WRITE(*,*)"APLICANDO EL METODO DE NEWTHON-RHAPSON"
WRITE(*,*)
WRITE(*,*)"**** NOTA:SI EL NOMBRE DE TUS COMPONENTES REQUIERE DE 2 O MAS PALABRAS"
WRITE(*,*)"PONER DICHO NOMBRE ENTRE COMILLAS SIMPLE ' ' PARA NO PROVOCAR ERROR EN
EL"
WRITE(*,*)"PROGRAMA ****"
WRITE(*,*)
WRITE(*,*)"CUANTOS COMPONENTES SON: "
READ(*,*)N
WRITE(*,*)"------------------------------------------------"
ALLOCATE(COMP(N)) /*ALMACENA N Y LE DA EL TAMA�O AL VECTOR Y A LA MATRIZ
ALLOCATE(TABL(N,7))
/*SEGUNDO DO WHILE
DO WHILE(C>TOL)
/*OPERACIONES A REALIZAR
TABL(I,3)=(TABL(I,1)*(TABL(I,2)-1))/(1+((TABL(I,2)-1)*TABL(1,5))) /* f(V)
TABL(I,4)=(TABL(I,1)*((TABL(I,2)-1)**2))/(1+((TABL(I,2)-1)*TABL(1,5)))**2 /*F(V)
SUMDF=SUMDF+TABL(I,4)
SUMF=SUMF+TABL(I,3)
END DO /*FIN DEL PRIMER CICLO
/*VALORES QUE QUEDAN FUERA DEL PRIMER CICLO PARA NO GENERAR VALORES ERRONEOS TRAS
SU OPERACION
A=TABL(1,5)
TABL(1,5)=TABL(1,5)-(SUMF/(-SUMDF))
C=ABS(TABL(1,5)-A)
/*OPERACIONES A REALIZAR
TABL(I,6)=TABL(I,1)/(1+(TABL(I,2)-1)*TABL(1,5)) /*Xi
TABL(I,7)=(TABL(I,2)*TABL(I,1))/(1+((TABL(I,2)-1)*TABL(1,5))) /*Yi
CASE(1) /*CASO 1
SUMF=0 /*SE ASIGNA EL VALOR A SUM=0 POR SI EL USUARIO DESEA REIMPRIMIR EL
VALOR
WRITE(*,*)"VALORES DE f(v)"
DO I=1,N /*CICLO DO
WRITE(*,*)"------------------------------------------------"
/*IMPRIME EL NOMBRE DE LOS COMPONENTES GUARDADOS EL VECTOR DE CARACTERES
WRITE(*,*)COMP(I)
/*SUMA E IMPRIME LOS ULTIMOS VALORES OBTENIDOS TRAS EL FIN DE LAS ITERACIONES
SUMF=SUMF+TABL(I,3)
WRITE(*,*)TABL(I,3)
END DO
WRITE(*,*)"------------------------------------------------"
WRITE(*,*)"LA SUMA DE f(v): ",SUMF
CASE(2) /*CASO 2
/*ASIGNAMOS VALOR EN CASO DE QUE EL USUARIO DESEE REIMPRIMIR DICHO VALOR
SUMDF=0
WRITE(*,*)"VALORES DE f'(v)"
DO I=1,N /*CICLO DO
WRITE(*,*)"------------------------------------------------"
/*IMPRIME EL NOMBRE DE LOS COMPONENTES
WRITE(*,*)COMP(I)
/*SUMA E IMPRIME LOS ULTIMOS VALORES OBTENIDOS TRAS EL FIN DE LAS ITERACIONES
SUMDF=SUMDF+TABL(I,4)
WRITE(*,*)TABL(I,4)
CASE(3) /*CASO 3
/*ASIGNA EL VALOR EN CASO DE QUE EL USUARIO QUIERA REIMPRIMIR EL VALOR
SUMX=0
WRITE(*,*)"VALORES DE Xi"
END DO
WRITE(*,*)"------------------------------------------------"
WRITE(*,*)"LA SUMA DE X: ",SUMX /*IMPRIME SUMX
CASE(4) /*CASO 4
/*ASIGNA EL VALOR EN CASO DE QUE EL USUARIO QUIERA REIMPRIMIR EL VALOR
SUMY=0
WRITE(*,*)"VALORES DE Yi"
DO I=1,N
WRITE(*,*)"------------------------------------------------"
/*IMPRIME EL NOMBRE DE LOS COMPONENTES
WRITE(*,*)COMP(I)
/*SUMA E IMPRIME LOS ULTIMOS VALORES OBTENIDOS TRAS EL FIN DE LAS ITERACIONES
SUMY=SUMY+TABL(I,7)
WRITE(*,*)TABL(I,7)
END DO
WRITE(*,*)"------------------------------------------------"
WRITE(*,*)"LA SUMA DE Y: ",SUMY /*IMPRIME SUMY
CASE(5) /*CASO 5
/*IMPRIME LOS VALORES FINALES DE FRACCION DE VAPOR Y LIQUIDO
WRITE(*,*)"EL VALOR DEL % DE VAPOR ES: ",VAP
WRITE(*,*)"------------------------------------------------"
WRITE (*,*)"EL VALOR DEL % DE LIQUIDO ES: ",LIQ
CASE(6) /*CASO 6
WRITE(*,*)"------------------------------------------------"
WRITE(*,*)"LA SUMA DE Z ES: ",SUMZ
WRITE(*,*)"------------------------------------------------"
WRITE(*,*)
WRITE(*,*)"DESEAS IMPRIMIR OTRO VALOR (DIGITA EL NUMERO)"
WRITE(*,*)"1) SI"
WRITE(*,*)"2) NO"
WRITE(*,*)"RESPUESTA: "
READ(*,*)OP
CALL SYSTEM('CLS')