Métodos de eliminação de Gauss
O método de Gauss é um dos métodos mais familiar pra resolução de sistemas lineares. Ele consiste de 2 partes: Fase de eliminação e Fase de solução.
Fase de eliminação
A fase de eliminação utiliza uma das operações elementares descritas anteriorermente: Multiplicação de uma equação (digamos que seja a equação \(i\)) por um constante \(\lambda\) diferente de zero e subtração por outro linha de equação (equação \(j\)):
\[Eq_{1}\Leftarrow Eq_{1}- \lambda \times Eq_{2}\]Como iremos utilizar o formato de matriz, adotaremos a seguinte representação equivalente:
\[L_{1} = L_{1}- \lambda \times L_{2}\]Exemplo fase de eliminação
Para ilustrar essa fase, vamos utilizar como exemplo a seguinte matriz:
\[ \left[\begin{matrix} 1& -2& -1& 2 \\ -2& 5& 3& -3 \\ -2& 6& 5& -2 \\ 2& -4& -1& 5 \end{matrix} \right. \left| \begin{matrix} 1 \\4 \\ 13 \\7 \end{matrix} \right] \]E já pensando na forma de implementação, iremos decompor o valor de \(\lambda\), como sendo a divisão dos elementos \((i, j)\) da Matriz \(M\) (perceba que o valores \((i, j)\) estão invertidos no numerador, isso foi proposital e será útil na implementação):
\[ \lambda = \frac{M_{ji}}{M_{ii}} \]Acompanhe os passos para resolução:
- \[\left[\begin{matrix} \color{blue}1& -2& -1& 2 \\ \color{red} -2& 5& 3& -3 \\ -2& 6& 5& -2 \\ 2& -4& -1& 5 \end{matrix} \right. \left| \begin{matrix} 1 \\4 \\ 13 \\7 \end{matrix} \right] \begin{matrix} \textrm{ } \\ \Rightarrow L_2= L_2 - \frac{\color{red}M_{21}}{\color{blue}M_{11}} L_1 \left| L_2= L_2 - \frac{\color{red}-2}{\color{blue}1} L_1 \right. \\ \textrm{ } \\ \textrm{ } \end{matrix} \]
- \[ \left[\begin{matrix} \color{blue}1& -2& -1& 2 \\ 0& 1& 1& 1 \\ \color{red}-2& 6& 5& -2 \\ 2& -4& -1& 5 \end{matrix} \right. \left| \begin{matrix} 1 \\6 \\ 13 \\7 \end{matrix} \right] \begin{matrix} \textrm{ } \\ \textrm{ } \\ \Rightarrow L_3= L_3 - \frac{\color{red}M_{31}}{\color{blue}M_{11}} L_1 \left| L_3= L_3 - \frac{\color{red}-2}{\color{blue}1} L_1 \right. \\ \textrm{ } \end{matrix} \]
- \[ \left[\begin{matrix} \color{blue}1& -2& -1& 2 \\ 0& 1& 1& 1 \\ 0& 2& 3& 2 \\ \color{red}2& -4& -1& 5 \end{matrix} \right. \left| \begin{matrix} 1 \\6 \\ 15 \\7 \end{matrix} \right] \begin{matrix} \textrm{ } \\ \textrm{ } \\ \textrm{ } \\ \Rightarrow L_4= L_4 - \frac{\color{red}M_{41}}{\color{blue}M_{11}} L_1 \left| L_4= L_4 - \frac{\color{red}2}{\color{blue}1} L_1 \right. \end{matrix} \]
- \[ \left[\begin{matrix} 1& -2& -1& 2 \\ 0& \color{blue}1& 1& 1 \\ 0& \color{red}2& 3& 2 \\ 0& 0& 1& 1 \end{matrix} \right. \left| \begin{matrix} 1 \\6 \\ 15 \\5 \end{matrix} \right] \begin{matrix} \textrm{ } \\ \textrm{ } \\ \Rightarrow L_3= L_3 - \frac{\color{red}M_{32}}{\color{blue}M_{22}} L_2 \left| L_3= L_3 - \frac{\color{red}2}{\color{blue}1} L_2 \right. \\ \textrm{ } \end{matrix} \]
- \[ \left[\begin{matrix} 1& -2& -1& 2 \\ 0& \color{blue}1& 1& 1 \\ 0& 0& 1& 0 \\ 0& \color{red}0& 1& 1 \end{matrix} \right. \left| \begin{matrix} 1 \\6 \\ 3 \\5 \end{matrix} \right] \begin{matrix} \textrm{ } \\ \textrm{ } \\ \textrm{ } \\ \Rightarrow L_4= L_4 - \frac{\color{red}M_{42}}{\color{blue}M_{22}} L_2 \left| L_4= L_4 - \frac{\color{red}0}{\color{blue}1} L_2 \right. \end{matrix} \]
- \[ \left[\begin{matrix} 1& -2& -1& 2 \\ 0& 1& 1& 1 \\ 0& 0& \color{blue}1& 0 \\ 0& 0& \color{red}1& 1 \end{matrix} \right. \left| \begin{matrix} 1 \\6 \\ 3 \\5 \end{matrix} \right] \begin{matrix} \textrm{ } \\ \textrm{ } \\ \textrm{ }\\ \Rightarrow L_4= L_4 - \frac{\color{red}M_{43}}{\color{blue}M_{33}} L_3 \left| L_4= L_4 - \frac{\color{red}1}{\color{blue}1} L_3 \right. \end{matrix} \]
- \[ \textrm{Matriz equivalente: }\left[\begin{matrix} 1& -2& -1& 2 \\ 0& 1& 1& 1 \\ 0& 0& 1& 0 \\ 0& 0& 0& 1 \end{matrix} \right. \left| \begin{matrix} 1 \\6 \\ 3 \\2 \end{matrix} \right] \]
Resumo dos passos e da operação equivalente em Python (faça uma correlação com a coluna \(i\) e \(j\)):
| Forma simbólica | Código Python | \(i\) | \(j\) |
|---|---|---|---|
| \( \Rightarrow L_2= L_2 - \frac{\color{red}M_{21}}{\color{blue}M_{11}} L_1 \) | eliminar(M, 1, 2) |
\(1\) | \(2\) |
| \( \Rightarrow L_3= L_3 - \frac{\color{red}M_{31}}{\color{blue}M_{11}} L_1 \) | eliminar(M, 1, 3) |
\(1\) | \(3\) |
| \( \Rightarrow L_4= L_4 - \frac{\color{red}M_{41}}{\color{blue}M_{11}} L_1 \) | eliminar(M, 1, 4) |
\(1\) | \(4\) |
| \( \Rightarrow L_3= L_3 - \frac{\color{red}M_{32}}{\color{blue}M_{22}} L_2 \) | eliminar(M, 2, 3) |
\(2\) | \(3\) |
| \( \Rightarrow L_4= L_4 - \frac{\color{red}M_{42}}{\color{blue}M_{22}} L_2 \) | eliminar(M, 2, 4) |
\(2\) | \(4\) |
| \( \Rightarrow L_4= L_4 - \frac{\color{red}M_{43}}{\color{blue}M_{33}} L_3 \) | eliminar(M, 3, 4) |
\(3\) | \(4\) |
Equação genérica
Com base na tabela acima, podemos reescrever a equação de forma genérica:
- Forma matemática:\[L_j= L_j - \frac{M_{ji}}{M_{ii}} L_i\]
- Programação:
M[j] -= (M[j, i] / M[i, i]) * M[i]
Assim, os valores das linhas pivô e alvo podem ser obtidos por dois laços de repetição. Para um sistema linear com 4 incógnitas, ficaria:
import numpy as np
def eliminar(M, i, j):
fator = M[j, i] / M[i, i]
M[j] -= fator * M[i]
dimensao = 4
for i in range(dimensao - 1):
for j in range(i + 1, dimensao):
eliminar(M, i, j)
Atividade 1
Dados os sistemas lineares a seguir, apresente a sequência de operações elementares em Python para transformá-los em sistemas equivalentes de acordo com o método de escalonamento de Gauss:
- \[ \left[\begin{matrix} 2 & -4 & 2 \\ 4 & -6 & 4 \\ 4 & -4 & 6 \end{matrix} \right. \left| \begin{matrix} 2 \\ 10 \\ 24 \end{matrix} \right] \]
- \[ \left[\begin{matrix} 1 & -1 & 0 \\ -2 & 3 & 0 \\ 4 & -6 & 1 \end{matrix} \right. \left| \begin{matrix} 8 \\ -17 \\ 36 \end{matrix} \right] \]
- \[ \left[\begin{matrix} 1 & -1 & 3 & 7 \\ 1 & 0 & 1 & 3 \\ 1 & 1 & 0 & 0 \\ 1 & -1 & 3 & 8 \end{matrix} \right. \left| \begin{matrix} -19 \\ -5 \\ 3 \\ -21 \end{matrix} \right] \]
- \[ \left[\begin{matrix} 2 & -1 & 2 & 6 & -2 \\ -2 & 2 & -3 & -8 & 2 \\ 4 & -4 & 7 & 18 & -5 \\ -6 & 4 & -8 & -20 & 6 \\ 6 & -2 & 6 & 14 & -4 \end{matrix} \right. \left| \begin{matrix} 17 \\ -20 \\ 49 \\ -54 \\ 34 \end{matrix} \right] \]