вычислить определитель матрицы

1

Я пытаюсь вычислить детерминант матрицы в JS. Я использовал алгоритм из http://www.sanfoundry.com/java-program-compute-determinant-matrix/, но я потерял рассудок в последнем состоянии. Я просто не понимаю. Вы можете мне помочь?

Вот как выглядит мой код прямо сейчас. В другой функции я создаю пустой массив 2d, а затем скопирую его в функцию det. Затем я извлекаю значения из html и затем пытаюсь вычислить определитель матрицы. Первые 2 случая просты, но у меня проблема с последней. Я не смог найти рабочий пример в JS.

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 {

  }

}
Теги:
arrays
algorithm
matrix

1 ответ

1
Лучший ответ

Вы можете определить определение определителя для квадратной матрицы здесь https://en.wikipedia.org/wiki/Determinant#n_.C3.97_n_matrices. Алгоритм, используемый в http://www.sanfoundry.com/java-program-compute-determinant-matrix/, использует некоторые свойства детермината для вычисления его рекурсивным образом как суммы по всем перестановкам. Таким образом, вы получаете N * N! операция! Он очень большой даже для маленьких N

Для решения этой проблемы вы можете сначала преобразовать матрицу в треугольную с тем же детерминантом, а затем вычислить определитель как произведение всех диагональных элементов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню