Escrever em Scilab uma função que dada uma matriz quadrada An times n calcula o determinante de A (sem usar o det(A) do Scilab!!)
A ideia é proceder como no exercício da lista: usar a fórmula dos cofatores para cálculo de determinante chamando a função de forma recursiva.
Para isso você irá dividir em 2 casos: se n=1, o determinante será a própria matriz do dado de entrada. Se n>1, você irá computar a fórmula
Det(A)=sumj=1^n(-1)^1+j a1 j Det(Aj),
onde Aj é o determinante (computado pela própria função) da matriz quadrada de tamanho n-1 times n-1 obtida de A tirando-se a linha 1 e a coluna j.

Passo 1

Beleza, vamos resumir o que o exercício pede. A gente precisa escrever em Scilab uma função que calcula o determinante de uma matriz quadrada det(A)=sumj=1^n(-1)^1+j,a1j,det(Aj) sem usar a função pronta det(A). O conteúdo aqui é recursão e a fórmula de cofactores (menores). Pra resolver, vamos precisar:
  • Entender o caso base (quando ).
  • Saber construir a matriz menor (tirar a linha 1 e a coluna j).
  • Aplicar a fórmula de expansão por cofactores:

Passo 2

Caso base ( ):
Se a matriz tem tamanho 1×1, o determinante é simplesmente o único elemento dela.
Ou seja, se , então .
Isso evita entrar em recursão infinita.

Passo 3

Caso geral ( ):
  1. A gente inicializa um acumulador detA = 0.
  2. Faz um laço for j = 1:n para percorrer as colunas da primeira linha.
  3. Em cada passo, monta a submatriz de tamanho , tirando a linha 1 e a coluna j.
    • Em Scilab, isso dá algo como
      idx = 1:n;
      idx(j) = [];               // tira o índice j
      subA = A(2:$, idx);        // pega da linha 2 até o fim, só nas colunas idx
      
  4. Calcula o cofactor:
    , onde mydet é a própria função recursiva.
  5. Soma esse valor em detA.

Passo 4

Juntando tudo, a função em Scilab fica assim (com nome mydet):
function detA = mydet(A)
  [n, m] = size(A);
  if n <> m then
    error("Matriz tem que ser quadrada!");
  end

  // Caso base
  if n == 1 then
    detA = A(1,1);
    return;
  end

  // Caso recursivo
  detA = 0;
  for j = 1:n
    // monta submatriz A_j
    idx = 1:n;
    idx(j) = [];
    subA = A(2:$, idx);

    // soma o cofactor
    cofactor = (-1)^(1+j) * A(1,j) * mydet(subA);
    detA = detA + cofactor;
  end
endfunction

Resposta

A função mydet acima implementa recursivamente a fórmula de cofactores em Scilab para calcular o determinante de uma matriz quadrada, sem usar det(A).

Exercícios relacionados