Implemente a função Cramer(matriz, vetor) que calcule as raízes de um sistema de 3 equações e 3 incógnitas pela Regra de Cramer e retorna a solução na forma de um vetor. Se não houver solução para o sistema, deve imprimir uma mensagem de erro e retornar um vetor vazio ([]). Sua função pode (e deve) chamar a função det(matriz) que retorna o valor do determinante da matriz. Exemplo
Passo 1
Beleza, vamos resolver esse exercício juntos! A gente precisa implementar a função Cramer(matriz, vetor) que vai encontrar as raízes de um sistema de 3 equações com 3 incógnitas usando a Regra de Cramer. A matéria que vamos usar aqui é Álgebra Linear, especificamente o conceito de determinantes e como a Regra de Cramer nos ajuda a resolver sistemas lineares. Para isso, vamos precisar calcular determinantes de matrizes 3x3 e entender como substituir colunas para encontrar as soluções das incógnitas.
Passo 2
Primeiro, vamos entender o que é a Regra de Cramer. Ela é uma técnica que permite resolver sistemas de equações lineares usando determinantes. Para um sistema de 3 equações com 3 incógnitas, a solução pode ser encontrada dividindo o determinante da matriz dos coeficientes pelo determinante da matriz original, mas fazendo substituições específicas para cada incógnita.
Passo 3
Vamos considerar a matriz dos coeficientes e o vetor dos termos independentes:
$$
\cdot
$$
Aqui, são os coeficientes das incógnitas , e são os termos independentes.
Passo 4
Para aplicar a Regra de Cramer, precisamos calcular o determinante da matriz dos coeficientes, que chamaremos de :
Se , o sistema tem uma única solução e podemos encontrar usando:
Onde são os determinantes obtidos ao substituir, respectivamente, a coluna de pelo vetor dos termos independentes.
Passo 5
Vamos detalhar como calcular . Substituímos a primeira coluna da matriz original pelo vetor dos termos independentes:
De maneira similar, fazemos isso para e :
Passo 6
Agora, vamos implementar isso em uma função Cramer(matriz, vetor) em Python. A função vai:
Calcular o determinante da matriz original.
Se , retorna um erro dizendo que não há solução única.
Caso contrário, calcula substituindo as colunas correspondentes.
Calcula as soluções e retorna como um vetor.
Passo 7
Para calcular o determinante de uma matriz 3x3, podemos usar a regra de Sarrus ou a expansão de Laplace. Aqui, vamos usar a regra de Sarrus para simplificar:
Vamos implementar essa fórmula na função det(matriz) que será chamada pela função Cramer.
Passo 8
Aqui está a implementação das funções em Python:
defdet(matriz):
a, b, c = matriz[0]
d, e, f = matriz[1]
g, h, i = matriz[2]
return a*(e*i - f*h) - b*(d*i - f*g) + c*(d*h - e*g)
defCramer(matriz, vetor):
D = det(matriz)
if D == 0:
print("Erro: O sistema não tem solução única.")
return []
# Substituir a coluna de x
matriz_x = [
[vetor[0], matriz[0][1], matriz[0][2]],
[vetor[1], matriz[1][1], matriz[1][2]],
[vetor[2], matriz[2][1], matriz[2][2]]
]
D_x = det(matriz_x)
# Substituir a coluna de y
matriz_y = [
[matriz[0][0], vetor[0], matriz[0][2]],
[matriz[1][0], vetor[1], matriz[1][2]],
[matriz[2][0], vetor[2], matriz[2][2]]
]
D_y = det(matriz_y)
# Substituir a coluna de z
matriz_z = [
[matriz[0][0], matriz[0][1], vetor[0]],
[matriz[1][0], matriz[1][1], vetor[1]],
[matriz[2][0], matriz[2][1], vetor[2]]
]
D_z = det(matriz_z)
x = D_x / D
y = D_y / D
z = D_z / D
return [x, y, z]