IPN

IPN
IPN-ESIQIE

lunes, 7 de junio de 2010

MATRIZ DE GAUSS TRIANGULARIZACION POR MEDIO DE SUBRUTINAS

program gauss
implicit none
REAL,DIMENSION(:,:),ALLOCATABLE::M
REAL,DIMENSION(:),ALLOCATABLE::D,X
INTEGER::i,k,j,L,g,N
PRINT*,'Este programa resuelve ecuaciones simltaneas'
PRINT*,'por el metodo de Gauss'
PRINT*,'M representa lamatriz del sistema'
PRINT*,'D representa a lamatriz de terminos independientes'
!
!
PRINT*,'DE CUANTAS ECUACIONES CONSTA TU SISTEMA'
READ*,N
!
!
ALLOCATE(M(N,N),D(N),X(N))
DO i=1,N,1
PRINT*,'Intoroduce los elementos de la matriz del sistema, fila',i
do k=1,N,1
PRINT*,'Introduce el elemento c(',i,',',k,')='
READ*,M(i,k)
END DO
!
PRINT *,'Intoroduce los elementos de la matriz terminos independientes'
READ*,D(i)
END DO
DO L=1,N-1,1
CALL ELIMINACION (M,D,X,N)
WRITE (*,*)'EL VECTOR SOLUCION ES'
WRITE (*,*)X(L)
DEALLOCATE (M,D,X)
WRITE(*,*)'NO SUFICIENTE ESPACIO MEMORIA'
STOP
END DO
END PROGRAM gauss
!
!
SUBROUTINE ELIMINACION (M,D,X,N)
IMPLICIT NONE
INTEGER::N,i,j,k,G
REAL(KIND=8)::PIVOTE,BASE,SUMA
REAL,DIMENSION(N)::D,X
REAL,DIMENSION(N,N)::M
!
!===============================================
!ESTA PARTE DEL PROGRAMA USA UN METODO CONVERSION DE UNA MATRIZ A DE COEFICIENTES
!A UNA TRIANGULAR SUPERIOR
DO k=1,N,1
PIVOTE=M(N,N)
DO i=K+1,N,1
BASE=M(i,K)
DO j=1,N,1
M(i,j)=(M(i,j)-(BASE/PIVOTE)*(M(k,j)))
END DO
G=D(i)-(BASE/PIVOTE)*D(k)
END DO
END DO
!
!METODO PARA LA SUSTITUCION HACIA ATARS PARA EL CALCULO DEL VECTOR SOLUCION X
DO k=1,N,i
SUMA=0
DO j=N,k+1,-1
SUMA=SUMA+M(k,j)*X(j)
END DO
X(j)=(D(j)-SUMA/(M(k,k)))
END DO
RETURN
END SUBROUTINE ELIMINACION

No hay comentarios:

Publicar un comentario