exponenta event banner

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 не плохо кондиционирован.

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

Создание диагонально доминирующей сингулярной матрицы 13 на 13 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