понедельник, 28 июня 2010 г.

Матрицы и уравнения

Как известно, Льюис Кэрролл не только написал книги про Алису, но и был математиком. Занимался он в основном линейными уравнениями, матрицами и детерминантами. Я о его математических достижениях узнал совсем недавно. Точнее, я прочитал его статью о методе вычисления детерминантов.
Вот что он придумал. Пусть, например, нам нужно вычислить детерминант матрицы
Делаем так: сначала вычисляем детерминанты блоков и строим из них матрицу размерности на один меньше:
Далее делаем то же самое, но теперь каждый детерминант делим на соответствующий элемент внутренности первой матрицы. Внутренность матрицы — это матрица, получающаяся из исходной вычеркиванием первой и последней строки и первого и последнего столбца. Получаем
Повторяя процесс, получаем
Получившееся число и есть детерминант исходной матрицы.
Если сравнить число операций
с числом операций при разложении по строке
(эту формулу можно получить, решая рекуру) видим, что для больших матриц получаем значительный выигрыш. Но если мы будем просто методом Гаусса приводить матрицу к треугольному виду, получим
т.е., немного лучше, чем метод Доджсона. Есть еще особенные случаи, когда один из внутренних элементов матрицы оказывается равным нулю. В этом случае получается неопределенность и нужно начинать почти сначала. Так что с практической точки зрения метод Доджсона так себе. Вообще-то, я статью стал читать по другому поводу, а именно, по поводу так называемого тождества Доджсона, которое на поверку оказалось элементарным следствием теоремы Якоби, приведенной опять в  вышеупомянутой статье:
" If the determinant of a block , the determinant of any minor of the th degree of the adjugate block is the product of and the coefficient which, in , multiplies the determinant of the corresponding minor."
(Jacobi)
Про эту теорему и про красоты с ней связанные я еще, может быть, напишу. Ну а пост этот написан чтобы проверить работу скрипта LaTeXMathML.js, а точнее, его модификации, которая позволяет делать матрицы и выключные уравнения, используя нормальный синтаксис LaTeXа. И еще, этот скрипт работает и для Оперы.

PS Только что выяснил, что описанный метод вычисления детерминантов можно найти в английской википедии в соответствующей статье. Там тождество Доджсона называется Desnanot-Jacobi identity, и это, по-моему, правильно.

4 комментария:

  1. А где скрипт с интерактивным введением матрицы, автоматическим вычислением всего ряда и подсчетом числа операций :) Халявишь?

    З.Ы. MathML - это, мне кажется, тупик. Уж матрицы, то в HTML совсем просто делать.

    ОтветитьУдалить
  2. Скрипт писать лень, да и времени совсем нет.
    [Уж матрицы, то в HTML совсем просто делать.]
    Интересно, как ты в html нарисуешь такие матрицы. Не забудь про масштабируемые (ну, в FF по-крайней мере) квадратные скобки. В любом случае, LaTeXовский код, как ты понимаешь, самый лаконичный для таких целей.

    Про MathML я не согласен. Синтаксис длинноват, зато более определен, чем LaTeXовский. Можно формулы импортировать в CAS. Просто, сейчас нет пока еще нормальных редакторов для него. Например, в качестве одной простой, но очень значительной фичи было бы автоматическое исправление/удаление завершающего тага при исправлении/удалении начального. Я, честно говоря, вообще не понимаю почему бы в xml не унифицировать завершающий таг как, например </>.

    Как в блогере цитаты вставлять, интересно.

    ОтветитьУдалить
  3. PS Кстати, я проверил, что Математика правильно импортирует матрицы в этом посте. И еще, вот какой вопрос пришел на ум. Прямое вычисление (и разложение по строке) детерминанта использует только сложение, вычитание и умножение. Два более быстрых метода используют также и деление. Можно представить случай, когда деление не определено (совсем). Вопрос: можно ли быстро считать детерминанты без деления?

    ОтветитьУдалить
  4. Вот, кстати, http://winterhunters.blogspot.com/2010/06/blog-post_29.html

    ОтветитьУдалить