Você está aqui: Java ::: Java para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular o determinante de uma matriz usando o Teorema de Laplace em Java

Quantidade de visualizações: 859 vezes
Como já vimos em dicas anteriores, o determinante de uma matriz de ordem 3 (três linhas e três colunas) pode ser obtido por meio da Regra de Sarrus. No entanto, quando temos matrizes de ordem 4 ou superior, a regra mais comumente aplicada é o Método dos Cofatores, ou Regra de Laplace.

O Método dos Cofatores, ou Expansão de Cofatores, ou ainda Determinante por Laplace, foi um método para o cálculo de determinantes inventado por Pierre Laplace.

Nesta dica mostrarei um código Java completo para calcular o determinante de uma matriz de ordem 3 usando expansão de cofatores. Note que a função calcularDeterminante() é uma função recursiva cujo caso base é a redução da matriz original em apenas uma linha e uma coluna.

Veja o código completo:

package estudos;

public class Estudos {
  public static void main(String[] args){
    // vamos definir a ordem da matriz
    int ordem = 3; // 3 linhas e 3 colunas
    
    // e agora criamos a matriz. Podemos definir os elementos
    // diretamente ou pedir para o usuário informar os valores
    int matriz[][] = {{1, 3, 0}, {0, 2, 5}, {2, 4, 4}};
 
    // mostramos a matriz completa
    System.out.println("A matriz é:\n");
    
    for (int i = 0; i < ordem; i++) {
      for (int j = 0; j < ordem; j++){
        System.out.printf("%5d", matriz[i][j]);
      }
      System.out.print("\n");
    }
    
    // vamos calcular o determinante usando o Teorema de Laplace
    int determinante = calcularDeterminante(matriz, ordem);
    
    // e mostramos o resultado
    System.out.println("\nO determinante da matriz é: " + determinante);  
  } 
 
  // função recursiva que encontra e retorna o determinante de uma
  // matriz de qualquer ordem
  public static int calcularDeterminante(int matriz[][], int ordem){
    int determinante = 0; // para guardar e retornar o determinante
    // matriz de cofatores
    int cofatores[][] = new int[ordem][ordem];
    // para guardar o sinal de multiplicação
    int sinal = 1;
    
    // caso base da recursividade:
    // se a matriz possuir apenas um elemento, retorna ele
    if (ordem == 1){
      return matriz[0][0];
    }
 
    // vamos percorrer cada um dos elementos da primeira linha    
    for (int f = 0; f < ordem; f++) {
      // vamos obter o cofator de matriz[0][f]
      calcularCofator(matriz, cofatores, 0, f, ordem);
      determinante = determinante + (sinal * matriz[0][f]
        * calcularDeterminante(cofatores, ordem - 1));
 
      // alterna o sinal
      sinal = -sinal;
    }
 
    // retorna o determinante
    return determinante;
  } 
  
  // função para retornar o cofator de mat[p][q] em temp[][]
  // ordem é a ordem atual da matriz mat[][]
  public static void calcularCofator(int mat[][], int temp[][],
    int p, int q, int ordem){
    // nos parâmetros, p indica linha e q indica coluna
    
    // variáveis auxiliares
    int i = 0, j = 0;
 
    // percorre cada um dos elementos da matriz recebida
    for (int linha = 0; linha < ordem; linha++) {
      // percorre as colunas
      for (int coluna = 0; coluna < ordem; coluna++) {
        // copia para a matriz temporária apenas os
        // elementos que não se encaixam na linha
        // e coluna informadas
        if (linha != p && coluna != q) {
          temp[i][j++] = mat[linha][coluna];
          // preenchemos a linha. Hora de aumentar
          // o índice da linha e resetar o índice
          // da coluna
          if (j == ordem - 1) {
            j = 0;
            i++;
          }
        }
      }
    }
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

A matriz é:

    1    3    0
    0    2    5
    2    4    4

O determinante da matriz é: 18


Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 25 usuários muito felizes estudando em nosso site.