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 object. The axes object contains an object of type line.

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

Вычислим определитель A.

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

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

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

свернуть все

Введите матрицу в виде квадратной числовой матрицы.

Типы данных: 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