Как найти определитель матрицы в matlab

Syntax

Description

example

d = det(A) returns the determinant of
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)

Figure contains an axes object. The axes object with xlabel nz = 37 contains a line object which displays its values using only markers.

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

AInput 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
to the condition number of a matrix.

The determinant of a matrix can be arbitrarily large
or small without changing the condition number.

det uses the LU decomposition to calculate
the determinant, which is susceptible to floating-point round-off
errors.

The determinant calculation is sometimes numerically
unstable. For example, det can produce a large-magnitude
determinant for a singular matrix, even though it should have a magnitude
of 0.

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

AInput 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

MInput 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)

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

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

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

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

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

свернуть все

AВведите матрицу
квадратная числовая матрица

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

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

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

Генерация кода 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.

Понравилась статья? Поделить с друзьями:
  • Tlauncher произошла непредвиденная ошибка как исправить
  • Как найти диэлектрическую проницаемость керосина
  • Как надо срочно исправить
  • Как найти разряд в русском языке прилагательных
  • Как найти квадратуру дома