0 calificaciones0% encontró este documento útil (0 votos)
131 vistas1 página
Este algoritmo resuelve un sistema de ecuaciones lineales mediante el método de eliminación gaussiana con pivoteo total. Realiza las siguientes etapas: 1) lee los datos del sistema, 2) encuentra el pivote máximo en cada fila mediante comparaciones absolutas, 3) intercambia filas para colocar el pivote en la posición (i,i), 4) elimina los elementos debajo del pivote, 5) sustituye hacia atrás para hallar las incógnitas, 6) muestra los resultados.
Este algoritmo resuelve un sistema de ecuaciones lineales mediante el método de eliminación gaussiana con pivoteo total. Realiza las siguientes etapas: 1) lee los datos del sistema, 2) encuentra el pivote máximo en cada fila mediante comparaciones absolutas, 3) intercambia filas para colocar el pivote en la posición (i,i), 4) elimina los elementos debajo del pivote, 5) sustituye hacia atrás para hallar las incógnitas, 6) muestra los resultados.
Este algoritmo resuelve un sistema de ecuaciones lineales mediante el método de eliminación gaussiana con pivoteo total. Realiza las siguientes etapas: 1) lee los datos del sistema, 2) encuentra el pivote máximo en cada fila mediante comparaciones absolutas, 3) intercambia filas para colocar el pivote en la posición (i,i), 4) elimina los elementos debajo del pivote, 5) sustituye hacia atrás para hallar las incógnitas, 6) muestra los resultados.
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