Práctica 6

Resolución de sistemas lineales:
métodos de Gauss y Gauss-Jordan

Sistemas triangulares

Sistemas triangulares superiores

Resolvamos el sistema Ax=b, donde la matriz, A, se introduce como una tabla rectangular y el vector de términos independientes, b, como una lista, escribiendo los elementos entre llaves y separándolos por comas, tal y como se hace a continuación:

Clear["Global`*"]

\(A = {{1, 2, \(-1\), 3, \(-4\)}, {0, 6, 0, 0, 1}, {0, 0, 2, 2, 0}, {0, 
          0, 0, 1, \(-4\)}, {0, 0, 0, 0, 5}}; 


    b = {25, 24, \(-15\), 40, 61}; 

MatrixForm[A]\)

Para ello hallamos el orden del sistema y definimos un vector, x, que contendrá finalmente a la solución, y que se inicializa, por ejemplo, con ceros.

\(n = \(Dimensions[A]\)[\([1]\)]; 
x = Table[0, {i, n}]; \)

Hallamos la solución mediante sustitución regresiva y la mostramos:

For[i = n, i ≥ 1, i--, 
      x[[i]] = 
        ((b[[i]] - 
            (∑_(k = i + 1)^n) A[[i, k
                  ]] 
                x[[k]])/A)
            [[i, i]]]

La solución es

x

?LinearSolve

LinearSolve[A, b]

Transformación de un sistema en otro triangular
superior. Método de Gauss.

Una primera aproximación

Vamos a tratar el problema de la reducción de un sistema a otro equivalente, triangular superior, mediante el procedimiento de eliminación gaussiana. Supondremos que, en cada paso del proceso, el elemento de la diagonal que debe ser usado para hacer ceros debajo de él es no nulo. De no ser así habría que cambiar el orden de las ecuaciones o bien el sistema no sería compatible determinado.

Queremos resolver el sistema que tiene por matriz de coeficientes y vector de términos independientes los siguientes:

\(A = {{1. , 2. , 3. , 4. }, {2. , 20. , 18. , 16. }, {3. , 18. , 19. , 
          21. }, {4. , 16. , 21. , 33. }}; 
b = {4. , 6. , 8. , 2. }; \)

MatrixForm[A]

Hallamos el orden de la matriz y establecemos el bucle que proporciona la triangularización de la matriz:

n = Dimensions[A][[1]]; \(
\)For[i = 1, i ≤ n, i++, 
      For[j = i + 1, j ≤ n, j++, 
        pivote = -A[[j, i]]/A[[i, i]]; 
        
A[[j]] = A[[j]] + pivote*A[[i]]; 
        
b[[j]] = b[[j]] + pivote*b[[i]]]]

La matriz triangularizada, que se sigue llamando A, es

MatrixForm[A]

y el vector de términos independientes, que se sigue denominando b, es

b

Ahora resolvemos el sistema triangular resultante y mostramos su solución, que será la del sistema de partida:

\(n = \(Dimensions[A]\)[\([1]\)]; 
x = Table[0, {i, n}]; 

    For[i = n, i ≥ 1, \(i--\), 
      x[[i]] = \(b[[i]] - 
            ∑\+\(k = i + 1\)\%n A[[i, k
                  ]] 
                x[[k]]\)\/A
            [[i, i]]]\)x

Mathematica incorpora el comando LinearSolve para resolver sistemas lineales. Comprobemos la solución.

\(A = {{1. , 2. , 3. , 4. }, {2. , 20. , 18. , 16. }, {3. , 18. , 19. , 
          21. }, {4. , 16. , 21. , 33. }}; 
b = {4. , 6. , 8. , 2. }; 


    LinearSolve[A, b]\)

Método de Gauss-Jordan

Si al triangular por Gauss se hacen ceros encima de la diagonal al mismo tiempo que debajo de la diagonal queda un sistema diagonal y para resolverlo se despeja en cada ecuación la incógnita correspondiente. Esta modificación se conoce como método de Gauss-Jordan.

Volvamos a resolver el ejemplo precedente.

\(A = {{1. , 2. , 3. , 4. }, {2. , 20. , 18. , 16. }, {3. , 18. , 19. , 
          21. }, {4. , 16. , 21. , 33. }}; 

b = {4. , 6. , 8. , 2. }; \)

LinearSolve[A, b]

\(n = \(Dimensions[A]\)[\([1]\)]; 
x = Table[0, {i, n}]; \)

\(For[i = 1, i ≤ n, \(i++\), 
      For[j = i + 1, j ≤ n, \(j++\), 
        pivote = \(-A[\([j, i]\)]\)/A[\([i, i]\)]; 
        
A[\([j]\)] = A[\([j]\)] + pivote*A[\([i]\)]; 
        
b[\([j]\)] = b[\([j]\)] + pivote*b[\([i]\)]]; 
	
      
For[j = 1, j ≤ i - 1, \(j++\), 
        pivote = \(-A[\([j, i]\)]\)/A[\([i, i]\)]; 
        
A[\([j]\)] = A[\([j]\)] + pivote*A[\([i]\)]; 
        
b[\([j]\)] = b[\([j]\)] + pivote*b[\([i]\)]]]

    \)\(For[i = 1, i ≤ n, \(i++\), 
      x[\([i]\)] = b[\([i]\)]/A[\([i, i]\)]]; 

x\)

MatrixForm[A]

Ejercicios

1.- Programe la resolución de un sistema triangular inferior.

2.- Aplíquelo a la resolución del sistema cuya matriz de coeficientes y vector
de términos independientes son
		A={{d1+1,0,0,0},{d1,d2+1,0,0},{d2,d1,d3+1,0},{d1,d2,d3,d4+1}}
y
		b={dm,ds,5,d4}.

3.- Resuelva por Gauss, con el programa dado en esta práctica, un sistema lineal, cuya matriz de coeficientes y vector de términos independientes son, respectivamente,
		a1={{10,d1,d2,d3},{d1,-5,4,d2,d4},{d2,d3,10,d4},{dm,dm,dm,25,4}}
y
		b1={1,12.1,13.2,573}.
      Compruebe que se obtiene el mismo resultado usando LinearSolve. Calcule a mano la primera etapa del método de Gauss, es decir, la que consiste en hacer cero los coeficientes de la primera incógnita para las ecuaciones segunda, tercera y cuarta.