Conteúdos da cadeira

Sistemas de equações lineares e método de Gauss

Escrever sistemas como AX = B, eliminar por Gauss, classificar pela característica e resolver um sistema 3x3.

Markdown

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver pergunta para copiar
Nesta página

Um sistema de equações lineares é o problema mais concreto da cadeira: várias equações do primeiro grau nas mesmas incógnitas, para resolver em simultâneo. O método de Gauss resolve qualquer sistema destes de forma mecânica, e a leitura correta do resultado final diz-te se há uma solução, infinitas ou nenhuma.

Do sistema à matriz

Um sistema de mm equações a nn incógnitas escreve-se como

{a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2am1x1+am2x2++amnxn=bm\begin{cases} a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n = b_1 \\ a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n = b_2 \\ \vdots \\ a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n = b_m \end{cases}

e condensa-se na forma matricial AX=BAX = B, onde AA é a matriz dos coeficientes (m×nm \times n), XX é a coluna das incógnitas e BB é a coluna dos termos independentes. Para trabalhar, juntamos as duas na matriz ampliada [AB][A \mid B], que é onde o método de Gauss atua.

Exemplo com três equações e três incógnitas:

{x+y+z=62xy+z=3x+2yz=2[AB]=[111621131212].\begin{cases} x + y + z = 6 \\ 2x - y + z = 3 \\ x + 2y - z = 2 \end{cases} \qquad [A \mid B] = \begin{bmatrix} 1 & 1 & 1 & \mid & 6 \\ 2 & -1 & 1 & \mid & 3 \\ 1 & 2 & -1 & \mid & 2 \end{bmatrix}.

Resolver o sistema é encontrar todos os (x,y,z)(x, y, z) que satisfazem as três equações ao mesmo tempo.

O método de Gauss

A ideia é transformar a matriz ampliada noutra equivalente (com as mesmas soluções) mas em escada de linhas: cada linha não nula começa com um 1 (o pivô), cada pivô está à direita do pivô da linha anterior e as linhas nulas ficam em baixo. Só podes usar três operações elementares, porque são as únicas que preservam o conjunto das soluções:

  1. trocar duas linhas;
  2. multiplicar uma linha por um escalar não nulo;
  3. somar a uma linha um múltiplo de outra linha.

Vamos eliminar no exemplo. Subtraímos o dobro da linha 1 à linha 2 e a linha 1 à linha 3:

[111603190124].\begin{bmatrix} 1 & 1 & 1 & \mid & 6 \\ 0 & -3 & -1 & \mid & -9 \\ 0 & 1 & -2 & \mid & -4 \end{bmatrix}.

Trocamos as linhas 2 e 3 para ter um pivô mais simples e eliminamos por baixo:

[1116012400721].\begin{bmatrix} 1 & 1 & 1 & \mid & 6 \\ 0 & 1 & -2 & \mid & -4 \\ 0 & 0 & -7 & \mid & -21 \end{bmatrix}.

A última linha diz 7z=21-7z = -21, logo z=3z = 3. Subindo: y23=4y - 2 \cdot 3 = -4, logo y=2y = 2; e x+2+3=6x + 2 + 3 = 6, logo x=1x = 1. A solução é (x,y,z)=(1,2,3)(x, y, z) = (1, 2, 3), que podes confirmar por substituição direta nas três equações originais.

Característica e classificação

A característica de uma matriz, car(A)\operatorname{car}(A), é o número de linhas não nulas da sua forma em escada, ou seja, o número de pivôs. Para classificar um sistema, compara-se a característica da matriz dos coeficientes com a da matriz ampliada:

  • se car(A)=car([AB])=n\operatorname{car}(A) = \operatorname{car}([A \mid B]) = n (número de incógnitas), o sistema é possível e determinado: tem exatamente uma solução;
  • se car(A)=car([AB])<n\operatorname{car}(A) = \operatorname{car}([A \mid B]) < n, o sistema é possível e indeterminado: tem infinitas soluções, com ncar(A)n - \operatorname{car}(A) variáveis livres;
  • se car(A)<car([AB])\operatorname{car}(A) < \operatorname{car}([A \mid B]), o sistema é impossível: não tem solução.

No exemplo, ambas as características valem 3, igual ao número de incógnitas: sistema possível e determinado, como a solução única confirmou.

Dois casos pequenos para fixar a leitura. O sistema x+y=1x + y = 1 com 2x+2y=22x + 2y = 2 tem ampliada [111000]\begin{bmatrix} 1 & 1 & \mid & 1 \\ 0 & 0 & \mid & 0 \end{bmatrix}: característica 1 de ambos os lados, uma variável livre, infinitas soluções da forma (1t,t)(1 - t, t). Já x+y=1x + y = 1 com x+y=2x + y = 2[111001]\begin{bmatrix} 1 & 1 & \mid & 1 \\ 0 & 0 & \mid & 1 \end{bmatrix}: a segunda linha lê-se 0=10 = 1, impossível. Uma linha [0    0        0b][0 \;\; 0 \;\; \dots \;\; 0 \mid b] com b0b \neq 0 é sempre o sinal de impossibilidade.

Um sistema com B=0B = 0 diz-se homogéneo. Nunca é impossível, porque (0,0,,0)(0, 0, \dots, 0) resolve-o sempre (a solução trivial). Tem outras soluções além da trivial exatamente quando car(A)<n\operatorname{car}(A) < n. Em particular, um sistema homogéneo com mais incógnitas do que equações tem sempre soluções não triviais.

Verificar com um programa

O programa seguinte aplica eliminação de Gauss com pivotagem parcial ao exemplo desta página e imprime a solução. Corre-o e confirma que obténs (1,2,3)(1, 2, 3); depois muda os coeficientes para um dos teus exercícios e compara com a tua resolução à mão.

Eliminar por Gauss
def gauss(a, b):
    n = len(a)
    m = [row[:] + [val] for row, val in zip(a, b)]
    for col in range(n):
        piv = max(range(col, n), key=lambda r: abs(m[r][col]))
        m[col], m[piv] = m[piv], m[col]
        assert m[col][col] != 0, "sistema sem solucao unica"
        for row in range(n):
            if row != col and m[row][col] != 0:
                f = m[row][col] / m[col][col]
                for k in range(col, n + 1):
                    m[row][k] -= f * m[col][k]
    return [m[i][n] / m[i][i] for i in range(n)]

a = [[1, 1, 1], [2, -1, 1], [1, 2, -1]]
b = [6, 3, 2]
print(gauss(a, b))
Dados de entrada

O que costuma correr mal

  • Fazer operações que não são elementares, como multiplicar duas linhas entre si ou somar a coluna dos termos independentes a uma coluna de coeficientes.
  • Esquecer a coluna BB durante a eliminação, ou aplicá-la só a algumas linhas. Leva-a sempre contigo até ao fim.
  • Declarar um sistema impossível por veres zeros à esquerda sem olhar para a última coluna: [0    00][0 \;\; 0 \mid 0] é uma equação redundante, só [0    0b0][0 \;\; 0 \mid b \neq 0] é contradição.
  • Contar mal as variáveis livres: são ncar(A)n - \operatorname{car}(A), não o número de zeros que vês na matriz.
Ver o ficheiro no GitHub

À tua maneira

Escolhe como preferes ler.

Aparência
Ajustar cores e largura
Cor de destaque do tema FEUP
Tipo de letra

Álgebra, lógica e uma ideia de cada vez.

As tuas escolhas ficam guardadas neste navegador.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.