Witam!
Napisałem ostatnio mały skrypt służący do obliczania wyznacznika z macierzy dowolnego rozmiaru. Sam algorytm wymyslilem "z głowy", nie korzystalem z zadnych źródeł więc pewnie moj algorytm nie jest najszybszy/najlepszy ;-P Dlatego mam pytanie jaki jest optymalny na to sposób?? Tutaj daje mój algorytm:
function wyznacznik(macierz){
var a;
var wynik = 0;
if(macierz.length == 1) return macierz[0][0];
for(a = 0;a < macierz[0].length;a++){
var znak = 1;
if(a%2!=0) znak = -1;
var mnoznik = macierz[0][a];
var b;
var c;
var m = new Array();
var m2 = new Array();
for(b=1;b < macierz.length; b++){
var d = 0;
for(c=0;c < macierz[b].length-1; c++){
if(c==a) d = 1;
m2[c] = macierz[b][c+d];
}
m[b-1]= m2;
m2 = new Array();
}
wynik += znak * mnoznik * wyznacznik(m);
}
return wynik;
}
Funkcja rekurencyjna, pobiera jako argument tablice dwuwymiarową.
Sam skrypt w akcji http://www.naruto-maniak.cba.pl/JS/macierze.html
Czy można to zrobić lepiej? Jest jakiś lepszy algorytm? Czy juz nie da sie tego przyspieszyc? Przy moim rozwiązaniu liczenie z macierzy 10x10 trwa koszmarnie długo...
Pozdrawiam