Vous êtes sur la page 1sur 11

METODO DE RELAJACION DE JACOBI

PROGRAM RELAJACION_JACOBI

REAL(4)A(100,100),B(100),XP(100,100)

5 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE SISTEMAS LINEALES RELAJACION_JACOBI'
WRITE(*,*)'================================================='
WRITE(*,*)''
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)''
WRITE(*,*)' DIMENSION DEL SISTEMA'
READ(*,*)M
WRITE(*,*)''
WRITE(*,*)' TOLERANCIA'
READ(*,*)TOL
WRITE(*,*)''
WRITE(*,*)' INGRESE MATRIZ DE COEFICIENTES DE A'
DO I=1,M
READ(*,*)(A(I,J),J=1,M)
END DO
WRITE(*,*)''
WRITE(*,*)' INGRESE ELEMETOS DE B'
DO I=1,M
READ(*,*)B(I)
END DO
WRITE(*,*)''
WRITE(*,*)' INGRESE ELEMENTOS DE VECTOR APROXIMADO'
K2=1
DO I=1,M
READ(*,*)XP(K2,I)
END DO
WRITE(*,*)'================================================='
WRITE(*,*)''
10 DO I=1,M
SUMA1=0
DO J=1,M
IF(J.NE.I)THEN
SUMA1=SUMA1+A(I,J)*XP(K2,J)
END IF
XP(K2+1,I)=(B(I)-SUMA1)/A(I,I)
END DO
END DO
DO I=1,M
QWE=ABS(XP(K2+1,I)-XP(K2,I))
IF(QWE.GT.TOL)THEN
K2=K2+1
GOTO 10
ELSE
END IF
END DO
20 WRITE(*,*)' RESULTADOS EN TODOS LOS ORDENES'
WRITE(*,*)'============================================='
DO J=1,M
WRITE(*,25)J,(XP(MM,J),MM=1,K2+1)
END DO
WRITE(*,*)'============================================='
WRITE(*,23)TOL,K2
23 FORMAT(' TOLERANCIA:',F9.6,1X,'NUMERO DE ITERACIONES:',I3)
25 FORMAT(' X:',I3,12(1X,F8.4))
END

METODO DE RELAJACION DE GAUSS-SEIDEL

PROGRAM RELAJACION_GAUSS_SEIDEL

REAL(4) A(100,100),B(100),XP(100,100)

5 WRITE(*,*)''
WRITE(*,*)' SOLUCION DE SISTEMAS LINEALES GAUSS-SEIDEL'
WRITE(*,*)'============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)'============================================='
WRITE(*,*)' INGRESE LA DIMENSION DE LA MATRIZ'
READ(*,*)M
WRITE(*,*)''
WRITE(*,*)' INGRESE LA TOLERANCIA'
READ(*,*)TOL
K2=0
WRITE(*,*)''
WRITE(*,*)' INGRESE MATRIZ DE COEFICIENTES A'
DO I=1,M
READ(*,*)(A(I,J),J=1,M)
END DO
WRITE(*,*)''
WRITE(*,*)' INGRESO ELEMENTOS DE B'
DO I=1,M
READ(*,*)B(I)
END DO
WRITE(*,*)''
WRITE(*,*)' INGRESE ELEMENTOS DEL VECTOR APROXIMADO'
K2=1
DO I=1,M
READ(*,*)XP(K2,I)
END DO
WRITE(*,*)'============================================'
WRITE(*,*)''
10 DO I=1,M
SUMA1=0
SUMA2=0
DO J=1,M
IF(J.LT.I)THEN
SUMA1=SUMA1+A(I,J)*XP(K2+1,J)
END IF
IF(J.GT.I)THEN
SUMA2=SUMA2+A(I,J)*XP(K2,J)
END IF
XP(K2+1,I)=(B(I)-SUMA1-SUMA2)/A(I,I)
END DO
END DO
DO I=1,M
ER=ABS(XP(K2,I)-XP(K2+1,I))
IF(ER.GT.TOL)THEN
K2=K2+1
GOTO 10
ELSE
END IF
END DO
20 WRITE(*,*)' REAULTADOS EN TODOS LOS ORDENES'
WRITE(*,*)'============================================'
DO J=1,M
WRITE(*,25)J,(XP(MM,J),MM=1,K2+1)
END DO
WRITE(*,*)'============================================'
WRITE(*,23)TOL,K2
23 FORMAT(' TOLERANCIA:',F9.6,1X,'NUMERO DE ITERACIONES:',I3)
25 FORMAT(' X:',I3,8(1X,F8.4))
END
METODO DE SOBRERELAJACION SUCESIVA

PROGRAM SOBRE_RELAJACION_SUCESIVA

REAL(4) A(100,100),B(100),XP(100,100)

5 WRITE(*,*)''
WRITE(*,*)''
WRITE(*,*)' SOLUCION DE SISTEMAS LINEALES SOBRE RELAJACION'
WRITE(*,*)' SUCESIVA'
WRITE(*,*)' =============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' =============================================='
WRITE(*,800)
800 FORMAT(' INGRESE LA DIMENSION DE LA MATRIZ: '$)
READ(*,*)M1
WRITE(*,810)
810 FORMAT(' INGRESE LA TOLERANCIA: '$)
READ(*,*)TOL
WRITE(*,820)
820 FORMAT(' INGRESE EL PARAMETRO DE RELAJACION W: '$)
READ(*,*)W
K2=1
WRITE(*,*)''
WRITE(*,*)' INGRESE COEFICIENTES DEL SISTEMA'
DO IJ=1,M1
WRITE(*,11)IJ
READ(*,*)(A(IJ,JI),JI=1,M1)
WRITE(*,9)IJ
READ(*,*)B(IJ)
END DO
WRITE(*,*)''
DO IJ=1,M1
WRITE(*,7)IJ
READ(*,*)XP(1,IJ)
END DO
WRITE(*,*)' ==============================================='
WRITE(*,*)''
12 DO I=1,M1
SUMA1=0
SUMA2=0
SUMA3=0
DO J=1,M1
IF(J.LT.I)THEN
SUMA1=SUMA1+A(I,J)*XP(K2+1,J)
END IF
IF(J.GT.I)THEN
SUMA2=SUMA2+A(I,J)*XP(K2,J)
END IF
SUMA3=SUMA3+A(I,J)*XP(K2,J)
END DO
XP(K2+1,I)=(W*B(I)-SUMA1-SUMA2+(1.0-W)*SUMA3)/A(I,I)
END DO
DO I=1,M1
QWE=ABS(XP(K2,I)-XP(K2+1,I))
IF(QWE.GT.TOL)THEN
K2=K2+1
GOTO 12
END IF
END DO
WRITE(*,*)''
WRITE(*,*)' RESULTADOS EN TODOS LOS ORDENES'
WRITE(*,*)' =============================='
DO J=1,M1
WRITE(*,25)J,(XP(MM,J),MM=1,K2+1)
END DO
WRITE(*,*)' ==============================================='
WRITE(*,23)QWE,K2,W
7 FORMAT(' SOLUCION APROXIMADA FILA:',I3,'= '$)
9 FORMAT(' CONSTANTE FILA:',I3,'= '$)
11 FORMAT(' COEFICIENTES FILA:',I3,'= '$)
23 FORMAT(' ULTIMA DIFERENCIA=',F8.4,1X,' NUMERO DE ITERACIONES=',I3,1X,'
P.RELAJACION=',F8.4)
25 FORMAT(' X=',I3,10(F8.4))
END

CALCULO DE LA INVERSA DE UNA MATRIZ

PROGRAM INVERSA

REAL(4) A(100,100),A1(100,100),XSOL(100),D(100,100),RES(100,100)

10 WRITE(*,*)''
WRITE(*,*)' CALCULO DE LA INVERSA DE UNA MATRIZ'
WRITE(*,*)' ==================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS(CALCULO DE LA INVERSA DE UNA MATRIZ NXN)'
WRITE(*,*)' ========================================================='
WRITE(*,*)' INGRESE LA DIMENSION DE LA MATRIZ'
READ(*,*)M1
WRITE(*,*)''
WRITE(*,*)' INGRESE ELEMENTOS DE LA MATRIZ'
DO I=1,M1
WRITE(*,*)''
WRITE(*,11)I
READ(*,*)(A(I,J),J=1,M1)
END DO
11 FORMAT(' ELEMENTOS DE LA FILA: ',I3)
WRITE(*,*)' =================================='
20 DO I=1,M1
D(I,I)=1.0
END DO
!INICIO DE CICLO
DO JJJ=1,M1
LP=2
LN=LP-1
!COPIANDO EN LA MATRIZ DE PASO
DO I=1,M1
DO J=1,M1
A1(I,J)=A(I,J)
END DO
END DO
DO I=1,M1
A1(I,M1+1)=D(I,JJJ)
END DO
!FIN DEL COPIADO
!HACIENDO LA ELIMINACION
21 DO I=LP,M1
WPASO1=A1(I,LN)
WPASO2=A1(LN,LN)
DO J=1,M1+1
A1(I,J)=A1(I,J)-(WPASO1/WPASO2)*A1(LN,J)
END DO
END DO
!FIN DE LA ELIMINACION
!REPITIENDO EL PROCESO
LP=LP+1
LN=LP-1
IF(LP.GT.M1)THEN
NK=M1
GOTO 27
ELSE
GOTO 21
END IF
!FIN DE REPETICION
!SUSTITUCION REGRESIVA
27 SUMA=0
DO J=1,M1
SUMA=SUMA+A1(NK,J)*XSOL(J)
END DO
XSOL(NK)=(A1(NK,M1+1)-SUMA)/A1(NK,NK)
NK=NK-1
IF(NK.LE.0)THEN
GOTO 28
ELSE
GOTO 27
END IF
!FIN DE SUSTISUCION REGRESIVA
28 DO I=1,M1
RES(I,JJJ)=XSOL(I)
END DO
DO I=1,M1
XSOL(I)=0
END DO
END DO
!PRESENTACION DE RESULTADOS
WRITE(*,*)' RESULTADO MATRIZ INGRESADA'
WRITE(*,*)' ========================='
DO I=1,M1
WRITE(*,100)(A(I,J),J=1,M1)
END DO
WRITE(*,*)''
WRITE(*,*)' RESULTADO MATRIZ INVERSA'
WRITE(*,*)' ========================'
DO I=1,M1
WRITE(*,100)(RES(I,J),J=1,M1)
END DO
WRITE(*,*)''
!FIN DE PRESENTACION
WRITE(*,*)''
WRITE(*,*)''
WRITE(*,*)''
29 FORMAT(1X,' ',I3,':',F9.5)
100 FORMAT(7(1X,F8.4))
30 WRITE(*,*)''
END
CALCULO DEL VALOR Y VECTOR PROPIO

PROGRAM VALOR_VECTOR_PROPIO_ALTO

DIMENSION A(100,100),XP(100,100),XP1(100,100),X(100),AM(100,100)
CHARACTER RESP1

5 WRITE(*,*)''
WRITE(*,*)' CALCULO DEL VALOR Y VECTOR PROPIO MAS ALTO'
WRITE(*,*)' =========================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' ==============================='
WRITE(*,800)
800 FORMAT(' INGRESE LA DIMENSION DE LA MATRIZ: '$)
READ(*,*)M1
WRITE(*,810)
810 FORMAT(' TOLERANCIA: '$)
READ(*,*)TOL
K2=0
WRITE(*,*)''
WRITE(*,*)' INGRESE COEFICIENTES DEL SISTEMA'
DO IJ=1,M1
WRITE(*,*)''
DO JI=1,M1
WRITE(*,11)IJ,JI
READ(*,*)A(IJ,JI)
END DO
END DO
WRITE(*,*)''
DO IJ=1,M1
WRITE(*,7)IJ
READ(*,*)XP(0,IJ)
END DO
WRITE(*,*)' ==========================================='
WRITE(*,*)''
7 FORMAT(' SOLUCION APROXIMADA FILA:',I3,'='$)
11 FORMAT(' COEFICIENTE FILA:',I3,'COLUMNA:',I3,'='$)
12 WRITE(*,820)
820 FORMAT(' ESTA CONFORME(S o N): '$)
READ(*,*)RESP1
SELECT CASE (RESP1)
CASE('S','s')
GOTO 10
CASE('N','n')
GOTO 5
CASE DEFAULT
GOTO 12
END SELECT
10 DO I=1,M1
DO J=1,M1
XP1(K2+1,J)=0.0
DO K=1,M1
XP1(K2+1,J)=XP1(K2+1,J)+A(J,K)*XP(K2,K)
END DO
END DO
END DO
SUMA=0
DO I=1,M1
SUMA=SUMA+(XP1(K2+1,I))**2
END DO
X(K2+1)=SQRT(SUMA)
DO I=1,M1
XP(K2+1,I)=(1.0/X(K2+1))*XP1(K2+1,I)
END DO
IF (K2+1.LT.1)THEN
K2=K2+1
GOTO 10
END IF
CONT=0
DO I=1,M1
QWE=ABS(XP1(K2,I)-XP1(K2+1,I))
IF (QWE.GT.TOL)THEN
K2=K2+1
GOTO 10
ELSE
CONT=CONT+1
END IF
END DO
! BUSQUEDA DEL VALOR MAS GRANDE Y EIGEN VALOR WLM
20 X1=XP(K2,1)
DO I=1,M1-1
IF (X1.LT.XP(K2,I+1))THEN
ELSE
X1=XP(K2,I+1)
END IF
END DO
X2=XP1(K2+1,1)
DO I=1,M1-1
IF (X2.LT.XP1(K2+1,I+1))THEN
ELSE
X2=XP1(K2+1,I+1)
END IF
END DO
WLM=X2/X1
! FIN DE BUSQUEDA Y CALCULO
! CALCULO DEL EIGENVECTOR AM
DO I=1,M1
AM(K2+1,I)=(1.0/WLM)*XP1(K2+1,I)
END DO
! FIN DEL CALCULO DEL EIGENVECTOR
WRITE(*,*)''
WRITE(*,*)' RESULTADOS'
WRITE(*,*)' =========='
WRITE(*,*)''
WRITE(*,*)' VECTOR XK TODOS LOS ORDENES'
WRITE(*,*)' ==========================='
DO I=1,M1
WRITE(*,25)I,(XP1(MM,I),MM=1,K2+1)
END DO
WRITE(*,*)''
WRITE(*,*)''
WRITE(*,*)''
WRITE(*,*)' VECTOR XK TODOS LOS ORDENES'
WRITE(*,*)' ============================'
DO I=1,M1
WRITE(*,26)I,(XP1(MM,I),MM=1,K2+1)
END DO
WRITE(*,*)''
WRITE(*,*)' EIGENVECTOR am'
WRITE(*,*)' =============='
DO I=1,M1
WRITE(*,30)XP(K2+1,I)
END DO
WRITE(*,*)''
WRITE(*,*)' EIGENVALOR Lm'
WRITE(*,*)' ============='
WRITE(*,30)WLM
WRITE(*,*)''
WRITE(*,31)TOL,K2+1
25 FORMAT(' XK',I2,': ',8(F8.4))
26 FORMAT(' XK',I2,': ',8(F8.4))
30 FORMAT(' ',F8.4)
31 FORMAT(' TOLERANCIA:',F8.4,'NUMERO DE ITERACIONES:',I3)
WRITE(*,*)''
839 WRITE(*,840)
840 FORMAT(' DESEA REPETIR LA OPERACION(S o N): '$)
READ(*,*)RESP1
SELECT CASE (RESP1)
CASE('S','s')
GOTO 5
CASE('N','n')
CASE DEFAULT
GOTO 839
END SELECT
WRITE(*,*)''
END

Vous aimerez peut-être aussi