Вычисление определителя

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
м (Определитель: исправление опечатки)
(викификация)
Строка 4: Строка 4:
== Постановка задачи ==
== Постановка задачи ==
-
Задание подразумевает знакомство пользователя с основными понятиями численных методов, такими как определитель и обратная матрица, и различными способами их вычислений. В данном теоретическом отчете простым и доступным языком сначала вводятся основные понятия и определения, на основании которых проводится дальнейшее исследование. Пользователь может не иметь специальных знаний в области численных методов и линейной алгебры, но с легкостью сможет воспользоваться результатами данной работы. Для наглядности приведена программа вычисления определителя матрицы несколькими методами, написанная на языке программирования C++. Программа используется как лабораторный стенд для создания иллюстраций к отчету. А также проводится исследование методов для решения систем линейных алгебраических уравнений. Доказывается бесполезность вычисления обратной матрицы, поэтому в работе приводится более оптимальные способы решения уравнений не вычисляя ее. Рассказывается почему существует такое количество различных методов вычисления определителей и обратных матриц и разбираются их недостатки. Также рассматриваются погрешности при вычислении определителя и оценивается достигнутая точность. Помимо русских терминов в работе используются и их английские эквиваленты для понимания, под какими названиями искать численные процедуры в библиотеках и что означают их параметры.
+
Задание подразумевает знакомство пользователя с основными понятиями численных методов, такими как [[определитель]] и [[обратная матрица]], и различными способами их вычислений. В данном теоретическом отчете простым и доступным языком сначала вводятся основные понятия и определения, на основании которых проводится дальнейшее исследование. Пользователь может не иметь специальных знаний в области [[Численные методы|численных методов]] и [[Линейная алгебра|линейной алгебры]], но с легкостью сможет воспользоваться результатами данной работы. Для наглядности приведена программа вычисления определителя матрицы несколькими методами, написанная на языке программирования C++. Программа используется как лабораторный стенд для создания иллюстраций к отчету. А также проводится исследование методов для решения [[Система линейных алгебраических уравнений|систем линейных алгебраических уравнений]]. Доказывается бесполезность вычисления обратной матрицы, поэтому в работе приводится более оптимальные способы решения уравнений не вычисляя ее. Рассказывается почему существует такое количество различных методов вычисления определителей и обратных матриц и разбираются их недостатки. Также рассматриваются погрешности при вычислении определителя и оценивается достигнутая точность. Помимо русских терминов в работе используются и их английские эквиваленты для понимания, под какими названиями искать численные процедуры в библиотеках и что означают их параметры.
== Основные определения и простейшие свойства ==
== Основные определения и простейшие свойства ==
Строка 266: Строка 266:
Первый представляет собой единичный квадрат, и его площадь, равна 1. Второй есть параллелограмм с единичными основанием и высотой; его площадь не зависит от «сдвига», даваемого коэффициентом <tex> c </tex>, и равна 1.
Первый представляет собой единичный квадрат, и его площадь, равна 1. Второй есть параллелограмм с единичными основанием и высотой; его площадь не зависит от «сдвига», даваемого коэффициентом <tex> c </tex>, и равна 1.
-
 
== Литература ==
== Литература ==

Версия 11:47, 27 февраля 2010

Название статьи изменено (см. Обсуждение).--Strijov 17:26, 24 октября 2008 (MSD)


Содержание

Постановка задачи

Задание подразумевает знакомство пользователя с основными понятиями численных методов, такими как определитель и обратная матрица, и различными способами их вычислений. В данном теоретическом отчете простым и доступным языком сначала вводятся основные понятия и определения, на основании которых проводится дальнейшее исследование. Пользователь может не иметь специальных знаний в области численных методов и линейной алгебры, но с легкостью сможет воспользоваться результатами данной работы. Для наглядности приведена программа вычисления определителя матрицы несколькими методами, написанная на языке программирования C++. Программа используется как лабораторный стенд для создания иллюстраций к отчету. А также проводится исследование методов для решения систем линейных алгебраических уравнений. Доказывается бесполезность вычисления обратной матрицы, поэтому в работе приводится более оптимальные способы решения уравнений не вычисляя ее. Рассказывается почему существует такое количество различных методов вычисления определителей и обратных матриц и разбираются их недостатки. Также рассматриваются погрешности при вычислении определителя и оценивается достигнутая точность. Помимо русских терминов в работе используются и их английские эквиваленты для понимания, под какими названиями искать численные процедуры в библиотеках и что означают их параметры.

Основные определения и простейшие свойства

Определитель

Введем определение определителя квадратной матрицы любого порядка. Это определение будет рекуррентным, то есть чтобы установить, что такое определитель матрицы порядка  n , нужно уже знать, что такое определитель матрицы порядка n - 1. Отметим также, что определитель существует только у квадратных матриц.

Определитель квадратной матрицы  A будем обозначать  |A| или det  A .


Определение 1. Определителем квадратной матрицы Изображение:1.png‎ второго порядка называется число Изображение:2.png‎.

Определителем Изображение:3.png‎ квадратной матрицы порядка  n ,  n \geq 3 , называется число Изображение:4.png‎

где  M_k - определитель матрицы порядка  n - 1 , полученной из матрицы  A вычеркиванием первой строки и столбца с номером  k .

Для наглядности запишем, как можно вычислить определитель матрицы четвертого порядка: Изображение:5.png‎

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

Замечание. В определении 1 было бы точнее сказать, что определитель есть функция, определенная на множестве квадратных матриц порядка и принимающая значения в множестве чисел.

Замечание. В литературе вместо термина "определитель" используется также термин "детерминант", имеющий тот же самый смысл. От слова "детерминант" и появилось обозначение det  A .


Рассмотрим некоторые свойства определителей, которые сформулируем в виде утверждений.

Утверждение 1. При транспонировании матрицы определитель не меняется, то есть  |A^T| = |A| .

Утверждение 2. Определитель произведения квадратных матриц равен произведению определителей сомножителей, то есть  |AB| = |A||B| .

Утверждение 3. Если в матрице  A поменять местами две строки, то ее определитель сменит знак.

Утверждение 4. Если матрица  A имеет две одинаковые строки, то ее определитель равен нулю.

В дальнейшем нам потребуется складывать строки и умножать строку на число. Эти действия над строками (столбцами) мы будем выполнять так же, как действия над матрицами-строками (матрицами-столбцами), то есть поэлементно. Результатом будет служить строка (столбец), как правило, не совпадающая со строками исходной матрицы. При наличии операций сложения строк (столбцов) и умножения их на число мы можем говорить и о линейных комбинациях строк (столбцов), то есть суммах с числовыми коэффициентами.

Утверждение 5. Если строку матрицы умножить на число  \alpha , то ее определитель умножится на это число.

Утверждение 6. Если матрица содержит нулевую строку, то ее определитель равен нулю.

Утверждение 7. Если одна из строк матрицы равна другой, умноженной на число (строки пропорциональны), то определитель матрицы равен нулю.

Утверждение 8. Пусть в матрице  A i-ая строка имеет вид  (p_1 + q_1, p_2 + q_2 ... p_n + q_n) . Тогда  |A| = |A_p| + |A_q| , где матрица  A_p получается из матрицы  A заменой i-ой строки на строку  (p_1 p_2 ... p_n) , а матрица  A_q - заменой i-ой строки на строку  (q_1, q_2 ... q_n) .

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

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


Определение 2. Алгебраическим дополнением к элементу  a_{ij} матрицы  A называется число, равное  (-1)^{i+j} * M_{ij} , где  M_{ij} - определитель матрицы, полученной из матрицы вычеркиванием i-ой строки и j-ого столбца. Алгебраическое дополнение к элементу  a_{ij} матрицы  A обозначается  A_{ij} .

Пример. Пусть Изображение:7.png‎. Тогда Изображение:8.png‎ Изображение:9.png‎

Замечание. Используя алгебраические дополнения, определение 1 определителя можно записать так: Изображение:10.png‎

Утверждение 11. Разложение определителя по произвольной строке.

Для определителя матрицы  A справедлива формула Изображение:11.png‎

Пример. Вычислите Изображение:12.png‎.

Решение. Воспользуемся разложением по третьей строке, так выгоднее, поскольку в третьей строке два числа из трех - нули. Получим Изображение:13.png‎

Утверждение 12. Для квадратной матрицы  A порядка  n при  j \neq k выполнено соотношение Изображение:14.png‎.

Утверждение 13. Все свойства определителя, сформулированные для строк (утверждения 1 - 11), справедливы и для столбцов, в частности, справедливо разложение определителя по j-ому столбцу Изображение:15.png‎ и равенство Изображение:16.png‎ при  j \neq k .

Утверждение 14. Определитель треугольной матрицы равен произведению элементов ее главной диагонали.

Следствие. Определитель единичной матрицы равен единице,  |E| = 1 .


Вывод. Перечисленные выше свойства позволяют находить определители матриц достаточно высоких порядков при сравнительно небольшом объеме вычислений. Алгоритм вычислений следующий.

Алгоритм создания нулей в столбце. Пусть требуется вычислить определитель  A порядка  n . Если  a_{11}=0, то поменяем местами первую строку и любую другую, в которой первый элемент не нуль. В результате определитель  A , будет равен определителю новой матрицы с противоположным знаком. Если же первый элемент каждой строки равен нулю, то матрица  A имеет нулевой столбец и по утверждениям 1, 13 ее определитель равен нулю.

Итак, считаем, что уже в исходной матрице  a_{11} \neq 0 . Первую строку оставляем без изменений. Прибавим ко второй строке первую строку, умноженную на число  (-\frac{a_{21}}{a_{11}}) . Тогда первый элемент второй строки будет равен Изображение:17.png‎.

Остальные элементы новой второй строки обозначим  a^{(1)}_{2k} ,  k = 2, 3, ... , n . Определитель новой матрицы по утверждению 9 равен  |A| . Первую строку умножим на число  (-\frac{a_{31}}{a_{11}}) и прибавим к третьей. Первый элемент новой третьей строки будет равен Изображение:18.png‎

Остальные элементы новой третьей строки обозначим  a^{(1)}_{3k} ,  k = 2, 3, ... , n . Определитель новой матрицы по утверждению 9 равен  |A| .

Процесс получения нулей вместо первых элементов строк продолжим дальше. Наконец, первую строку умножим на число  (-\frac{a_{n1}}{a_{11}}) и прибавим к последней строке. В результате получается матрица, обозначим ее  A^{(1)} , которая имеет вид Изображение:19.png‎

причем  |A| = |A^{(1)}| . Для вычисления определителя матрицы  A^{(1)} используем разложение по первому столбцу Изображение:20.png‎

Так как  (-1)^{1+1} = 1 , то Изображение:21.png‎

В правой части стоит определитель матрицы порядка  n - 1 . К нему применим тот же алгоритм, и вычисление определителя матрицы сведется к вычислению определителя матрицы порядка  n - 2 . Процесс повторяем до тех пор, пока не дойдем до определителя второго порядка, который вычисляется по определению.

Если матрица  A не обладает какими-то специфическими свойствами, то заметно уменьшить объем вычислений по сравнению с предложенным алгоритмом не удается. Еще одна хорошая сторона этого алгоритма - по нему легко составить программу для компьютера для вычисления определителей матриц больших порядков. В стандартных программах вычисления определителей используется этот алгоритм с не принципиальными изменениями, связанными с минимизацией влияния ошибок округления и погрешностей входных данных при вычислениях компьютера.

Пример. Вычислите определитель матрицы Изображение:22.png‎.

Решение. Первую строку оставляем без изменения. Ко второй строке прибавляем первую, умноженную на число  -\frac{3}{2} : Изображение:23.png‎

Определитель не меняется. К третьей строке прибавляем первую, умноженную на число  -(\frac{-4}{2}) = 2 : Изображение:24.png‎

Определитель не меняется. К четвертой строке прибавляем первую, умноженную на число  -(\frac{-6}{2}) = 3 : Изображение:25.png‎

Определитель не меняется. В результате получаем Изображение:26.png‎

По тому же алгоритму считаем определитель матрицы порядка 3, стоящий справа. Первую строку оставляем без изменений, ко второй строке прибавляем первую, умноженную на число Изображение:27.png‎:

Изображение:28.png‎

К третьей строке прибавляем первую, умноженную на число Изображение:29.png‎:

Изображение:30.png‎

В результате получаем Изображение:31.png‎

Ответ.  |A| = 497 .

Замечание. Хотя при вычислениях использовались дроби, результат оказался целым числом. Действительно, используя свойства определителей и то, что исходные числа - целые, операций с дробями можно было бы избежать. Но в инженерной практике числа крайне редко бывают целыми. Поэтому, как правило, элементы определителя будут десятичными дробями и применять какие-то ухищрения для упрощения вычислений нецелесообразно.

Обратная матрица

Определение 3. Матрица  B называется обратной матрицей для квадратной матрицы  A , если  AB = BA = E .

Из определения следует, что обратная матрица  B будет квадратной матрицей того же порядка, что и матрица  A (иначе одно из произведений  AB или  BA было бы не определено).

Обратная матрица для матрицы  A обозначается  A^{-1} . Таким образом, если  A^{-1} существует, то  AA^{-1} = A^{-1}A = E .

Из определения обратной матрицы следует, что матрица  A является обратной для матрицы  A^{-1} , то есть  (A^{-1})^{-1} = A . Про матрицы  A и  A^{-1} можно говорить, что они обратны друг другу или взаимно обратны.

Если определитель матрицы равен нулю, то обратная к ней не существует.

Так как для нахождения обратной матрицы важно, равен ли определитель марицы нулю или нет, то введем следующие определения.


Определение 4. Квадратную матрицу  A назовем вырожденной или особенной матрицей, если  |A| = 0 , и невырожденной или неособенной матрицей, если  |A| \neq 0 .

Утверждение. Если обратная матрица существует, то она единственна.

Утверждение. Если квадратная матрица  A является невырожденной, то обратная для нее существует и Изображение:32.png‎ (1) где  A_{ij} - алгебраические дополнения к элементам  a_{ij} .

Теорема. Обратная матрица для квадратной матрицы  A существует тогда и только тогда, когда матрица  A - невырожденная, обратная матрица единственна, и справедлива формула (1).

Замечание. Следует обратить особое внимание на места, занимаемые алгебраическими дополнениями в формуле обратной матрицы: первый индекс показывает номер столбца, а второй - номер строки, в которые нужно записать вычисленное алгебраическое дополнение.

Пример. Найдите обратную матрицу для матрицы Изображение:33.png‎.

Решение. Находим определитель Изображение:34.png‎

Так как  |A| \neq 0 , то матрица  A - невырожденная, и обратная для нее существует. Находим алгебраические дополнения: Изображение:35.png‎

Составляем обратную матрицу, размещая найденные алгебраические дополнения так, чтобы первый индекс соответствовал столбцу, а второй - строке: Изображение:36.png‎ (2)

Полученная матрица (2) и служит ответом к задаче.

Замечание. В предыдущем примере было бы точнее ответ записать так: Изображение:37.png‎ (3)

Однако запись (2) более компактна и с ней удобнее проводить дальнейшие вычисления, если таковые потребуются. Поэтому запись ответа в виде (2) предпочтительнее, если элементы матриц - целые числа. И наоборот, если элементы матрицы - десятичные дроби, то обратную матрицу лучше записать без множителя  \frac{1}{|A|} впереди.

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

Пример. Найдите обратную матрицу для матрицы Изображение:38.png‎.

Решение. Изображение:39.png‎ - существует.

Изображение:40.png‎

Изображение:41.png‎

Ответ: Изображение:42.png‎.

Вывод. Нахождение обратной матрицы по формуле (1) требует слишком много вычислений. Для матриц четвертого порядка и выше это неприемлемо. Реальный алгоритм нахождения обратной матрицы будет приведен позже.

Вычисление определителя и обратной матрицы с помощью метода Гаусса

Метод Гаусса можно использовать для нахождения определителя и обратной матрицы [5, стр.316-317].

Именно, определитель матрицы  A равен det (A) = a_{11}a^{(1)}_{22} ... a^{(n-1)}_{nn} .

Обратная матрица  A^{-1} находится решением  n систем линейных уравнений методом исключения Гаусса:

 Ax[j] = e[j] , где  e[j] есть j-тый столбец единичной матрицы  E ,  x[j] - искомый вектор.

Полученные векторы решений  x[1], x[2], ..., x[n] - образуют, очевидно,  n столбцов матрицы  A^{-1} , поскольку  AA^{-1} = E .

Формулы для определителя

1. Если матрица  A невырожденная, то  A = P^{-1}LDU и  \det A = \det P^{-1} \det L \det D \det U = \pm (произведение ведущих элементов).

Знак плюс или минус дается определителем матрицы  P^{-1} (или  P ) и зависит от того, является число перестановок строк в приведении четным или нечетным. Для треугольных сомножителей имеем  \det L = \det U = 1 и  \det D = d_1 ... d_n

2. Определитель матрицы  A может быть вычислен разлоразложением по алгебраическим дополнениям i-й строки:

 \det A = a_{i1}A_{i1} + a_{i2}A_{i2} + ... + a_{in}A_{in} .

Алгебраическое дополнение  \det A_{ij} есть определитель подподматрицы  M_{ij} , взятый с нужным знаком:

 A_{ij} = (-1)^{i+j} \det M_{ij} .

Подматрица  M_{ij} образуется вычеркиванием i-й строки и j-го столбца матрицы  A .

3. Правило Крамера: j-й элемент вектора  x = A^{-1} b равен  x_j = \frac {\det B_j}{\det A} , где

Изображение:S1.png‎

В  B_j - вектор  b заменяет собой j-й столбец матрицы  A .

Пример.

Решение системы

Изображение:S2.png‎

4. Формула для ведущих элементов.

Если матрица  A представляется в виде  LDU  , то левые верхние углы удовлетворяют соотношению

 A_k = L_k D_k U_k

Для разных  k разложения подматриц  A_k «согласованы» друг с другом.

Объем параллелепипеда

Связь между определителем и объемом не очевидна, однако мы можем предположить для начала, что все углы прямые, т. е. грани взаимно перпендикулярны, и мы имеем дело с прямоугольным параллелепипедом. Тогда объем его равен просто произведению длин ребер  l_1 l_2 ... l_n .

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

Изображение:S3.png‎

Величины  l^{2}_{i} суть квадраты длин строк матрицы, т. е. квадраты длин ребер, и нули вне диагонали получаются вследствие ортогональности строк. Переходя к определителям, получаем

Изображение:S4.png‎

Извлекая корень, мы и приходим к требуемому соотношению: определитель равняется объему. Знак при  \det A будет зависеть от того, образуют ребра правостороннюю систему координат вида  xyz или левостороннюю  xyz .

Если область не прямоугольна, то объем уже не равен произведению длин ребер. В плоском случае «объем» параллелограмма равен произведению длины основания на высоту  h .

Вектор  pb длины  h есть разность между вектором второй строки  Ob = (a_{21}, a_{22}) и его проекцией  Op на вектор первой строки.

Изображение:S5.png‎

Площадь паралелограмма равна  \det A .

Изображение:S6.png‎

Площади квадрата и параллелограмма.

Первый представляет собой единичный квадрат, и его площадь, равна 1. Второй есть параллелограмм с единичными основанием и высотой; его площадь не зависит от «сдвига», даваемого коэффициентом  c , и равна 1.

Литература

  1. http://e-lib.gasu.ru/eposobia/metody/
  2. http://www.exponenta.ru/educat/systemat/slivina/lection/lection2/lection2.asp
  3. http://elib.ispu.ru/library/math/sem1/index.html
  4. Вычисление матриц Якоби и Гессе
  5. Киселёв В.Ю., Пяртли А.С., Калугина Т.Ф. Высшая математика.
  6. Боглаев Ю.П. Вычислительная математика и программирование. - М., Высшая школа, 1990, 544 с.
  7. Стренг Г. Линейная алгебра и ее приминения / Под ред. Г. И. Марчука. М.: Мир, 1980. 453 c.

См. также

Личные инструменты