/html/espaniol/Apuntes/2013-08-30-AlgoritmoDeterminanteMatriznxnJava/AlgoritmoDeterminanteMatriznxn-B.jpg

Algoritmo para hallar el determinante de una matriz nxn en Java.

   Jueves 29, de Agosto del 2013
 

 

Este programa en Java esta basado en el algoritmo que explique en el siguiente apunte: Algoritmo para hallar el determinante de una matriz nxn en Free Pascal - 01 , como se puede observar es el mismo programa pero escrito enteramente en Java. Se usa la clase String para dar formato y precisión en los decimales, con 10 cifras significativas en la parte decimal y luego se convierte al tipo de dato double.

 

 
import java.io.*;
import java.util.Locale;

class Matrices
{

   public static void Mostrar(double [][] M, int filas,int columnas)
    {
     int i;
     int j;

     for (i=0;i < filas;i++)
      {
        for (j=0;j < columnas;j++) System.out.printf("%8.4f  ",M[i][j]);
        System.out.println();
      }
    }

   public static void FilaIntercambio(double [][] M, int F1, int F2, int columnas)
    { double aux;
     for (int j=0;j < columnas;j++)
      {
        aux=M[F1][j];
        M[F1][j]=M[F2][j];
        M[F2][j]=aux;
      }
    }

 public static void main(String args[])throws IOException
 {



  double [][] M = {{3,4,-7,6},
                   {1,4.0/3,-3,4},
                   {5,6,-7,5},
                   {-8,-9,1,2}};

  double aux,pivote;
  int  d,f,c;
  int  filas,columnas;
  double  Det;
  int z,p;

  filas=4;
  columnas=filas;
  Det=1;

  z=1;

  Mostrar(M,filas,columnas);
 for (d = 0; d < columnas; d++)
    {
     p=0;
     if (M[d][d]==0) {
       p=-1;
       f=d;
       while ((f<=filas)&&(p==-1)) {
           if (M[f][d]!=0) {
               p=f;
               FilaIntercambio(M,d,p,columnas);
               z*=-1;
             }
           f+=1;
           }
       }


    pivote=M[d][d];

    if (p!=-1){
     for (f=d+1;f < filas;f++)
       {
         aux=M[f][d];
         for (c=0;c < columnas;c++)
          {
            M[f][c]=M[f][c]-(M[d][c]*(aux/pivote));
            String cad = String.format(Locale.ENGLISH,"%.10f",M[f][c]);
            M[f][c] = Double.parseDouble(cad);

          }
        }
      }
    }

  for (d=0;d < columnas;d++) Det*=M[d][d];
  Det*=z;

  System.out.printf("%8.4f  ",Det);
 }
}
 

Código fuente 1: Algoritmo para hallar el determinate de una matriz nxn en Java.

 

Referencias:

http://www.sc.ehu.es/sbweb/fisica/cursoJava/numerico/matrices/matriz1/matriz1.htm

http://www.youtube.com/watch?v=LSbP6_nInxQ

http://www.espaciolinux.com/foros/tema46222.html

J.R. Vizmanos. "Programas en Basic" - 1984

 

Delicious

 

 

 
 

  COMENTARIOS