Es un método que busca en cada etapa del proceso de eliminación gaussiana que el multiplicador (Aik/Akk) sea lo menor posible, es decir, busca ubicar el mayor elemento en la diagonal principal. Lo anterior da solución al problema de un elemento de la diagonal igual o cercano a 0 que se presentaba en la eliminación gaussiana simple.
A continuación, se enuncian nuevamente las operaciones fila:
Como funciona el método:
Básicamente funciona como el proceso de eliminación gaussiana con una operación adicional en cada etapa, buscar el elemento mayor para la diagonal. Entonces, dado un sistema de ecuaciones AX=b, donde A representa la matriz de coeficientes de tamaño nxn, X el vector columna de incógnitas y b el vector de términos independientes; se procede de la siguiente forma:
1. Se obtiene la matriz de aumentada Ab del sistema.
2. Se busca el mayor elemento en valor absoluto de la primera columna y se intercambia la fila que lo contiene con la primera fila, en caso contrario a que sea la primera fila la que lo contenga.
3. Todos los elementos debajo de A11 se convierten en ceros utilizando la segunda operación fila presentada anteriormente. Dentro del proceso se halla un multiplicador.
4. Nuevamente se busca el mayor elemento en valor absoluto de la segunda columna que ocupan posiciones mayores o iguales a A22. Luego, se intercambia la fila que lo contiene con la segunda fila, en caso contrario a que sea la segunda fila la que lo contenga.
5. Todos los elementos de debajo de A22 se convierten en cero.
6. Se realiza un proceso similar a los pasos 2,3,4 y 5 hasta llegar a una matriz triangular superior.
7. Se halla el valor del término Xn, con este valor el de Xn-1 y así sucesivamente mediante una sustentación regresiva hasta obtener el termino X1.
Característica principal:
Soluciona los problemas que se pueden presentar tanto en la ejecución como en el resultado de eliminación gaussiana simple. Es decir, este método no presenta dificultades en su ejecución cuando encuentra un elemento igual a 0 en la diagonal principal, a menos que los elementos por debajo de dicho número también sean ceros, lo cual indica que el sistema no tiene solución única. Igualmente, el método reduce el efecto de redondeo que se da en la divisiones con el numerador cercano a 0.
Seudo-código
Al igual que en el anterior seudocódigo A es la matriz de coeficientes nxn, b el vector de términos independientes y k es el contador de etapas.
Function eliminacon gaussiana con pivoteop (A,b,n)
Ab=Matriz aumentada [Ab]
For k=1 to n-1 do
mayor=|Abkk|
FilaMayor=k
for s=k+1 to n
if |Absk|>mayor then
mayor=|Abs,k|
FilaMayor=s
end if
end for
if mayor==0
write(‘El Sistema tiene mas de una solucion’)
return
else
if FilaMayor ≠ k then
FilaK=Abk(1 to n+1)
FilaM=Ab(FilaMayor)(1 to n+1)
Abk(1 to n+1)=FilaM
Ab(FilaMayor)(1 to n+1)= FilaK
end if
end if
for i=k+1 to n do
multiplcador=Abij/Abkk
for j=k to n+1
Abij=Abij-multiplicador*Abkj
end for
end for
end for
Xn1=Abnn+1/Abnn
for i=n-1 to 1 step=-1 do
sumatoria=0
for p=i+1 to n
sumatoria=sumatoria+Abip*Xp1
end for
Xi1=(Abin+1- sumatotia)/Abii
end for
end function
Código
function [x]=eliminacion_gaussiana_con_pivoteop(A,b,n)
Ab=[A,b];
for k=1:n-1
mayor=abs(Ab(k,k)); %
FilaMayor=k;
for s=k+1:n
if abs(Ab(s,k))>mayor
mayor=(Ab(s,k));
FilaMayor=s;
end
end
if mayor==0
disp('El sistema tiene mas de una solucion')
return
else
if FilaMayor~=k
Filak=Ab(k,:);
FilaM=Ab(FilaMayor,:);
Ab(k,:)=FilaM;
Ab(FilaMayor,:)=Filak;
end
end %
for i=k+1:n
multiplicador=Ab(i,k)/Ab(k,k);
for j=k:n+1
Ab(i,j)=Ab(i,j)-multiplicador*Ab(k,j);
end
end
end
x(n,1)=(Ab(n,n+1))/(Ab(n,n)); %%
for i=n-1:-1:1
sumatoria=0;
for p=i+1:n
sumatoria=sumatoria + Ab(i,p)*x(p,1);
end
x(i,1)=(Ab(i,n+1)-sumatoria)/Ab(i,i);
end %%
end