Anda di halaman 1dari 14

INSTITUTO POLITCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERA QUMICA E

Instituto politcnico e.s.i.q.i.e. INDUSTRIAS EXTRACTIVAS

E.S.I.Q.I.E

academia de matematicas aplicadas *curso de computacin* Programacin con fortran aplicado a la solucin de problemas de calculo numrico en ingeniera qumica Proesor: Ing. Pedro moreno carrillo Alumna: Morales lozada Sharon Mariel 3iv1 Agosto-diciembre/2010/ nO. Boleta: 2009320432

CURSO DE COMPUTACION Pgina 1

Programa 1.
program bienvenida implicit none write (*,*)"Hola Sharon: Me alegra que estes en el curso" write (*,*)"Te vas divertir mucho" write (*,*)"Te deseo mucho exito en tus estudios" write (*,*)"Sobre todo en computacion" write (*,*)"Chao, arrivederchi" stop end program Bienvenida program respuesta implicit none write (*,*)"Hola muchas gracias por la bienvenida" write (*,*)"estoy segura que sera un gran curso" write (*,*)"deseo pasar con buena calificacion esta materia" write (*,*)"y le echare muchas ganas." write (*,*)"bye" stop end program respuesta Problema. Calcule la viscosidad del benceno en estado lquido a 20C Memoria de clculo Programa 2. program calcula_Vis_Teo_Cinetica IMPLICIT NONE REAL NA, h, Tb, T, VM, TC, Visexp, Vis, ERROR CHARACTER*15 nomsust nomsust="benceno" TC=20 NA=6.023E23 h=6.624E-27 VM=89 Tb=353.2 Visexp=0.00647 !proceso T=273+TC Vis=(NA*h*EXP((3.8*Tb)/T))/VM ERROR=ABS(visexp-vis)/visexp*100 WRITE(*,*)"Viscosidad del ", nomsust write(*,*)"viscosidad=", Vis, "cp" write(*,*)"viscosidad experimental=", visexp WRITE(*,*)"error cometido=",error stop end program Calcula_Vis_Teo_Cinetica Problema. En un recipiente de 2 m3 se inytecta 5kg. de CO2 a 1000 C utilizando la ecuacin de gas ideal se quiere saber la presin.

CURSO DE COMPUTACION Pgina 2

Programa 3. Program gas_ideal Implicit none REAL P, V, R, T, n Character*20 nomsust nomsust=dixido de carbono R=0.08314 T=100 V=2 n=0.1136 !proceso T=273.15+100 P=(n*R*T)/V Stop end program gas_ideal Problema. Se tiene un gas dentro de un recipiente que tiene un pistn mvil. Se lleva a cabo una expansin con una fuerza externa igual a la presin de 1 atm. Si aumentamos lentamente el volumen desde 1 L. Cul ser el trabajo efectuado?

Programa 4. program calcula trabajo exp implicit none REAL t, Pext, V1, V2 !secccion de entrada de datos PRINT *, "dame la presion externa de mmmHg" read (*,*)Pext PRINT *, "dame el volumen inicial en Lt" read (*,*)V1 PRINT *, "dame el volumne final en Lt" read (*,*)V2 !seccion de proceso Pext=Pext/760.0 T=Pext*(V2-V1)*1.03323*10*9.81 !salida de resultados write (*,*)"trabajo de expasion de un gas" write (*,*)"trabajo= ", T,"joules" stop end program calcula trabajo exp Problema. Qu potencia se necesita para elevar 1000L de agua a una altura de 20m en un tiempo de 2s? D el resultado en kW y hp.

CURSO DE COMPUTACION Pgina 3

Programa 5. program calcula potencia implicit none REAL m, g, h, v, t, Ep, P1, P2, den g=9.81 !seccion de entrada de datos PRINT *, "dame el volumen en mE3" read (*,*) v PRINT *, "dame la altura en m" read (*,*)h PRINT *, "dame el tiempo en segundos" read (*,*)t PRINT *, "dame la densidad en kg/mE3" read (*,*)den !seccion de proceso m=v*den/1000 Ep=m*g*h P1=Ep/t/1000 P2=P1/0.7457 !salida de resultados write (*,*) "potencia de una bomba" write (*,*) "potencia = ", P1, "kW" write (*,*) "potencia =", P2, "hp" stop end program calcula potencia

Problema. Calcular la velocidad de un lquido que sale por un tanque a una cierta altura sobre el piso. Programa 6. PROGRAM calculo_velocidad implicit none REAL v, h, g, ht, htot, h !seccion de entrada de datos PRINT *, "dame la altura del tanque sobre el piso, en m" read (*,*) h PRINT *, "dame la altura del nivel del tanque, en m" read (*,*) ht PRINT *, "dame la aceleracion de la gravedad g en m/segE2" read (*,*) g !seccion de procesos htot=h+ht Vsqrt(2*g*htot) !salida de resultados write(*,*)velocidad = , V, m/sE2 stop end program

CURSO DE COMPUTACION Pgina 4

Problema. Calcular el nmero de Reynolds de un lquido a la salida de un tanque, a una cierta altura sobre el piso.

Programa 7. PROGRAM calculo reynolds implicit none REAL D, v, den, vis, Re, h, g, ht, htot !este progrma calcula la velocidad y el patron de flujo en la descarga de agua de un tanque elevado a una altura h !seccion de entrada de datos PRINT *, "dame la altura del tanque sobre el piso, en m" read (*,*) h PRINT *, "dame la altura del nivel del tanque, en m" read (*,*) ht PRINT *, "dame la viscosidad del agua en cp" read (*,*) vis PRINT *, "dame el diametro D de la tuberia, en in" read (*,*) D PRINT *, "dame la aceleracion de la gravedad g en m/segE2" read (*,*) g PRINT *, "dame la densidad del agua en gr/cmE3" read (*,*) den !seccion en procesos htot=h+ht V=SQRT(2*g*htot) Re=D*v*den*100*2.54*100/vis !salida de resultados write (*,*) "velocidad = ", v, "m/segE2" write (*,*) "Re = ", Re stop END program calculo reynolds

Problema. Convetir 1000W/m2C a BTU/hft2F

Programa 8. PROGRAM conversin implicit none real P !seccion de entrada de datos print*, dame P en kW/CmE2 read(*,*)P !seccion de procesos P=(42.41*60)/(0.7457*3.2808*1.8) !seccion de resultados

CURSO DE COMPUTACION Pgina 5

write(*,*)Potencia = , P, Btu/hftE2*F stop end program conversin

Problema. Un lquido de densidad relativa 1.9 viaja por una tubera de 3in de dimetro interior a una velocidad de 5m/s. Si se cerrara de pronto la tubera Qu presin ejercer en la lnea? Programa 9.

Problema. Elabore un programa que calcule el calor que se transfiere en un sistema cuya temperatura cambia de T1 a T2 si su cp es funcin de la temperatura definida en este rango de temperaturas. Programa 10. program calculo de calor transferido implicit none REAL w, T1, T2, a, b, c, Q !seccion de entrada de datos PRINT *, "dame la temperatura 1 en C" read (*,*)T1 PRINT *, "dame la temperatura 2 en C" read (*,*)T2 PRINT *, "dame el peso de la sustancia en libras" read (*,*)w PRINT *, "dame a" read (*,*)a PRINT *, "dame b" read (*,*)b PRINT *, "dame c" read (*,*)c !seccion de procesos T1=T1+273 T2=T2+273 if (T1>=0) then if (T2<=400) then Q=w*((a*(T2-T1))+((b/2)*(T2**2-T1**2))-((c)*(1/T1-1/T2))) write (*,*) "calor tranferido = ", Q, "BTU/lb*K" else write (*,*)"T2 fuera de rango" stop END if else write (*,*)"T1 fuera de rango" stop END if stop end program calculo de calor transferido

CURSO DE COMPUTACION Pgina 6

Problema. Realice un programa para el clculo de una ecuacin cuadrtica. Programa 11. PROGRAM ECUACUADRA IMPLICIT NONE INTEGER::A,B,C,X,X1,X2 PRINT*,"DAME TRES MAGNITUDES" PRINT*,"PRIMERA " READ*,A PRINT*,"SEGUNDA " READ*,B PRINT*,"TERCERA " READ*,C IF(A==0)THEN X=(-C)/B PRINT*,"ES UNA FUNCION LINEAL EL VALOR DE X ES",X ELSE IF((B**2-4*A*C)==0)THEN X=(-B)/(2*A) PRINT*,"SOLO EXISTE UNA SOLA RAIZ EL VALOR DE X ES",X ELSE IF((B**2-4*A*C)>0)THEN X1=(-B+SQRT(B**2-4*A*C))/(2*A) X2=(-B-SQRT(B**2-4*A*C))/(2*A) PRINT*,"EXISTEN DOS RAICES LOS VALORES SON",X1,X2 ELSE PRINT*,"EXISTEN DOS RAICES IMAGINARIAS PERO NO SE CALCULAN" ENDIF ENDIF ENDIF END PROGRAM Problema. Elabore un programa que dada la clave elegible de un men se calcule el rea deseada. Programa 12. program calcula_areas implicit none REAL h,Ar,b,a INTEGER cl !entrada de la clave WRITE(*,*)"escoja la clave que necesita" WRITE(*,*)"Cl=1 triangulo" WRITE(*,*)"Cl=2 rectangulo" WRITE(*,*)"cl=3 paralelogramo" WRITE(*,*)"Cl=4 rombo" WRITE(*,*)"Cl=5 trapezoide" WRITE(*,*)"cl=6 cuadrilatero"

CURSO DE COMPUTACION Pgina 7

WRITE(*,*)"cl=7 poligono regular" READ(*,*)cl SELECT CASE(CL) CASE (1) WRITE(*,*)"dame la base" read (*,*)b WRITE(*,*)"dame la altura" read (*,*)h Ar=h*b/2.0 write (*,*)"area=",Ar CASE(2) wRite (*,*)"dame el lado a:" read (*,*)a write (*,*)"dame el otro lado b" read (*,*)b Ar=a*b write (*,*)"area del rectangulo=",Ar case default write (*,*)"tarea terminada" end select end program calcula_areas Problema. Elabore un programa que determine las races reales e imaginarias de una ecuacin cuadrtica. Programa 13. PROGRAM raices IMPLICIT NONE Real A, B, C, R, X1, X2, disc, I !entrada de datos Write(*,*)calcula races de una ecuacin cuadrtica PRINT*,"DAME TRES MAGNITUDES" PRINT*,"dame el valor de a" READ*,A PRINT*,"dame el valor de b" READ*,B PRINT*,"dame el valor de c" READ*,C !seccion de proceso Disc=b**2-4*a*c If (disc <0)then Write(*,*)races imaginarias R=(-b)/(2*a) I=sqrt(-disc)/(2*a) Write(*,*)R, +, I, i Write(*,*)R, -, I, i Else if (disc=0)then Write(*,*)una raz real R=-b/(2*a) Print*, R Else (else>0) then dos races reales X1=(-b+sqrt(disc))/(2*a) X2=(-b-sqrt(disc))/(2*a)

CURSO DE COMPUTACION Pgina 8

Print*,x1 Print*,x2 ENDIF ENDIF ENDIF END PROGRAM Problema. Elabore un programa con ciclo do. Programa 14. program saludo implicit NONE INTEGER L, i !seccion de datos write (*,*) "dame el limite L:" read (*,*)L do i=1,L,1 write (*,*)"hola" end do write (*,*)"adios" stop end program Problema. Elabore un programa que determine el factorial de un nmero cualquier.

Programa 15. program Factorial implicit NONE INTEGER num, k, fac !seccion de datos write (*,*)"dame el numero cuyo factorial deseas conocer:" read (*,*)num fac=1 do k=1, num, 1 fac=fac*k end do write (*,*)"factorial de ", num, "=", fac end program Problema. Elabore un programa que calcule el perfil de velocidades. [ Programa 16. program Perfil_velocidades ] [ ]

CURSO DE COMPUTACION Pgina 9

implicit none REAL den, g, del, vis, beta, x, n, Vz, delx, i !seccion de datos write (*,*)"dame la densidad en gr/cm**3" read (*,*)den write (*,*)"dame la gravedad en cm/seg**2" read (*,*)g write (*,*)"dame el espesor en cm" read (*,*)del write (*,*)"dame la viscosidad en cp" read (*,*)vis write (*,*)"dame el valor del angulo en " read (*,*)beta !seccion de procesos n=11 delx=del/n x=0 do i=1, n+1, 1 Vz=(((den*g*(del**2)*COS((beta*2*3.1416)/360))/(2*vis))*100) Vz=Vz*(1-((x/del)**2)) Vz=Vz/1000000 X=X+delx write (*,*)"x=", x, "vel=", Vz, "m/s" end do stop end program Perfil_velocidades Problema. Elabore un programa para el uso de matrices. Programa 17. program vectores_y_matrices implicit none REAL A,X,b INTEGER m,n,i,j CHARACTER *15 nombre DIMENSION A(10,10),XV(10),b(10) !seccion de lectura y escritura de datos WRITE(*,*)"dame el numero de lines y de columnas de A" READ(*,*) m,n write (*,*)"teclea los elementos de la matriz A linea por linea:" do i=1,m,1 write (*,*)"Dame los elementos de la linea",i read (*,*)(A(i,j),j=1,n,1) end do write (*,*)"teclea lo elementos de b lines por linea" DO i=1,m,1 write (*,*)"dame b(",i,")" read (*,*)b(i) END DO !salida de datos write (*,*)"matriz de coeficientes A" DO i=1,m,1

CURSO DE COMPUTACION Pgina 10

WRITE (*,*)(A(i,j),j=1,n,1) END DO write (*,*)"vector de terminos independientes,b:" DO i=1,m,1 write (*,*)b(i) END DO stop end program vectores_y_matrices

Problema. Realice un programa para la solucin de un sistema de matrices con el mtodo de Gauss-Seidel.

Programa 18. program Gauss_Seidel implicit none REAL A, b, x, xo, eps, k INTEGER n, m, i, j, nit DIMENSION A(10,10), b(10), x(10), xo(10) !datos write (*,*)"dame m y n:" read (*,*)m,n if (m==n) then write (*,*)"dame la matriz A fila por fila:" do i=1, m, 1 read (*,*)(A(i,j),j=1,n,1) end do write (*,*)"dame el vector b fila por fila" do i=1, m, 1 read (*,*) b(i) end do write (*,*) "dame nit:" read (*,*)nit write (*,*)"dame eps:" read (*,*)eps write (*,*)"lectura de xo:" do i=1, m, 1 read (*,*)xo(i) END do do i=1, m, 1 x(i)=xo(i) end do do k=0, nit, 1 x(1)=(6+(2*x(2))-(3*x(3)))/10 x(2)=(4+(3*x(1))+(4*x(3)))/20 x(3)=(8-(2*x(1))+(6*x(2)))/12 write (*,*)x(1), x(2), x(3) end do else write (*,*)"matriz reactangular"

CURSO DE COMPUTACION Pgina 11

end if stop Problema. Elabore un programa para el clculo de la probabilidad binomial, de Poisson e Hipergeomtrica. Programa 19. program probabilidad implicit NONE INTEGER CL, n, x, NL, nm REAL p, PR !entrada de datos PRINT*,"calcula probabilidad discreta" PRINT*,"da la clave:" PRINT*,"Si CL=1 es binomial" PRINT*,"Si CL=2 es poisson" PRINT*,"Si CL=3 es hipergeometrica" read (*,*)CL select case (CL) case (1) PRINT*,"calcula binomial" call binomial (n, p, x, PR) case (2) PRINT*,"calcula poisson" call poisson (n, p, x, PR) case (3) PRINT*,"calcula hipergeometrica" call hipergeometrica ( , nm, x, PR) case default PRINT*,"caso no contemplado" end select end program subroutine binomial (n, p, x, PR) implicit none integer n, x, nmx, nfac, nmxfac, xfac real p, q, PR, b !entrada de datos PRINT*,"Dame el numero de subensayos n:" read(*,*)n PRINT*,"dame la probabilidad de exito P:" read(*,*)p PRINT*,"dame el valor puntual x:" read(*,*)x !seccion de procesos q=1-p call factorial (n, nfac) nmx=n-x call factorial (nmx, nmxfac) call factorial (x, xfac) PR=nfac/(nmxfac*xfac)*(p**x)*(q**nmx) PRINT*,"probabilidad binomial = ",PR, "b"

CURSO DE COMPUTACION Pgina 12

RETURN END subroutine binomial subroutine poisson (n, p, x, PR) implicit none INTEGER n, x, xfac REAL PR, LAM, p PRINT*,"probabilidad de poisson" PRINT*,"dame el tamao de la muestra n:" read (*,*)n PRINT*,"dame la probabilidad de exito p en cada subensayo:" read (*,*)p PRINT*,"dame el valor de la variable x:" read (*,*)x call factorial (x, xfac) LAM=n*p PR=(LAM**x*EXP(-LAM))/xfac PRINT*,"Probabilidad para x = ", x, "=", PR return end subroutine poisson subroutine Hipergeometrica (PR, x, nm, NL, p) implicit none INTEGER n, x, xfac REAL PR, nm, NL, D, BH, BL PRINT*, "probabilidad hipergeometrica" PRINT*, "dame el tamao de la muestra nm:" read (*,*)nm PRINT*,"dame la proporcion de defectuosos:" read (*,*)p PRINT*,"dame el valor de la variable x:" read (*,*)x PRINT*,"dame el tamao del lote" read (*,*)NL D=NL*p Dmx=D-x Call factorial (D, Dfac) Call factorial (Dmx, Dmxfac) Call factorial (x, xfac) BL=NL-D BM=N-x BLMBM=BL-BL Call factorial (BL, BLfac) Call factorial (BLMBM, BLMBMfac) Call factorial (BM, BMfac) BLMBM=BLfac/(BLMBMfac*BMfac) LMN=L-N Call factorial (Lmn, Lmnfac) Call factorial (n,nfac) clmnm=lmnfac/(lmnfac*nfac) pr=(cdx*BLMBM)/clmnm print*,la probabilidad de , x, es igual a , pr return End subroutine hipergeometrica end subroutine subroutine factorial (num, numfac)

CURSO DE COMPUTACION Pgina 13

implicit none integer numfac, num, i !proceso numfac=1 if (num==0) then numfac=1 else do i=1, num, 1 numfac=numfac*i END do end if return end subroutine factorial

CURSO DE COMPUTACION Pgina 14

Anda mungkin juga menyukai