2017-06-10 36 views
1

Ich versuche Determinante einer Matrix in JS zu berechnen. Ich habe Algorithmus von http://www.sanfoundry.com/java-program-compute-determinant-matrix/ verwendet, aber ich verlor meine Meinung über die letzte Bedingung. Ich verstehe es einfach nicht. Kannst du mir helfen?Berechne Determinante einer Matrix

So sieht mein Code jetzt aus. In einer anderen Funktion erstelle ich ein leeres 2d-Array und kopiere es dann in die det-Funktion. Als nächstes erhalte ich Werte aus HTML und versuche dann, die Determinante einer Matrix zu berechnen. Die ersten beiden Fälle sind einfach, aber ich habe ein Problem mit dem letzten. Ich konnte kein funktionierendes Beispiel in JS finden.

function det() { 
 
    var det = 0; 
 
    var array1 = array.slice(); 
 

 
    for (i = 0; i < array1.length; i++) { 
 

 
    for (j = 0; j < array1[i].length; j++) { 
 
     array1[i][j] = parseInt(document.getElementById("element" + (i + 1) + (j + 1)).value, 10); 
 
    } 
 

 
    } 
 

 
    if (array1.length == 1) { 
 
    det = array1[0][0]; 
 
    } else if (array1.length == 2) { 
 
    det = (array1[0][0] * array1[1][1]) - (array1[1][0] * array1[0][1]); 
 
    } else { 
 

 
    } 
 

 
}

+0

In der letzten Bedingung, erstellen Sie eine Submatrix, die 'array1' ist Löschen der Zeile und Spalte bei' a0j' wobei 'j' von' 0' nach 'N' ist, multiplizieren Sie' a0j' mit 'det (Subarray) und die Summe der Produkte ist die endgültige Determinante, das ist die Definition von Determinante, der Code, der vor dem rekursiven Aufruf geschrieben wird, füllt nur das Subarray, das ist alles – niceman

Antwort

1

Sie können für quadratische Matrix hier https://en.wikipedia.org/wiki/Determinant#n_.C3.97_n_matrices Definition der Determinante sehen. Algorithmus in http://www.sanfoundry.com/java-program-compute-determinant-matrix/ verwendet einige Eigenschaften von Determinat, um es in rekursiver Weise als Summe über alle Permutationen zu berechnen. Auf diese Weise erhalten Sie N * N! Operationen! Es ist sehr groß sogar für kleine N.

Um dieses Problem zu lösen, können Sie zuerst die Matrix in ein Dreieck mit derselben Determinante umwandeln und anschließend die Determinante als Produkt aller Diagonalelemente berechnen.

Verwandte Themen