Syntax
Description
example
d = det(
returns the determinant ofA
)
square matrix A
.
Examples
collapse all
Calculate Determinant of Matrix
Create a 3-by-3 square matrix, A
.
A = [1 -2 4; -5 2 0; 1 0 3]
A = 3×3
1 -2 4
-5 2 0
1 0 3
Calculate the determinant of A
.
Determine if Matrix Is Singular
Examine why the determinant is not an accurate measure of singularity.
Create a 10-by-10 matrix by multiplying an identity matrix, eye(10)
, by a small number.
The matrix A
has very small entries along the main diagonal. However, A
is not singular, because it is a multiple of the identity matrix.
Calculate the determinant of A
.
The determinant is extremely small. A tolerance test of the form abs(det(A)) < tol
is likely to flag this matrix as singular. Although the determinant of the matrix is close to zero, A
is actually not ill conditioned. Therefore, A
is not close to being singular. The determinant of a matrix can be arbitrarily close to zero without conveying information about singularity.
To investigate if A
is singular, use either the cond
or rcond
functions.
Calculate the condition number of A
.
The result confirms that A
is not ill conditioned.
Find Determinant of Singular Matrix
Examine a matrix that is exactly singular, but which has a large nonzero determinant. In theory, the determinant of any singular matrix is zero, but because of the nature of floating-point computation, this ideal is not always achievable.
Create a 13-by-13 diagonally dominant singular matrix A
and view the pattern of nonzero elements.
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)
A
is singular because the rows are linearly dependent. For instance, sum(A)
produces a vector of zeros.
Calculate the determinant of A
.
The determinant of A
is quite large despite the fact that A
is singular. In fact, the determinant of A
should be exactly zero! The inaccuracy of d
is due to an aggregation of round-off errors in the MATLAB® implementation of the LU decomposition, which det
uses to calculate the determinant. This result demonstrates a few important aspects of calculating numeric determinants. See the Limitations section for more details.
Input Arguments
collapse all
A
— Input matrix
square numeric matrix
Input matrix, specified as a square numeric matrix.
Data Types: single
| double
Complex Number Support: Yes
Limitations
Avoid using det
to examine if a matrix is
singular because of the following limitations. Use cond
or rcond
instead.
Limitation | Result |
---|---|
The magnitude of the determinant is typically unrelated |
The determinant of a matrix can be arbitrarily large |
|
The determinant calculation is sometimes numerically |
Algorithms
det
computes the determinant from the triangular
factors obtained by Gaussian elimination with the lu
function.
[L,U] = lu(X) s = det(L) % This is always +1 or -1 det(X) = s*prod(diag(U))
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
-
Code generation does not support sparse matrix inputs for this
function.
GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.
Usage notes and limitations:
-
Code generation does not support sparse
matrix inputs for this function.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool
or accelerate code with Parallel Computing Toolbox™ ThreadPool
.
This function fully supports thread-based environments. For
more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced before R2006a
Determinant of symbolic matrix
Syntax
Description
example
B
= det(A
)
returns the determinant of the square matrix of symbolic numbers, scalar
variables, or functions A
.
example
B
= det(A
,'Algorithm','minor-expansion')
uses the minor expansion algorithm to evaluate the determinant of
A
.
example
B
= det(M
)
returns the determinant of the square symbolic matrix variable or matrix
function M
.
Examples
collapse all
Compute Determinant of Matrix with Symbolic Scalar Variables
Compute the determinant of a matrix that contains symbolic scalar variables.
syms a b c d A = [a b; c d]; B = det(A)
Compute Determinant of Matrix with Symbolic Numbers
Compute the determinant of a matrix that contains symbolic numbers.
A = sym([2/3 1/3; 1 1]); B = det(A)
Compute Determinant Using Minor Expansion
Create a symbolic matrix that contains polynomial entries.
syms a x A = [1, a*x^2+x, x; 0, a*x, 2; 3*x+2, a*x^2-1, 0]
A =(1a x2+xx0a x23 x+2a x2-10)
Compute the determinant of the matrix using minor expansion.
B = det(A,'Algorithm','minor-expansion')
Compute Determinant of Block Matrix
Compute the determinant of a 4-by-4 block matrix
M=[A02,2CB]
where A, B, and C are 2-by-2 submatrices. The notation 02,2 represents a 2-by-2 submatrix of zeros.
Use symbolic matrix variables to represent the submatrices in the block matrix.
syms A B C [2 2] matrix Z = symmatrix(zeros(2))
Find the determinant of the matrix M.
Convert the result from symbolic matrix variables to symbolic scalar variables using symmatrix2sym
.
D1 = simplify(symmatrix2sym(det(M)))
D1 = A1,1 A2,2-A1,2 A2,1 B1,1 B2,2-B1,2 B2,1
Check if the determinant of matrix M is equal to the determinant of A times the determinant of B.
D2 = symmatrix2sym(det(A)*det(B))
D2 = A1,1 A2,2-A1,2 A2,1 B1,1 B2,2-B1,2 B2,1
Compute Determinant of Matrix Polynomial
Compute the determinant of the matrix polynomial a0 I2+A, where A is a 2-by-2 matrix.
Create the matrix A as a symbolic matrix variable and the coefficient a0 as a symbolic scalar variable. Create the matrix polynomial as a symbolic matrix function f
with a0 and A as its parameters.
syms A [2 2] matrix syms a0 syms f(a0,A) [2 2] matrix keepargs f(a0,A) = a0*eye(2) + A
Find the determinant of f
using det
. The result is a symbolic matrix function of type symfunmatrix
that accepts scalars, vectors, and matrices as its input arguments.
Convert the result from the symfunmatrix
data type to the symfun
data type using symfunmatrix2symfun
. The result is a symbolic function that accepts scalars as its input arguments.
gInv = symfunmatrix2symfun(fInv)
gInv(a0, A1_1, A1_2, A2_1, A2_2) = A1,1 a0+A2,2 a0+a02+A1,1 A2,2-A1,2 A2,1
Input Arguments
collapse all
A
— Input matrix
square matrix of symbolic numbers | square matrix of symbolic scalar variables | square matrix of symbolic functions
Input matrix, specified as a square matrix of symbolic numbers, square
matrix of symbolic scalar variables, or square matrix of symbolic
functions.
Data Types: single
| double
| sym
| symfun
M
— Input matrix
square symbolic matrix variable | square symbolic matrix function
Input matrix, specified as a square symbolic matrix variable or square
symbolic matrix function.
Data Types: symmatrix
| symfunmatrix
Tips
-
Matrix computations involving many symbolic variables can be
slow. To increase the computational speed, reduce the number of symbolic variables by
substituting the given values for some variables. -
The minor expansion method is generally useful to evaluate the determinant of
a matrix that contains many symbolic scalar variables. This method is often
suited to matrices that contain polynomial entries with multivariate
coefficients.
References
[1] Khovanova, T. and Z. Scully.
«Efficient Calculation of Determinants of Symbolic Matrices with Many Variables.» arXiv
preprint arXiv:1304.4691
(2013).
Version History
Introduced before R2006a
Синтаксис
Описание
пример
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
.
Определите, сингулярна ли Матрица
Исследуйте, почему определитель не является точной мерой сингулярности.
Создайте 10 10 матрица путем умножения единичной матрицы, eye(10)
, небольшим числом.
Матричный A
имеет очень маленькие записи по основной диагонали. Однако A
не сингулярно, потому что это является кратным единичной матрице.
Вычислим определитель A
.
Определитель чрезвычайно мал. Тест допуска формы abs(det(A)) < tol
вероятно, отметит эту матрицу как сингулярную. Несмотря на то, что определитель матрицы близко к нулю, A
на самом деле плохо не обусловливается. Поэтому A
не близко к тому, чтобы быть сингулярным. Определитель матрицы может быть произвольно близко к нулю, не сообщая о сингулярности.
Заниматься расследованиями если A
сингулярно, используйте любого cond
или rcond
функции.
Вычислим число обусловленности A
.
Результат подтверждает тот 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)
A
сингулярно, потому что строки линейно зависимы. Например, sum(A)
дает нулевой вектор.
Вычислим определитель A
.
Определитель A
является довольно большим несмотря на то, что A
сингулярно. На самом деле, определитель A
должен быть ниже нуля! Погрешность d
происходит из-за накопления ошибок округления в реализации MATLAB® LU-разложения, который det
использование, чтобы вычислить определитель. Этот результат демонстрирует несколько важных аспектов вычисления числовых определителей. Дополнительную информацию см. в разделе Limitations.
Входные параметры
свернуть все
A
— Введите матрицу
квадратная числовая матрица
Введите матрицу в виде квадратной числовой матрицы.
Типы данных: single
| double
Поддержка комплексного числа: Да
Ограничения
Избегайте использования det
исследовать, если матрица сингулярна из-за нижеследующих ограничений. Используйте cond
или rcond
вместо этого.
Ограничение | Результат |
---|---|
Величина определителя обычно не связана с числом обусловленности матрицы. |
Определитель матрицы может быть произвольно большим или маленьким, не меняя число обусловленности. |
|
Вычисление определителя иногда численно неустойчиво. Например, |
Алгоритмы
det
вычисляет определитель из треугольных множителей, полученных Исключением Гаусса с lu
функция.
[L,U] = lu(X) s = det(L) % This is always +1 or -1 det(X) = s*prod(diag(U))
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.
Указания и ограничения по применению:
-
Генерация кода не поддерживает входные параметры разреженной матрицы для этой функции.
Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.
Указания и ограничения по применению:
-
Генерация кода не поддерживает входные параметры разреженной матрицы для этой функции.
Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.
Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
Представлено до R2006a
Определитель и ранг матрицы
Для нахождения
определителя
(детерминанта) и
ранга матриц в MATLAB имеются следующие
функции:
-
det(X) — возвращает
определитель квадратной матрицы X. Если
X содержит только целые элементы, то
результат — тоже целое число. Использование
det(X)=0 как теста на вырожденность матрицы
действительно только для матрицы малого
порядка с целыми элементами.
Пример:
»
А=[2,3,6;1,8,4;3,6,7]
А
=
2 |
3 |
6 |
||
1 |
8 |
4 |
||
3 |
6 |
7 |
||
»
det(A)
ans
=
-29
Ранг матрицы
определяется количеством сингулярных
чисел, превышающих порог
Для вычисления
ранга используется функция rank:
-
rank (А) — возвращает
количество сингулярных чисел, которые
являются большими, чем заданный по
умолчанию допуск; -
rank(A,tol) — возвращает
количество сингулярных чисел, которые
превышают tol.
Пример:
»
rank(A,1)
ans= 3
Обращение
матриц — функция inv
Обращение матриц — одна из наиболее
распространенных операций матричного
анализа. Обратной
называют
матрицу, получаемую в результате деления
единичной матрицы Е на исходную матрицу
X. Таким образом, Х-1=Е/Х.
Следующие функции обеспечивают реализацию
данной операции: inv(X) — возвращает
матрицу, обратную квадратной матрице
X. Предупреждающее сообщение выдается,
если X плохо масштабирована или близка
к вырожденной. Пример: »
inv(rand(4,4))
ans
=
2.2631
-2.3495 -0.4696 -0.6631
-0.7620
1.2122 1.7041 -1.2146
-2.0408
1.4228 1.5538 1.3730
1.3075-0.0183-2.54830.6344
На практике вычисление явной
обратной матрицы не так уж необходимо.
Чаще операцию обращения применяют при
решении системы линейных уравнений
вида Ах=b. Один из путей решения этой
системы — вычисление x=inv(A)*b. Но лучшим
с точки зрения минимизации времени
расчета и повышения точности вычислений
является использование оператора
матричного деления х=Аb. Эта операция
использует метод исключения Гаусса без
явного формирования обратной матрицы.
Понятие о
многомерных массивах
В MATLAB двумерный массив является частным
случаем многомерного массива. Многомерные
массивы характеризуются размерностью
более двух. Таким массивам можно дать
наглядную интерпретацию. Так, матрицу
(двумерный массив) можно записать на
одном листе бумаги в виде строк и
столбцов, состоящих из элементов матрицы.
Тогда блокнот с такими листками можно
считать трехмерным массивом, полку в
шкафу с блокнотами — четырехмерным
массивом, шкаф со множеством полок —
пятимерным массивом и т. д.
Соседние файлы в папке Matlab
- #
- #
20.02.201635.74 Mб80Инженерные расчеты в Mathcad Макаров 2005.djvu
216
Операции с векторами и матрицами
Матричные операции линейной алгебры
217
Для этого вычисления, при p = 1, 2 и inf, служит функция norm(A,p). Пример:
>> A=[2,3,1;1,9,4;2,6,7]
A=
2
3
1
1
9
4
2
6
7
>> norm(A,1)
ans = 18
функция rcond реализует более эффективный в плане затрат машинного
времени, но менее достоверный метод оценки обусловленности матрицы.
Пример:
>> s=rcond(hilb(4))
s = 4.6461e-005
4.4.3. Определитель и ранг матрицы
Для нахождения определителя (детерминанта) и ранга матриц в MATLAB име
ются следующие функции:
• det(X) – возвращает определитель квадратной матрицы X. Если X содер
жит только целые элементы, то результат – тоже целое число. Использова
ние det(X)=0 как теста на вырожденность матрицы действительно только
для матрицы малого порядка с целыми элементами. Пример:
>> A=[2,3,6;1,8,4;3,6,7]
A=
2
3
6
1
8
4
3
6
7
>> det(A)
ans = -29
Числа обусловленности матрицы определяют чувствительность решения сис
темы линейных уравнений к погрешностям исходных данных. Следующие функ
ции позволяют найти числа обусловленности матриц.
• cond(X) – возвращает число обусловленности, основанное на второй нор
ме, то есть отношение самого большого сингулярного числа X к самому ма
лому. Значение cond(X), близкое к 1, указывает на хорошо обусловленную
матрицу;
• c = cond(X,p) – возвращает число обусловленности матрицы, основанное
на p норме: norm(X,p)*norm(inv(X),p), где p определяет способ расчета:
— ?=1 – число обусловленности матрицы, основанное на первой норме;
— ?=2 – число обусловленности матрицы, основанное на второй норме;
— ?= ‘fro’ – число обусловленности матрицы, основанное на норме Фро
бениуса (Frobenius);
— ?=inf – число обусловленности матрицы, основанное на норме неопре
деленности;
• c = cond(X) – возвращает число обусловленности матрицы, основанное на
второй норме. Пример:
>> d=cond(hilb(4))
d=
1.5514e+004
Детерминант матрицы вычисляется на основе треугольного разложения мето
дом исключения Гаусса:
[L,U]=lu(A); s=det(L); d=s*prod(diag(U));
• condeig(A) – возвращает вектор чисел обусловленности для собственных
значений A.