Está en la página 1de 1

Pseudocodigo del algoritmo de eliminacion gaussiana con pivoteo total

START PROGRAM GaussPivoteoTotal


! ix(cmay) = i ! guarda el orden en que quedaron las variables (p/ salida res.)
! Ingreso de datos ix(i) = cmay
! ------------------------------------- ! -------------------------------------
READ n ! dimension del sistema ! Eliminacion
! Leer coeficientes de la matriz y del vector de terminos independientes ! -------------------------------------
DO i=1,n DO j = i+1,n
DO j=1,n !ingreso de los coeficientes de la ecuacion i m= a(j,i) / a(i,i)
READ a(i,j) DO k = i+1,n
END DO a(j,k)= a(j,k) – m * a(i,k)
READ b(i) !ingreso del termino independiente de la ecuaccion i END DO
END DO b(j) = b(j) – m * b(i)
! END DO
DO i=1,n-1 END DO
! Pivoteo Total ! -------------------------------------
! ------------------------------------- ! Sustitucion hacia atras
may = ABS(a(i, i)) ! inicializacion ! -------------------------------------
fmay =i ! inicializacion x(n) = b(n) / a(n,n) ! inicio de la sustitucion
cmay = i ! inicializacion DO i = n-1,1,-1
DO f = i, n ! se busca la mayor componente en valor absoluto del i-esimo sistema x(i) = b(i)
DO c = i, n DO j = i+1,n
IF (ABS(a(f,c)) > may) THEN x(i) = x(i)- a(i,j) * x(j)
may = ABS(a(f,c)) END DO
fmay = f x(i) = x(i) / a(i,i)
cmay = c END DO
END IF ! Salida de resultados
END DO ! -------------------------------------
END DO DO i = 1,n !xs tiene las variables en el orden original
! xs(ix(i)) = x(i)
DO k = 1,n ! se intercambia la fila i por la fila fmay (interc. ecs) END DO
paso = a(I,k) DO i = 1,n ! muestra al usuario el resultado con vars en orden original
a(I,k) = a(fmay, k) Print xs(i)
a(fmay, k) = paso END DO
END DO !
paso = b(i) ! se intercambia el T.I. k por el fmay (ecs) END PROGRAM GaussPivoteoTotal
b(i) = b(fmay)
b(fmay) = paso
!
DO k= 1,n ! se intercambia la columna k por la columna cmay (cambio orden
vars.)
paso = a(k,i)
a(k, i) = a(k, cmay)
a(k, cmay) = paso
END DO

También podría gustarte