Vous êtes sur la page 1sur 2

ELIMINACION GAUSSIANA CON PIVOTEO

En el procedimiento de eliminacin Gaussiana, cada ecuacin se divide entre el coeficiente del


primer elemento de cada fila, el cual no puede ser cero. Para resolver esto se busca entre las filas
posteriores una en la que el primer elemento no sea cero y se hace el intercambio, y se contina el
proceso. A este mtodo se le conoce como eliminacin Gaussiana con pivoteo.

Ejemplo.- Escribir una funcin que que resuelva un sistema de ecuaciones lineales de la forma
[a][x]=[b] usando el mtodo de eliminacin Gaussiana con pivoteo. El Nombre de la funcin:
x=GaussPivot(a,b), donde a es la matriz de coeficientes, b es el vector columna con las constantes a
la derecha del signo igual en las ecuaciones. Usar esta funcin para determinar el valor de las
fuerzas en la estructura cargada de ocho barras que se muestra en la figura.

Las fuerzas en los ocho miembros de la estructura mostrada se determinaron aplicando ecuaciones
de equilibrio a cuatro nodos de la estructura (A, B, C y D)

Las ecuaciones se escribieron en forma matricial, el orden en el cual aparecen es indistinto, el


sistema entonces tiene la siguiente forma:
0 0.9231 0 0 0 0 0 0 FAB 1690
1 0.3846 0 0 0 0 0 0 FAC 3625
0 0 0 0 1 0 0.8575 0 FBC 0
1 0 0.7809 0 0 0 0 0 FBD 0
=
0 0.3846 0.7809 0 1 0.3846 0 0 FCD 0
0 0.9231 0.6247 0 0 0.9231 0 0 FCE 0
0 0 0.6247 1 0 0 0 0 FDE 0
[0 0 0 1 0 0 0.5145 1] [ FDF] [ 0 ]

Algoritmo para la funcin Eliminacin Gaussiana con pivoteo.

function x=GaussPivot(a, b)
// La funcin resuelve un sistema de ecuaciones lineales a x = b usando el mtodo de
eliminacin de Gauss con pivoteo
// Variables de entrada
// a = matriz de coeficientes
// b = vector columna de coeficientes del lado derecho del signo igual
// Valores de salida
// x vector columna con la solucin.
ab=[a, b];
[R, C] = size (ab);
for j=1:R-1
// Inicia la seccin de pivoteo
if ab(j, j) == 0
for k = j + 1:R
if ab(k, j) <> 0
ab Temp = ab(j,:);
ab (j,:) = ab(k,:);
ab(k,:) = ab Temp;
break
end
end
end
// Finaliza seccin de pivoteo
for i = j+1:R
ab( i, j:C) = ab(i, j:C) - ab(i, j)/ab(j, j)*ab(j, j:C);
end
end
x = zeros(R, 1);
x (R) = ab(R,C)/ab(R,R);
for i = R - 1:-1:1
x(i) = (ab(I ,C) - ab(I ,i + 1:R)*x (i + 1:R))/ab(I ,i);
end
endfunction