Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ENLACE PARA LOS APUNTES: http://bit.ly/gia_informatica_gauss
- ! PROGRAMA PRINCIPAL
- program Gauss_Eliminacion
- !DONDE: A es la matriz ampliada de coeficientes de un sistema lineal
- !DONDE: cont1, cont2, son contadores arbitrarios
- !DONDE: x es el vector columna que almacena los resultados de x_1, x_2, ..., x_n
- use :: myModule
- implicit none
- real(16), dimension (:,:), allocatable :: A
- real(16), dimension (:,:), allocatable :: x
- integer :: n
- integer :: cont1, cont2
- write(*,*) "Número de ecuaciones linealmente independientes: "
- read(*,*) n
- allocate(A(n,n + 1))
- allocate(x(1,n))
- !Leemos los datos de la matriz ampliada de coeficientes, por filas
- do cont1 = 1, n
- do cont2 = 1, n + 1
- write(*,*) "Fila: ", cont1, ", columna: ", cont2
- read(*,*) A(cont1, cont2)
- end do
- end do
- !Llamamos a la subrutina Gauss y escribimos los resultados de x_1, x_2, ..., x_n
- call Gauss(A,n,x)
- write(*,*) x(1, :)
- end program Gauss_Eliminacion
- !MODULO
- module myModule
- !DONDE: i, j, k son contadores arbitrarios
- !DONDE: n es el número de ecuaciones linealmente independientes
- contains
- subroutine Gauss (A,n,x)
- integer i,j,k
- integer, intent(in) :: n
- real(16), intent(inout) :: A(n,n)
- real(16), intent(out) :: x(n,1)
- !Hallamos la matriz triangular SUPERIOR. Se recomienda realizar
- !este método a mano hasta entenderlo completamente.
- j = 1
- do
- i = 1
- do
- if (i > j) then
- c = A(i,j)/A(j,j)
- k = 1
- do
- A(i,k)=A(i,k)-c*A(j,k)
- k = k + 1
- if (k > (n+1)) exit
- end do
- end if
- i = i + 1
- if (i > n) exit
- end do
- x(n, 1)=A(n, n + 1)/A(n,n)
- if(j > n) exit
- j = j + 1
- end do
- !Escribimos en el vector columna (x) los resultados hallados de
- !x_1, x_2, ..., x_n
- i = n - 1
- do
- sum = 0
- j = i + 1
- do
- sum = sum + A(i,j)*x(j, 1)
- j = j + 1
- if (j > n) exit
- end do
- x(i, 1) = (A(i,n+1)-sum)/A(i,i)
- i = i - 1
- if (i < 1) exit
- end do
- end subroutine Gauss
- end module myModule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement