Sistemas Lineares
Documentação das funções do módulo codigos.sistemaslineares para montagem e
resolução de sistemas lineares (Eliminação de Gauss, Pivotamento, Decomposição LU,
forward/backward solves e cálculo de residuo).
Documentação
As funções listadas abaixo implementam métodos clássicos para resolver sistemas
lineares e utilitários de inspeção/depuração. Estão escritas para aceitar e
retornar objetos do tipo numpy.ndarray.
- codigos.sistemaslineares.montar_sistema_valores()[código-fonte]
Lê interativamente os coeficientes de um sistema linear quadrado.
Solicita ao usuário o número de variáveis
n, em seguida lênlinhas comncoeficientes cada e um vetorbcomntermos. Faz validações simples de comprimento e converte paranumpy.ndarray.- Retorna:
A (np.ndarray) – Matriz dos coeficientes (n x n).
b (np.ndarray) – Vetor dos termos independentes (n,).
vars (list) – Lista de nomes das variáveis (ex.: [‘x1’,’x2’, …]).
Notas
Em ambientes não interativos (por exemplo, testes), se houver um EOF na leitura, a função retorna
Nonepara indicar que a leitura não foi completada, evitando a interrupção do programa.
- Levanta:
ValueError – Se o número de elementos fornecidos por linha não corresponder a
n.
- codigos.sistemaslineares.eliminacao_gauss_sem_pivotamento(A, b, verbose=False)[código-fonte]
Executa a eliminação de Gauss sem pivotamento parcial.
Triangulariza a matriz
Ae aplica substituição regressiva para obter a soluçãox. Esta versão não realiza trocas de linha, por isso pode falhar para matrizes que exigem pivotamento.- Parâmetros:
A (array_like, shape (n, n)) – Matriz dos coeficientes do sistema linear.
b (array_like, shape (n,)) – Vetor dos termos independentes.
verbose (bool, optional) – Se True, imprime os passos da eliminação; se False, executa silenciosamente (default: False).
- Retorna:
(x, A_triangular, b_modificado, erro_flag)ondexé o vetor solução (ouNoneem caso de falha),A_triangularé a matriz A após eliminação eb_modificadoo vetor b modificado.erro_flagéFalseem execução bem-sucedida ouTrueem caso de erro.- Tipo de retorno:
tuple
- codigos.sistemaslineares.eliminacao_gauss_com_pivotamento(A, b, verbose=False)[código-fonte]
Executa a eliminação de Gauss com pivotamento parcial.
Triangulariza a matriz
Acom trocas de linha para escolher o melhor pivô, e aplica substituição regressiva para obter a soluçãox.- Parâmetros:
A (array_like, shape (n, n)) – Matriz dos coeficientes do sistema linear.
b (array_like, shape (n,)) – Vetor dos termos independentes.
verbose (bool, optional) – Se True, imprime os passos da eliminação; se False, executa silenciosamente (default: False).
- Retorna:
(x, A_triangular, b_modificado, erro_flag)ondexé o vetor solução (ouNoneem caso de falha),A_triangularé a matriz A após eliminação eb_modificadoo vetor b modificado.erro_flagéFalseem execução bem-sucedida ouTrueem caso de erro.- Tipo de retorno:
tuple
- codigos.sistemaslineares.lu_sem_pivot(A, b, verbose=False)[código-fonte]
Decomposição LU sem pivotamento.
Calcula matrizes
L(inferior) eU(superior) tais queA = L @ Uquando possível. Não realiza pivotamento; um pivô zero provoca exceçãoZeroDivisionError.- Parâmetros:
A (array_like, shape (n, n)) – Matriz a ser decomposta.
b (array_like) – (opcional) vetor usado apenas para exibição durante passos (pode ser
Nonequando não for necessário).verbose (bool, optional) – Se True, imprime os passos da decomposição; se False, executa silenciosamente (default: False).
- Retorna:
L, U – Matrizes inferior e superior da decomposição LU.
- Tipo de retorno:
np.ndarray
- codigos.sistemaslineares.lu_com_pivot(A, b, verbose=False)[código-fonte]
Decomposição LU com pivotamento parcial.
Retorna a tripla
P, L, Utal queP @ A = L @ U.- Parâmetros:
A (array_like, shape (n, n)) – Matriz a ser decomposta.
b (array_like) – (opcional) vetor usado apenas para exibição durante passos.
verbose (bool, optional) – Se True, imprime os passos da decomposição; se False, executa silenciosamente (default: False).
- Retorna:
P, L, U –
Pmatriz de permutação,Linferior,Usuperior.- Tipo de retorno:
np.ndarray
- codigos.sistemaslineares.forward_solve(L, b)[código-fonte]
Resolve o sistema triangular inferior L y = b por substituição progressiva.
- Parâmetros:
L (array_like, shape (n, n)) – Matriz triangular inferior (diagonal não-nula esperada).
b (array_like, shape (n,)) – Vetor de termos independentes.
- Retorna:
y – Solução do sistema triangular inferior.
- Tipo de retorno:
np.ndarray
- codigos.sistemaslineares.backward_solve(U, y)[código-fonte]
Resolve o sistema triangular superior U x = y por substituição regressiva.
- Parâmetros:
U (array_like, shape (n, n)) – Matriz triangular superior.
y (array_like, shape (n,)) – Vetor do lado direito (resultado da forward_solve).
- Retorna:
x – Solução do sistema triangular superior.
- Tipo de retorno:
np.ndarray
- codigos.sistemaslineares.calcular_residuo(A, x, b)[código-fonte]
Calcula o resíduo r = b - A x.
- Parâmetros:
A (array_like) – Matriz dos coeficientes.
x (array_like) – Solução candidata do sistema.
b (array_like) – Vetor do lado direito.
- Retorna:
r – Vetor resíduo (b - A x).
- Tipo de retorno:
np.ndarray
- codigos.sistemaslineares.exibir_residuo_detalhado(A, x, b)[código-fonte]
Exibe detalhadamente as matrizes A, x, b e o resíduo r = b - A x.
Útil para depuração e apresentação passo a passo da solução do sistema.
Exemplo de Uso
1"""Exemplo: resolver sistema linear via LU e verificações."""
2
3import numpy as np
4from codigos import sistemaslineares as sl
5
6
7if __name__ == '__main__':
8 A = np.array([[4.0, 3.0], [6.0, 3.0]])
9 b = np.array([10.0, 12.0])
10 P, L, U = sl.lu_com_pivot(A, np.zeros(2))
11 b_mod = P @ b
12 y = sl.forward_solve(L, b_mod)
13 x = sl.backward_solve(U, y)
14 print("Solução encontrada:", x)
15 print("Resíduo:", sl.calcular_residuo(A, x, b))
Testes de Integração
Coberto pelos seguintes testes:
Teste global:
pytest -q(roda todos os testes do projeto)Teste de calcnum:
pytest tests/test_inputs_calcnum.py::test_calcnum_inputs_basic -q(valida integração via menu principal)Teste individual:
pytest tests/test_sistemaslineares.py -v(testes específicos do módulo)
Teste correspondente: tests/inputs/inputSistemas.txt
Testes Unitários (visíveis)
Links rápidos
Teste de integração relacionado:
tests/test_inputs_calcnum.py::test_calcnum_inputs_basicTestes unitários (arquivo):
tests/test_sistemaslineares.pyPágina de testes (docs): Testes: test_sistemaslineares