det

Определитель матрицы

Синтаксис

Описание

пример

d = det(A) возвращает определяющего квадратной матрицы A.

Примеры

свернуть все

Создайте квадратную матрицу 3 на 3, A.

A = [1 -2 4; -5 2 0; 1 0 3]
A = 3×3

     1    -2     4
    -5     2     0
     1     0     3

Вычислим определяющего A.

d = det(A)
d = -32

Рассмотрим, почему определяющий не является точной мерой особенности.

Создайте матрицу 10 на 10 путем умножения матрицы тождеств, eye(10), малым числом.

A = eye(10)*0.0001;

Матрица A имеет очень маленькие значения на основной диагонали. Однако A не сингулярна, потому что она является произведением матрицы тождеств.

Вычислим определяющего A.

d = det(A)
d = 1.0000e-40

Определяющий чрезвычайно мал. Проверочный тест формы abs(det(A)) < tol вероятно отметит эту матрицу как сингулярную. Несмотря на то, что определяющий матрицы близок к нулю, A на самом деле не является плохо обусловленной. Поэтому A не близка к тому, чтобы быть сингулярной. Определяющий матрицы может быть произвольно близок к нулю, не передавая информацию о особенности.

Чтобы выяснить, A ли сингулярно, используйте либо cond или rcond функций.

Вычислим число обусловленности A.

c = cond(A)
c = 1

Результат подтверждает, что A не является плохо обусловленной.

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

Создадим диагонально доминирующую сингулярную матрицу A и просмотрите расположение ненулевых элементов.

A = diag([24 46 64 78 88 94 96 94 88 78 64 46 24]);
S = diag([-13 -24 -33 -40 -45 -48 -49 -48 -45 -40 -33 -24],1);
A = A + S + rot90(S,2);
spy(A)

Figure contains an axes. The axes contains an object of type line.

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

Вычислим определяющего A.

d = det(A)
d = 1.0597e+05

Определяющий A довольно велик, несмотря на то, что A сингулярно. На самом деле, определяющий A должен быть в точности нулем! Неточность d обусловлено накоплением ошибок округления в реализации MATLAB ® LU-разложения, что det используется для вычисления определяющего. Этот результат демонстрирует несколько важных аспектов вычисления числовых определяющих. Для получения дополнительной информации см. раздел «Ограничения».

Входные параметры

свернуть все

Входная матрица, заданная как квадратная числовая матрица.

Типы данных: single | double
Поддержка комплексного числа: Да

Ограничения

Избегайте использования det чтобы выяснить, является ли матрица сингулярной из-за следующих ограничений. Использование cond или rcond вместо этого.

ОграничениеРезультат

Величина определяющего обычно не связана с числом обусловленности матрицы.

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

det использует LU-разложение, чтобы вычислить определяющего, который подвержен ошибкам округления с плавающей точкой.

Вычисление определителя иногда численно нестабильно. Для примера, det может создать большую величину определителя для сингулярной матрицы, хотя она должна иметь амплитуду 0.

Алгоритмы

det вычисляет определяющего из треугольных множителей, полученных Гауссовым исключением со lu функция.

[L,U] = lu(X)
s =  det(L)      % This is always +1 or -1 
det(X) = s*prod(diag(U))

Расширенные возможности

..

См. также

| | | | | |

Представлено до R2006a