O cálculo do determinante de matrizes quadradas pode ser feito usando o método de Eliminação de Gauss.
Elabore um código no Scilab que dada uma matriz quadrada, calcule o seu determinante (cole o código na resposta). Faça o programa de tal forma que ele exiba a matriz final de cada etapa do método e por fim o resultado do determinante;
Elabore um código no Scilab que dada uma matriz quadrada, calcule o seu determinante (cole o código na resposta). Faça o programa de tal forma que ele exiba a matriz final de cada etapa do método e por fim o resultado do determinante;
Passo 1
Beleza, recapeando: o exercício pede pra gente criar um script em Scilab que, dada uma matriz quadrada, calcule o determinante usando Eliminação de Gauss. Além disso, o programa deve mostrar a matriz resultante após cada etapa de eliminação e, no final, imprimir o valor do determinante.
Conteúdo: método de Eliminação de Gauss e propriedades de determinante (troca de linhas muda sinal, matriz triangular → produto da diagonal).
Conteúdo: método de Eliminação de Gauss e propriedades de determinante (troca de linhas muda sinal, matriz triangular → produto da diagonal).
Passo 2
Vamos lembrar a teoria:
- Ao usar Eliminação de Gauss, você transforma a matriz em forma triangular superior aplicando operações de linha do tipo “linha i ← linha i – fator·linha k”.
- Essas operações de subtração não alteram o valor do determinante.
- Se você precisar trocar duas linhas para evitar um pivô zero, isso multiplica o determinante por –1.
- No fim, com a matriz em triangular superior, o determinante é simplesmente o produto dos elementos da diagonal. Se fizemos trocas, a gente ajusta o sinal.
Passo 3
Algoritmo passo a passo:
- Ler a matriz A e pegar seu tamanho n×n.
- Inicializar uma variável detSinal = 1 (vai virar –1 toda vez que trocarmos de linha).
- Para cada pivô k = 1 até n–1:
a) Se A(k,k) = 0, procurar abaixo uma linha i > k com A(i,k) ≠ 0. Se achar, trocar linha k com linha i e fazer detSinal = –detSinal. Exibir a matriz.
b) Usar o pivô A(k,k) para eliminar todos os elementos A(i,k) com i>k: calcular fator = A(i,k)/A(k,k) e fazer A(i,k:n) = A(i,k:n) – fator·A(k,k:n). Depois de cada coluna eliminada, exibir a matriz. - No final, o determinante é detSinal · ∏_{i=1}^n A(i,i). Exibir esse valor.
Resposta
function detA = detGauss(A)
// Obtém tamanho
[n, m] = size(A);
if n <> m then
error("A deve ser quadrada");
end
detSinal = 1;
// Eliminação de Gauss
for k = 1:n-1
// 1) Lidar com pivô zero
if A(k,k) == 0 then
for i = k+1:n
if A(i,k) <> 0 then
// troca linhas k e i
A([k i], :) = A([i k], :);
detSinal = -detSinal;
mprintf("Após trocar linhas %d e %d:\n", k, i);
disp(A);
break;
end
end
end
// 2) Eliminação abaixo do pivô
pivô = A(k,k);
for i = k+1:n
fator = A(i,k) / pivô;
A(i, k:n) = A(i, k:n) - fator * A(k, k:n);
end
mprintf("Após eliminar coluna %d:\n", k);
disp(A);
end
// 3) Calcula determinante como produto da diagonal ajustado pelo sinal
detA = detSinal * prod(diag(A));
mprintf("Determinante = %f\n", detA);
endfunction
// Exemplo de uso:
// A = [2 1 3; 4 5 6; 7 8 9];
// detGauss(A);