Determinante de una matriz NxN en javascript

Creado por jc mouse Sábado, Julio 2, 2016

Notación matemática formada por una tabla cuadrada de números, u otros elementos, entre dos líneas verticales; el valor de la expresión se calcula mediante su desarrollo siguiendo ciertas reglas. Los determinantes fueron originalmente investigados por el matemático japonés Seki Kowa alrededor de 1683 y, por separado, por el filósofo y matemático alemán Gottfried Wilhhelm Leibniz alrededor de 1693. Esta notación se utiliza en casi todas las ramas de las matemáticas y en las ciencias naturales. [Enciclopedia Microsoft Encarta 2001]

<!DOCTYPE html>
<html>
    <head>
        <title>Determinante de una matriz NxN en javascript</title>
        <meta charset="UTF-8">        
    </head>
    <body>
        <script>
            /**
             * crea una matriz cuadrada
             * @param {integer} size dimension de la matriz
             * */
            function createMatriz(size){
                var matriz = new Array(size);
                for (i = 0; i < size ; i++){ 
                  matriz[i]=new Array(size); 
                } 
                return matriz;
            }
            
            /**
             * calcula el determinante de una matriz NxN
             * @param {array} matriz matriz a calcular
             * */
            function determinante(matriz){                                
                if(matriz.length==2){
                    var det=(matriz[0][0]*matriz[1][1])-(matriz[1][0]*matriz[0][1]);
                    return det;
                }               
                var suma = 0;
                for(var i = 0; i<matriz.length; i++){
                    var nm = createMatriz(matriz.length-1);
                    for(var j=0; j<matriz.length; j++){
                        if(j!=i){
                            for(var k=1; k<matriz.length; k++){
                                var indice=-1;
                                if(j<i)
                                    indice=j;
                                else if(j>i)
                                    indice=j-1;
                                nm[indice][k-1] = matriz[j][k];
                            }
                        }
                    }
                    if(i%2==0){                            
                        suma += matriz[i][0] * determinante(nm);                            
                    }                            
                    else{                            
                        suma -= matriz[i][0] * determinante(nm);
                    }                        
                }
                return suma;
            }
            
            function printMatriz(matriz){
                for(var i=0; i<matriz.length; i++){
                    document.write("[ ");
                    for(var j=0; j<matriz.length; j++){
                        document.write(matriz[i][j].toPrecision(precision) + " ");
                    }   
                    document.write(" ]<br/>");            
                }
            }
            
            /* ---------------------------------- */            
            var precision = 5;
            /*
            var m = createMatriz(3);            
            m[0][0]=1;m[0][1]=0.3;m[0][2]=0.5;
            m[1][0]=0;m[1][1]=1;m[1][2]=0.5;
            m[2][0]=-0.1;m[2][1]=0.7;m[2][2]=1;
            */
            
            //definimos matriz y datos
            var m = createMatriz(4);            
            m[0][0]=0.3;m[0][1]=2.3;m[0][2]=3.3;m[0][3]=2;
            m[1][0]=4;m[1][1]=5.4;m[1][2]=6;m[1][3]=3;
            m[2][0]=9;m[2][1]=8;m[2][2]=2;m[2][3]=0.01;
            m[3][0]=1;m[3][1]=0.1;m[3][2]=0.2;m[3][3]=3;
            
            //calculamos y mostramos en pantalla
            document.write("Matriz <br/>");
            printMatriz(m);
            var d = determinante(m);
            document.write("determinante = " + d.toPrecision(precision) + "<br/>");
        </script>
    </body>
</html>

Ejecutando el ejemplo tenemos:

determinante javascript

 

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!

Sobre el autor y el sitio web

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

ENTRADAS QUE TE PUEDEN INTERESAR

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*

Comparte lo que sabes

Categorias

Android Bolivia

Bandera en Alto

Ultimas entradas

Online Flag Waver es una páginas web con la que podemos generar banderas ondeando con la textura que elijamos ya sea des...

Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli...

A continuación tenemos una clase que nos permite arrastrar un archivo de Excel (*.xlsx) y cargar su contenido en una tab...

A continuación te mostramos una guía sobre la nueva nueva función ‘estado‘ de WhatsApp.  Primero que nada, a...

Web amigas