Показать сообщение отдельно
  #1 (permalink)  
Старый 24.05.2017, 18:14
Новичок на форуме
Отправить личное сообщение для pentagrant Посмотреть профиль Найти все сообщения от pentagrant
 
Регистрация: 24.05.2017
Сообщений: 6

Найти определитель матрицы рекурсивно
Искал программу в Интернете, адекватным вариантом мне показался только этот:
function Determinant(A)
{  
    var n = A.length, subA = [], detA = 0;
        
    if (n==1) return A[0][0];
    if (n==2) return (A[0][0]*A[1][1]-A[0][1]*A[1][0]);
    if (n==3)
       { return ((A[0][0]*A[1][1]*A[2][2]+A[0][1]*A[1][2]*A[2][0]+A[0][2]*A[1][0]*A[2][1])
                 -(A[0][0]*A[1][2]*A[2][1]+A[0][1]*A[1][0]*A[2][2]+A[0][2]*A[1][1]*A[2][0]));
       }

    for (var i=0; i<n; i++)
        { for (var h=0; h<n-1; h++) subA[h]=[];
          for (var a=1; a<n; a++)
              { for (var b=0; b<n; b++)
                    { if (b<i)       subA[a-1][ b ] = A[ a ][ b ];
                      else if (b>i)  subA[a-1][b-1] = A[ a ][ b ];
                    }
              }
          var sign = (i%2==0) ? 1 : -1;
          detA += sign * A[0][i] * Determinant(subA);
        }

    return detA;
}


Во вложении - картинка с описанием метода, которым нужно определитель находить.

Я очень не силён в JS. Я так понимаю, найденная программа - только шаблон. Куда вписать саму матрицу? И ещё: в начале и в конце нужно открыть и закрыть теги html и script, правильно?
Изображения:
Тип файла: png Без имени-2.png (29.1 Кб, 6 просмотров)
Ответить с цитированием