文档

依据

矩阵的行列式

语法

d =侦破(A)

描述

例子

d =相同(一个返回方阵的行列式一个

例子

全部折叠

创建一个3 × 3的方阵,一个

A = [1 -2 - 4;5 2 0;1 0 3)
一个=1 -2 4 -5 2 0 1 0 3

计算的行列式一个

d =侦破(A)
d = -32

检验为什么行列式不是奇点的精确度量。

用单位矩阵乘以一个10 × 10的矩阵,眼睛(10),由少数人。

眼睛= (10)* 0.0001;

矩阵一个沿着主对角线有很小的分量。然而,一个奇异,因为它是单位矩阵的倍数。

计算的行列式一个

d =侦破(A)
d = 1.0000 e-40

行列式极小。形式的耐受性测试abs(侦破(A)) <托尔可能会将这个矩阵标记为奇异。尽管矩阵的行列式接近于零,一个其实不是病态的。因此,一个是不接近单数的。矩阵的行列式可以任意接近于零,而不传递关于奇点的信息。

调查如果一个是单数,可以用the气孔导度rcond功能。

计算的条件数一个

c =电导率(A)
c = 1

结果证实了一个不是病态的。

检验如何计算矩阵逆的行列式^ (1),对于病态矩阵一个,无需显式计算^ (1)

创建一个10 × 10的希尔伯特矩阵,一个

一个= hilb (10);

的条件数一个

c =电导率(A)
c = 1.6025 e + 13

大的条件数表明一个是接近单数,那么算计发票(一个)可能会产生不准确的结果。因此,求逆行列式依据(发票(A))也是不准确的。

求的逆的行列式一个利用这个事实

d1 = 1 /精细(A)
d1 = 4.6202 e + 52

该方法避免了计算矩阵的逆,一个

计算希尔伯特矩阵的逆矩阵的行列式,一个,使用invhilb.将结果与d1求相对误差d1

d =检波器(invhilb (10));relError = abs (d1-d) / abs (d)
relError = 1.1462 e-04

相对误差d1相当小。避免显式计算的逆一个最小化。

为了比较,也计算的逆的行列式一个通过显式计算逆函数。将结果与d来查看相对误差。

d2 =检波器(发票(A));relError2 = abs (d2-d) / abs (d)
relError2 = 2.2824 e-05

计算中的相对误差d2许多数量级比的数量级大吗d1

检查一个矩阵,它是完全奇异的,但它有一个大的非零行列式。理论上,任何奇异矩阵的行列式都是零,但由于浮点运算的性质,这个理想并不总是可以实现的。

创建一个13乘13的对角占优奇异矩阵,一个

A = diag([24 46 64 78 88 94 96 94 88 78 64 46 24]);S =诊断接头([-13 -24 -33 -40 -45 -48 -49 -48 -45 -40 -33 -24),1);A = A + S + rot90(S,2)
一个=24 -13 0 0 0 0 0 0 0 0 0 0 0 -24 46 -24 0 0 0 0 0 0 0 0 0 0 0 -33 64 -33 0 0 0 0 0 0 0 0 0 0 0 -40 78 -40 0 0 0 0 0 0 0 0 0 0 0 -45 88 -45 0 0 0 0 0 0 0 0 0 0 0 -48 94 -48 0 0 0 0 0 0 0 0 0 0 0 -49 96 -49 0 0 0 0 0 0 0 0 0 0 0 -48 94 -48 0 0 0 0 0 0 0 0 0 0 0 -45 88 -45 0 0 0 0 0 0 0 0 0 0 0 -40 78 -40 0 0

一个是奇异的,因为行是线性相关的。例如,sum ()产生一个0的向量。

计算的行列式一个

d =侦破(A)
d = 1.0597 e + 05

的行列式一个是相当大的,尽管事实是一个是单数。事实上,行列式一个应该是零!的不准确d是由于集合四舍五入误差在MATLAB®实现LU分解,哪依据用于计算行列式。这个结果展示了计算数值行列式的几个重要方面。看到限制章节以了解更多细节。

输入参数

全部折叠

输入矩阵,指定为方阵数字矩阵。

数据类型:|
复数的支持:金宝app是的

限制

避免使用依据检查一个矩阵是否由于下列限制而奇异。使用气孔导度rcond代替。

限制 结果

行列式的大小通常与矩阵的条件数无关。

矩阵的行列式可以任意大或任意小,而不改变条件数。

依据使用逻辑单元分解来计算行列式,这很容易产生浮点舍入错误。

行列式计算有时在数值上是不稳定的。例如,依据对于一个奇异矩阵可以产生一个大的行列式,即使它的模应该是0。

算法

依据由高斯消去得到的三角形因子计算行列式函数。

[L,U] = lu(X) s = det(L) %总是+1或-1 det(X) = s*prod(diag(U))

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

之前介绍过的R2006a

这个话题有用吗?