Moin,
Gibt es irgendwo JS Funktionen zum Invertieren, Transponieren und Multiplizieren von Matrizen? Falls ja, wie kann ich die in mein Programm einbinden?
Guck mal hier: http://sylvester.jcoglan.com/
Grüße Marco
danke, ich schau mal
ich hab das hier zusammengeschrieben und für 3x3 matrizen getestet, leider funktioniert es bei meiner großen matrix nicht richtig. sieht jemand den fehler? ^^
this.invertiere=function(matrix){
//initialisiere inverse
var inverse=new Array();
for(var i=0; i<matrix.length;i++){
inverse[i]=new Array();
for(var j=0;j<matrix[0].length;j++){
if(i==j) inverse[i][j]=1;
else inverse[i][j]=0;
}
}
//durchlaufe alle zeilen der matrix
for(var z=0;z<matrix.length;z++){
//tausche zeile z mit der zeile maxInd, welche größten eintrag in spalte z hat
var maxInd=z;
for(var m=z;m<matrix.length;m++){
if(Math.abs(matrix[maxInd][z])<Math.abs(matrix[m][z])) maxInd=m;
}
var hilfsA=matrix[maxInd];
matrix[maxInd]=matrix[z];
matrix[z]=hilfsA;
hilfsA=inverse[maxInd];
inverse[maxInd]=inverse[z];
inverse[z]=hilfsA;
//jetzt setze matrix[z][z]=1
var koff=matrix[z][z];
//teile dafuer die zeile z von inverse und matrix durch koff
for(var s=0;s<matrix[z].length;s++){
inverse[z][s]=inverse[z][s]/koff;
matrix[z][s]=matrix[z][s]/koff;
}
//jetzt sorge dafuer das in der spalte unter und ueber matrix[z][z] ueberall 0 steht, rechnung auf inverse uebertragen
for(var zl=0;zl<matrix.length;zl++){
if(zl!=z){koff=matrix[zl][z];
for(var sl=0;sl<matrix[0].length;sl++){
inverse[zl][sl]=inverse[zl][sl]-inverse[z][sl]\*koff;
matrix[zl][sl]=matrix[zl][sl]-matrix[z][sl]\*koff;
}
}
}
}
return inverse;
};
zum testen habe ich das hier verwendet:
this.multMatrix=function(m1,m2){
var m=new Array();
//initialisiere matrixprodukt
for(var i=0; i<m1.length;i++){
m[i]=new Array();
for(var j=0;j<m1.length;j++){
m[i][j]=parseFloat(0);
}
}
for(var i=0; i<m1.length;i++){
for(var j=0;j<m2[0].length;j++){
for(var k=0;k<m1[0].length;k++){
m[i][j]=m[i][j]+parseFloat(m1[i][k])\*parseFloat(m2[k][j]);
}
m[i][j]=Math.round(100\*m[i][j])/100;
}
}
return m;
};