A Eliminação Gaussiana, também conhecida como Método de Eliminação ou Método de Eliminação de Gauss, é uma técnica fundamental para resolver sistemas de equações lineares. Consiste em aplicar uma série de operações elementares (operações em linha) em um sistema de equações para transformá-lo em uma matriz aumentada escalonada (ou triangular), onde as soluções podem ser facilmente determinadas.




Operações elementares em linhas
Trocar duas linhas.
Multiplicar uma linha por um escalar diferente de zero.
Descartar linha de zeros.
Adicionar um múltiplo de uma linha a outra linha, e fazer uma combinação linear.


Transformação de um sistema linear em uma matriz escalonada

$$\begin{matrix} \small \color{black} Sistema \to \begin{cases} 2x – y + 3z = 9\\ x – 3y – 2z = 0\\ 3x + 2y – z = -1 \end{cases}\\ \color{black} \downarrow\\ \small \color{black} \begin{matrix}Matriz\\Aumentada \end{matrix} \to \begin{bmatrix} 2&-1&3&:\ \ \ 9\\1&-3&-2&:\ \ \ 0\\3&2&-1&:-1 \end{bmatrix}\\ \color{black} \downarrow\\ \small \color{black} \begin{matrix}Matriz\\Escalonada \end{matrix} \to \begin{bmatrix} 1&-3&-2&:\quad\ 0\\ 0&5&7&:\quad\ 9\\ 0&0&-10&:-21 \end{bmatrix} \end{matrix}$$


Processo de transformação de um sistema linear em uma matriz escalonada


Dado o sistema $\begin{cases} x+y+z=25\quad \\ 5x+3y+2z=0\\ y-z=6\qquad \quad \end{cases}$, determine os valores de $x$, $y$ e $z$.


1º Passo: Transformar o sistema em uma Matriz Aumentada.

$$\begin{matrix} \begin{cases} x+y+z=25\quad \\ 5x+3y+2z=0\\ y-z=6\qquad \quad \end{cases}\\ \Downarrow\\ \begin{vmatrix} 1&1&1&:&25\\5&3&2&:&0\\0&1&-1&:&6 \end{vmatrix} \end{matrix}$$

  • A primeira coluna da matriz aumentada contém os valores da incógnita $x$, a segunda coluna contém os valores de $y$, a terceira, de $z$, e a última coluna contém os resultados das equações do sistema.

2º Passo: Identificar o Pivô

  • Cada Linha terá um pivô, que ocupará a posição dentro da Diagonal Principal. Para a primeira linha, ele será o elemento mais a esquerda da linha.

O primeiro pivô não pode ser zero: Caso o elemento mais a esquerda seja um zero, é necessário realizar uma troca de linha.

$$\large \begin{matrix} \color{#d43b2d}Diagonal\ Principal\\ \begin{vmatrix} \colorbox{#d43b2d}{1} \quad 1\quad \ 1\ :\colorbox{}25\\ 5\quad \colorbox{#d43b2d}{3}\quad 2\ :\colorbox{}0\\0\quad 1\ \ \ \colorbox{#d43b2d}{-1}\ :\colorbox{}6 \end{vmatrix}\\ \\ \color{magenta}1º\ Pivô\\ \begin{vmatrix} \colorbox{magenta}{1}\quad 1\quad 1\ :\colorbox{}25\\ \ 5\quad \colorbox{}3\quad 2\ :\colorbox{}0\\ \ 0\quad 1\ \ \ \colorbox{}-1\ :\colorbox{}6 \end{vmatrix} \begin{matrix} \to 1ª\ linha: L_{1}\\ \to 2ª\ linha: L_{2}\\ \to 3ª\ linha: L_{3} \end{matrix} \end{matrix}$$


3º Passo: Pivotamento ou Escalonamento -> Aplicar Operações Elementares para transformar a matriz em uma Matriz Escalonada.

  1. Transformar os elementos embaixo do 1º pivô, na 2ª e 3ª, em 0.
    • Para isso, toda a 2ª linha será sujeita à operação $\color{Goldenrod} L_{2} – 5 \cdot L_{1}\ \to\ L_{2}$.
    • A 3ª linha será sujeita à operação $\color{Goldenrod} L_{3} + \dfrac{L_{2}}{2}\ \to\ L_{3}$.
  • 2ª Linha

$$\begin{matrix} \begin{vmatrix} 1\ \ \ \ 1\quad1\ :\ 25\\5\quad3\quad2\ :\ \ \ 0\\0\quad1\ {-1}\ :\ \ \ 6 \end{vmatrix} \begin{matrix} \ \ \to \scriptsize \color{Goldenrod} L_{2}-5 \cdot L_{1} \color{white} \to\\ \ \ \end{matrix}\ \scriptsize \color{Goldenrod} \begin{matrix} 5-5\cdot 1=0\qquad \ \\ 3-5\cdot 1=-2\quad \ \ \\ 2-5\cdot 1=-3\quad\ \ \\ 0-5\cdot 25=-125 \ \end{matrix} \normalsize \color{white}\\ \normalsize \downarrow\\ \begin{vmatrix} 1\quad 1\quad 1:\quad\ 25\\ 0\ {-2}\ {-3}:{-125}\\0\quad 1\ {-1}:\quad\ \ \ 6\end{vmatrix} \end{matrix}$$


  • 3ª Linha

$$\begin{matrix} \begin{vmatrix} 1\quad 1\quad 1:\quad\ 25\\ 0\ {-2}\ {-3}:{-125}\\0\quad 1\ {-1}:\quad\ \ \ 6\end{vmatrix} \begin{matrix} \ \ \ \ \to \scriptsize \color{Goldenrod} L_{3}+\dfrac{L_{2}}{2} \color{white} \to\\ \ \ \end{matrix}\ \scriptsize \color{Goldenrod} \begin{matrix} 0+\dfrac{0}{2}=0\qquad \ \\ 1+\dfrac{-2}{2}=0\quad \ \ \\ -1+\dfrac{-3}{2}=-2.5\quad\ \ \\ 6+\dfrac{-125}{2}=-56.5 \ \end{matrix} \normalsize \color{white}\\ \normalsize \downarrow\\ \begin{vmatrix} 1\quad 1\quad 1\ \ \ :\quad\ \ 25\\ 0\ {-2}\ {-3}\ \ \ :\ {-125}\\0\quad0\ {-2.5}: -56.5 \end{vmatrix} \end{matrix}$$


  • Após essa etapa, tendo definido o 2º e 3º pivôs, encontramos a Matriz Escalonada.

$$\begin{matrix} \large \color{#c70452}2º\ e\ 3º\ Pivôs\\ \begin{vmatrix} 1\quad 1\quad 1\ \ \ :\quad\ \ 25\\ 0\ {\colorbox{#c70452}{-2}}\ {-3}\ \ \ :\ {-125}\\0\quad0\ {\colorbox{#c70452}{-2.5}}: -56.5 \end{vmatrix}\\ \downarrow\\ \large \color{green} Matriz\ Escalonada\\ \begin{vmatrix} \colorbox{green}{1}\ \ \colorbox{green}{1}\ \ \colorbox{green}{1}:\ \ \ \ \colorbox{green}{25}\\ 0\ {\colorbox{green}{-2}}\ \ {\colorbox{green}{-3}} :\ {\colorbox{green}{-125}}\\0\ \ 0\ {\colorbox{green}{-2.5}} : \colorbox{green}{-56.5} \end{vmatrix} \end{matrix}$$



4º Passo: Substituir os valores originais do sistema pelos valores encontrados da Matriz Escalonada.

$\begin{matrix} \begin{cases} x+y+z=25\quad \\ 5x+3y+2z=0\\ y-z=6\qquad \quad \end{cases} \Longleftrightarrow \begin{vmatrix} 1\quad 1\quad 1\ \ \ :\quad\ \ 25\\ 0\ {-2}\ {-3}\ \ \ :\ {-125}\\0\quad 0\ {-2.5}: -56.5 \end{vmatrix}\\ \downarrow\\ \begin{cases} x+y+z=25\qquad\\ \quad\ -2y-3z=-125 \qquad \\ {-2.5z}={-56.5} \qquad \quad \end{cases} \end{matrix}$


5º Passo: Tendo encontrado a matriz triangular e substituído os valores no sistema, agora, usa-se uma das fórmulas para resolver sistemas lineares: Método da Eliminação, Método da Substituição, [[Regra de Cramer]], etc. Para essa tarefa será utilizada o Método de Substituição, resolvendo as incógnitas da última equação à primeira, de baixo para cima.

$$\begin{matrix} \large \color{white} \begin{cases} x+y+z=25\\-2y-3z=-125\\ \color{sandybrown} {-2.5z}={-56.5} \end{cases}\\ \downarrow\\ \color{sandybrown} {-2.5z}={-56.5}\ \color{white} \to \color{yellow}z \color{white}= \dfrac{-56.5}{-2.5} = \color{yellow}22.6 \end{matrix}$$

$$\begin{matrix} \large \color{white} \begin{cases} x+y+z=25\\ \color{sandybrown} {-2y-3z=-125}\\ {-2.5z}={-56.5} \end{cases}\\ \downarrow\\ \color{sandybrown} -2y – 3 \cdot 22.6 = -125 \color{white} \to \color{yellow} y \color{white}= \dfrac{-57.2}{-2} = \color{yellow}28.6 \end{matrix}$$

$$\begin{matrix} \large \color{white} \begin{cases} \color{sandybrown} {x+y+z=25} \\ -2y-3z=-125\\ {-2.5z}={-56.5} \end{cases}\\ \downarrow\\ \color{sandybrown} {x-28.6 + 22.6 = 25}\\ \downarrow\\ \ \color{yellow}x \color{white}= 25-51.2 = \color{yellow}-26.2 \end{matrix}$$


Resultado:

$$\large \color{lime} x=-26.2 \quad y=28.6 \quad z=22.6$$


Para confirmar se os valores encontrados estão corretos, podemos substituir as incógnitas no sistema e verificar se os resultados conferem:

$\large \begin{matrix} \begin{cases} x+y+z=25\\ 5x+3y+2z=0\\ y-z=6\end{cases}\\ \downarrow\\ \begin{cases} -26.2+28.6+22.6=\color{salmon}25\\ 5 \cdot (-26.2)+3 \cdot 28.6+2 \cdot 22.6=\color{salmon}0\\ 28.6-22.6=\color{salmon}6 \end{cases} \end{matrix}$

Os resultados confirmam os valores encontrados das incógnitas.


 

Python

''' Em Python, é importante que os números sejam colocados como floats na matriz do Numpy, caso contrário, pode ocorrer erros de precisão nas operações de divisão'''

import numpy as np

def eliminacao_gauss(A, b):
    n = len(b)
    x = np.zeros(n)
    # Primeira etapa: transformar sistema na forma triangular
    for i in range(n-1):
        for j in range(i+1, n):
            m = A[j,i] / A[i,i]
            for k in range(i, n):
                A[j, k] = A[j, k] - A[i, k] * m
            b[j] = b[j] - m * b[i]
    # Segunda etapa: resolver sistema triangular de equações
    # Percorre colunas de trás para frente
    for j in range(n-1, -1, -1):
        x[j] = b[j] / A[j, j]
        # Percorre coluna de baixo para cima
        for i in range(j-1, -1, -1):
            b[i] = b[i] - A[i, j] * x[j]
    return x

A = np.matrix([[1.0, 1.0, 1.0], [5.0, 3.0, 2.0], [0.0, 1.0, -1.0]])
b = np.array([25.0, 0.0, 6.0])
print(eliminacao_gauss(A, b))

Julia

# Função de Julia que calcula a eliminação gaussiana
A = [1 1 1; 5 3 2; 0 1 -1]
b = [25, 0, 6]

eliminacao_gauss = A \ b

println(round.(eliminacao_gauss, digits=2))

# RESPOSTA [-26.2, 28.6, 22.6]

# Código semelhante à função em Python, que realiza todo o processo matemático descrito acima

""" Assim com em Python, em Julia também é necessário que os elementos das matrizes e vetores sejam floats, por isso, usa-se a funão Any antes das matrizes e vetores """

function eliminacao_gauss(A, b)
    n = length(b)
    x = zeros(n)
    # Primeira etapa: transformar sistema na forma triangular
    for i in 1:n-1
        for j in i+1:n
            m = A[j, i]/A[i, i]
            for k in i:n
                A[j, k] = A[j, k] - m*A[i, k]
            end
            b[j] = b[j] - m*b[i]
        end
    end
    # Segunda etapa: resolver sistema triangular de equações
    # Percorre colunas de trás para frente
    for j in n:-1:1
        x[j] = b[j]/A[j, j]
        # Percorre coluna de baixo para cima
        for i in j-1:-1:1
            b[i] = b[i] - A[i, j]*x[j]
        end
    end
    return x
end

eliminacao_gauss(Any[1 1 1; 5 3 2; 0 1 -1], Any[25, 0, 6])

 Libs:

Linguagem Biblioteca Função
Python Numpy numpy.linalg.solve(A, b)
A: matriz dos coeficientes | b: vetor com os resultados
Scipy scipy.linalg.solve(A, b)
A: matriz dos coeficientes | b: vetor com os resultados
Simpy x,y,z = sympy.symbols('x,y,x')
simpy.linsolve(A, [x, y, z )
A: sympy.Matrix([[matriz dos coeficientes e resutados]])