проблема следующая при вызове var mat1 = this.getFreeMatrix(mat, 0); переопределяется сама матрица в getResult хотя она переопределяться не должна, JavaScript, в getFreeMatrix, будто бы воспринимает переменную mat как глобальную. можно ли это как то исправить?
P. S. скрипт считает корни СЛАУ
equations = {
/*
* Получает коэффициенты при квадратичной регрессии
* param matrix - матрица 3х4, 4 столбец - столбец свободных членов.
* */
getResult : function(mat) {
var det = this.getDet(mat);
var mat1 = this.getFreeMatrix(mat, 0);
var mat2 = this.getFreeMatrix(mat, 1);
var mat3 = this.getFreeMatrix(mat, 2);
var det1 = this.getDet(mat1);
var det2 = this.getDet(mat2);
var det3 = this.getDet(mat3);
if(det!=0) {
return [det1 / det, det2 / det, det3 / det];
}
else{
return [0,0,0];
}
},
/*
* возвращает определитель матрицы (метод треугольников)
* */
getDet : function (matrix) {
var det =
matrix[0][0]*matrix[1][1]*matrix[2][2]+
matrix[1][0]*matrix[2][1]*matrix[0][2]+
matrix[0][1]*matrix[1][2]*matrix[2][0]-
matrix[0][2]*matrix[1][1]*matrix[2][0]-
matrix[0][1]*matrix[1][0]*matrix[2][2]-
matrix[1][2]*matrix[2][1]*matrix[0][0];
return det;
},
getFreeMatrix : function (mat,col){
mat[0][col] = mat[0][3];
mat[1][col] = mat[1][3];
mat[2][col] = mat[2][3];
return mat;
}
}
matrix = [
[2, 3, 4, 5],
[6, 7, 8, 9],
[10, 25, 13, 13]
]