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

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

Как известно, Льюис Кэрролл не только написал книги про Алису, но и был математиком. Занимался он в основном линейными уравнениями, матрицами и детерминантами. Я о его математических достижениях узнал совсем недавно. Точнее, я прочитал его статью о методе вычисления детерминантов.
Вот что он придумал. Пусть, например, нам нужно вычислить детерминант матрицы
\[\left[\begin{array}{ccccc}4&4&2&1&2\\4&4&5&2&2\\4&2&5&3&1\\2&5&3&1&2\\1&2&0&4&5\end{array}\right]\]
Делаем так: сначала вычисляем детерминанты блоков $2\times 2$ и строим из них матрицу размерности на один меньше:
\[\left[\begin{array}{cccc}0&12&-1&-2\\-8&10&5&-4\\16&-19&-4&5\\-1&-6&12&-3\end{array}\right]\]
Далее делаем то же самое, но теперь каждый детерминант $2\times 2$ делим на соответствующий элемент внутренности первой матрицы. Внутренность матрицы — это матрица, получающаяся из исходной вычеркиванием первой и последней строки и первого и последнего столбца. Получаем
\[\left[\begin{array}{ccc}24&14&7\\-4&11&3\\-23&-84&-48\end{array}\right]\]
Повторяя процесс, получаем
\[\left[\begin{array}{ccc}\begin{array}{cc} 32 & -7 \\-31 & 69\end{array}\end{array}\right]\]
\[\left[181\right]\]
Получившееся число и есть детерминант исходной матрицы.
Если сравнить число операций
\[N(\mbox{Доджсон})=3(n-1)^2+4(n-2)^2+\ldots=\frac{1}{3} (n-1) \left(4 n^2-5 n+3\right)\]
с числом операций при разложении по строке
\[N(\mbox{По строке})=e \Gamma (n+1,1)-2,\]
(эту формулу можно получить, решая рекуру) видим, что для больших матриц получаем значительный выигрыш. Но если мы будем просто методом Гаусса приводить матрицу к треугольному виду, получим
\[N(\mbox{Гаусс})=\frac{1}{6} (n-1) \left(4 n^2+n+6\right)\]
т.е., немного лучше, чем метод Доджсона. Есть еще особенные случаи, когда один из внутренних элементов матрицы оказывается равным нулю. В этом случае получается неопределенность и нужно начинать почти сначала. Так что с практической точки зрения метод Доджсона так себе. Вообще-то, я статью стал читать по другому поводу, а именно, по поводу так называемого тождества Доджсона, которое на поверку оказалось элементарным следствием теоремы Якоби, приведенной опять в  вышеупомянутой статье:
" If the determinant of a block $= R$, the determinant of any minor of the $m$th degree of the adjugate block is the product of $R^{m-1}$ and the coefficient which, in $R$, 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

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