IMPLICIT NONE INTEGER I,J,N, NITER, L INTEGER i, j, n PARAMETER (N=3, NITER=100) PARAMETER (n=3) REAL X(N), B(N), A(N,N),SUMA(N), REAL x(n), b(n), a(n,n), EC(I) sum1(n) OPEN(1,FILE="DATOS.DAT") !ciclo de lectura de b(n) DO I=1,N DO i=1,n READ(1,*) X(I),B(I) READ (*,*) b(i), x(i) ENDDO !si se quiere saber si se DO I=1,N lee bien escribir DO J=1,N print (*,*) b(i) READ(1,*) A(I,J) ENDDO ENDDO !ciclo de lectura de a(n,n) ENDDO DO i=i,n !INICIALIZAR LA SUMA SUMA=0 !completa primero el do DO L=1,NITER interno (j) y despues el DO I=1,N externo (i) SUMA(I)=0 DO j=1,n ENDDO READ (*,*) a(i,j) DO I=1,N ENDDO DO J=1,N ENDDO IF(J.NE.I) THEN !para la sumatoria SUMA(I)=SUMA(I)+A(I,J)*X(J) DO i=i,n ELSE sum1(i)=0 ENDIF ENDDO ENDDO DO i=i,n ENDDO DO j=1,n DO I=1,N IF(j.ne.i) THEN X(I)=1.0/A(I,I)*(B(I)-SUMA(I)) sum1(i)=sum1(i)+a(i,j)*x(j) WRITE(*,*) X(I) ELSE ENDDO ENDIF DO I=0 ENDDO EC(I)=0.0 ENDDO ENDDO DO i=1,n DO I=1,N x(i)=1/a(i,i)*(b(i)-sum1(i)) DO J=1,N ENDDO EC(I)=EC(1)+A(I,J)*X(J) ! para imprimir los valores ENDDO DO i=i,n EC(I)=B(I)-EC(I) WRITE (*,*) x(i) ENDDO ENDDO IF(ABS(EC(1)).LE.0.01).AND.(ABS(EC(2)) STOP .LE.0.01).AND.(ABS(EC(3)).LE.0.01) END THEN WRITE(*,*) X(I), L ELSE ENDIF STOP END PROGRAM Redich_Kwong PROGRAM Redich_Kwong IMPLICIT NONE IMPLICIT NONE PROGRAM SIMPSON INTEGER I,M INTEGER I,M IMPLICIT NONE REAL Vi,Tc,Pc,R,a,b,T,P,F,Fp,V REAL Vi,Tc,Pc,R,a,b,T,P,F,Fp,V INTEGER J,N OPEN(6,FILE="Datos.DAT") OPEN(6,FILE="Datos.DAT") PARAMETER (n=10000) OPEN(7,FILE="Resultados.DAT") OPEN(7,FILE="Resultados.DAT") REAL a,b,h,Fa,Fb PROGRAM Trapecio C WRITE(6,*) "Dame los valores de C WRITE(6,*) "Dame los valores de REAL F,SUMA1,SUMA2,I IMPLICIT NONE Tc,Pc,R,T,P,M" Tc,Pc,R,T,P,M" READ(*,*)A,B INTEGER J,N READ(6,*) Tc,Pc,R,T,P,M READ(6,*) Tc,Pc,R,T,P,M h=(b-a)/n PARAMETER (n=10000) a=0.4278*R**2*Tc**2.5/Pc a=0.4278*R**2*Tc**2.5/Pc Fa=F(a) REAL b=0.0867*R*Tc/Pc b=0.0867*R*Tc/Pc Fb=F(b) a,b,h,Fa,Fb,F,SUMA,I Vi=R*T/P Vi=R*T/P SUMA1=0 READ(*,*)A,B DO I=1,M DO I=1,M DO J=1,N-1,2 h=(b-a)/n F=(P+a/(T**0.5*Vi*(Vi+b)))*(Vi-b)- F=(P+a/(T**0.5*Vi*(Vi+b)))*(Vi-b)- SUMA1=SUMA1+F(a+J*h) Fa=F(a) R*T R*T ENDDO Fb=F(b) Fp=(P+a/(T**0.5*Vi*(Vi+b)))+(Vi- Fp=(P+a/(T**0.5*Vi*(Vi+b)))+(Vi- SUMA2=0 SUMA=0 b)*(- b)*(- DO J=2,N-2,2 DO J=1,N-1 a*(2*Vi+B)/(T**0.5*(Vi*(Vi+1b))**2)) a*(2*Vi+B)/(T**0.5*(Vi*(Vi+1b))**2)) SUMA2=SUMA2+F(a+J*h) SUMA=SUMA+F(a+J*h) V=Vi-F/Fp !ECUACIÓN DE NEWTON V=Vi-F/Fp !ECUACIÓN DE NEWTON ENDDO ENDDO RAPHSON RAPHSON F=(P+a/(T**0.5*V*(V+b)))*(V-b)-R*T F=(P+a/(T**0.5*V*(V+b)))*(V-b)-R*T I=h/3*(Fa+4*SUMA1 I=h/2*(Fa+2*SUMA+fb) IF(ABS(F).LE.0.001) THEN IF(ABS(F).LE.0.001) THEN +2*SUMA2+Fb) WRITE(*,*) I WRITE(7,*) V,F WRITE(7,*) V,F WRITE(*,*)I STOP GOTO 30 GOTO 30 STOP END ELSE ELSE END Vi=V Vi=V FUNCTION F(x) FUNCTION F(x) ENDIF ENDIF IMPLICIT NONE IMPLICIT NONE IF (I.EQ.M) WRITE(*,*) "NO IF (I.EQ.M) WRITE(*,*) "NO REAL X,F REAL X,F CONVERGE" CONVERGE" F=X**2+3 F=X**2+3 ENDDO ENDDO RETURN RETURN 30 STOP 30 STOP END END END END PROGRAM NRCF PROGRAM SIMPSON5288 PROGRAM PUNTO FIJO IMPLICIT NONE IMPLICIT NONE PROGRAM EULER REAL X,Fx,Fpx IMPLICIT NONE INTEGER J,M,N REAL X,F,Xi, FP IMPLICIT NONE READ(*,*) X PARAMETER (M=6,N=1) INTEGER I,M INTEGER 1,N X=X-Fx(x)/Fpx(x) REAL F,a,b,h,Alpha,W(M),I PARAMETER (N=1000) WRITE(*,*) READ(*,*) M, Xi READ(*,*) a,b,Alpha REAL XF,X0,H,F,Y0 X,Fx(x),Fpx(x) DO I=1,M DO J=1,M F=-4*Xi**2+2*Xi+1 READ(*,*) X0,Y0,XF STOP READ(*,*) W(J) FP=-8*X+2 H=(XF-X0)/N END ENDDO X=Xi-F/FP DO I=1,N FUNCTION Fx(x) h=(b-a)/N Y0=Y0+H*F(X0,Y0) IMPLICIT NONE F=-4*X**2+2*X+1 I=5*H/288*(W(1)*F(a)+W(6)*F(b) X0=X0+H REAL Fx,X WRITE(*,*) I,X,F +W(2)*F(a+H)+W(3)*F(a+2*H) IF (ABS(F).LE.0.01) THEN GOTO 30 WRITE(*,*) X0,Y0 Fx=x**2+2.0 +W(4)*F(a+3*H)+W(5)*F(a+4*h)) ELSE Xi=X ENDDO RETURN WRITE(*,*) STOP END ENDIF STOP END FUNCTION Fpx(R) IF(I.EQ.M) PRINT*,"NO CONVERGE END DESPUES DE",I,"ITERACIONES" FUNCTION F(X,Y) IMPLICIT NONE ENDDO REAL X,Y,F REAL Fpx,R F=40-0.2*Y Fpx=2*R 30 STOP RETURN RETURN END END END