До последнего времени на нашем сайте использовалась сторонняя бибилиотека расчета определителя матрицы. Несмотря на то, что считала правильно, у неё был существенный недостаток- она была очень медленной. Определитель матрицы 7*7 посчитать уже не могла и сваливалась в креш. Это сильно напрягало и автор сайта изыскивал возможность рассчитатать определитель своими силами. Идти по проторенной дорожке и считать хотя бы по методике Гаусса, не хотелось и автор пошёл другим путём.
Представим первую строку как многочлен с известными коэффициентами
Один из корней этого уравнения равен 2.
Разделим каждую строку представленную в виде многочленов на
Получим
где O- остаток от деления. В нашем примере он равен нулю.
делим также вторую строку
Делим третью строку
Запишем полученные коэффициенты и остаток в новую матрицу
Для кого то покажется удивительным, но детерминант этой матрицы также равен -116 !
Интересно не правда ли?
Давайте повторим то же самое теперь у нас в первой строке многочлен
Корень равен 3, и после повторения всех действий что делели на первом этапе получим матрицу
И опять же детерминант равен -116
Теперь на этом этапе мы получили возможность понизить размер матрицы, так как в первой строке стоят все нули, кроме первого значения
а значит детерминант можно вычислить как
Теперь можно применить метод Горнера уже к матрице не 3*3 а всего лишь 2*2
В конечном итоге мы получим диогональную матрицу
где мы знаем определитель есть произведение чисел стоящих на главной диагонали то есть -116
Метод красив, но не удобен, так как при матрицах 5 и более высокого порядка нам будет необходимо рассчитывать корни полинома такого же порядка.
Поэтому для практических расчетов используется не вся матрица а только два соседних столбца, и тогда у нас получается линейное уравнение, где легко высчитывается корень, и метод Горнера сворачивается в фактически решение Гаусса. Как бы автор этого не хотел :)
Вот пример
возьмем только два столбца 1 и 2 и применим метод Горнера разделив линейные уравнения
на
получим
детерминант тоже равен -116
перенесем столбец где появился 0 в правую часть и получили
Далее применяя второй раз такую же методику мы также получим в первой строке все нули кроме одного значения и сможем понизить размер матрицы.
Здесь вычисления намного проще. Затруднения может лишь вызвать определение - какой же знак поставить у детерминаната.
Для этого нам надо на каждом промежуточном этапе рассчитывать количество транспозиций, и если в конечном итоге количество транспозиций нечетное, то результат произведения значений на главной диагонали необходимо умножить на (-1).
Зачем же надо было делать такой крюк, что бы вернутся к фактически методике Гаусса?
На этот вопрос можно ответить так. Всегда интересно смотреть на типовую задачу под другим углом. И если Вы с работы и до дома идете всегда одним путем, попробуйте изменить однажды маршрут. Это поможет увидеть, то что до сих пор было от вас скрыто. И даже если конечной точкой все равно является дом, новый маршрут, всегда привнесет в вашу жизнь новые ощущения и впечатления.
Применение метода Горнера к матрицам позволит нам, легко генерировать "псевдослучайные" матрицы с определенно заданным детерминантом, или превращать матрицу с вещественными коэфициентами, в матрицу с комплексными значениями при неизменном детерминанте.
Теперь примеры расчета детерминанта по такой методике. Примеров полно 3 и 4 размерных матриц, поэтому мы начнем с матриц 10 порядка