Questão 2: Usando o pacote numPy, escreva um programa que calcule a solução de um sistema de equações lineares por meio da regra de Cramer. Seu programa deve iniciar lendo o numero de equações e variáveis, e, logo após, ler as matrizes de entrada do teclado coeficiente a coeficiente. Para o cálculo dos determinantes, você pode utilizar a função escrita no exercício 1, ou a função det do pacote numPy.
Passo 1
O enunciado pede um programa em Python usando o pacote NumPy que leia o número de equações (que deve ser igual ao número de variáveis), depois leia coeficiente a coeficiente a matriz dos coeficientes A e o vetor dos termos independentes b, e que resolva o sistema por regra de Cramer.
Passo 2
Primeiro vamos ler do teclado o tamanho do sistema (número de incógnitas), criar uma matriz A de ordem n×n e um vetor b de dimensão n, preenchendo ambos em loops aninhados com entradas float.
Em seguida calculamos o determinante principal usando np.linalg.det(A). Se o determinante for (praticamente) zero, avisamos que não há solução única.
Em seguida calculamos o determinante principal usando np.linalg.det(A). Se o determinante for (praticamente) zero, avisamos que não há solução única.
Passo 3
Se o determinante for diferente de zero, aplicamos a regra de Cramer: para cada incógnita x_j, copiamos A em A_j, substituímos a coluna j por b, calculamos det(A_j) e obtemos x_j = det(A_j)/det(A).
Por fim imprimimos o vetor solução x, exibindo cada x_i em tela.
Por fim imprimimos o vetor solução x, exibindo cada x_i em tela.
Resposta
import numpy as np
Leitura do número de variáveis (equações)
n = int(input("Digite o número de incógnitas: "))
Leitura da matriz A
A = np.zeros((n, n), dtype=float)
print(“Informe os coeficientes da matriz A:”)
for i in range(n):
for j in range(n):
A[i, j] = float(input(f"A[{i+1},{j+1}]: "))
print(“Informe os coeficientes da matriz A:”)
for i in range(n):
for j in range(n):
A[i, j] = float(input(f"A[{i+1},{j+1}]: "))
Leitura do vetor b
b = np.zeros(n, dtype=float)
print(“Informe os termos independentes do vetor b:”)
for i in range(n):
b[i] = float(input(f"b[{i+1}]: "))
print(“Informe os termos independentes do vetor b:”)
for i in range(n):
b[i] = float(input(f"b[{i+1}]: "))
Cálculo do determinante principal
detA = np.linalg.det(A)
if abs(detA) < 1e-12:
print(“Determinante de A é zero. O sistema não possui solução única.”)
else:
# Aplicação da regra de Cramer
x = np.zeros(n, dtype=float)
for j in range(n):
Aj = A.copy()
Aj[:, j] = b
detAj = np.linalg.det(Aj)
x[j] = detAj / detA
if abs(detA) < 1e-12:
print(“Determinante de A é zero. O sistema não possui solução única.”)
else:
# Aplicação da regra de Cramer
x = np.zeros(n, dtype=float)
for j in range(n):
Aj = A.copy()
Aj[:, j] = b
detAj = np.linalg.det(Aj)
x[j] = detAj / detA
# Impressão da solução
print("Solução do sistema:")
for i in range(n):
print(f"x{i+1} = {x[i]}")