更新时间:2024-04-03 16:38
det是一个计算机函数,在FreeMat、Matlab中,该函数用于求一个方阵(square matrix)的行列式(Determinant)。
(1)功能:det为矩阵的行列式值。det计算某一方阵(行列相等的二维数组)的对应行列式值每一矩阵都有一个对应的行列式。行列式是对矩阵表按一定规则进行运算之后所得到的一个数值。行列式可以确定出对应矩阵是否存在着逆,即确定矩阵的奇异性,可以用来解线性方程组等。当行列式为0或近似于0时,其对应逆矩阵不存在,或虽然存在,但计算机计算出来的结果不正确。
(2)语法:d = det(X)
返回方阵X的行列式值。如果X仅包含一个整数元素,返回的结果d也是一个整数。
(3)解析:将der(X)==0作为对矩阵奇异性的测试仅适合具有阶和较小整数元素的矩阵。使用abs(det(X))<=tolerance作为检测矩阵奇异性的方法同样也不是推荐方法,原因在于正确选择的容差tolerance非常困难。函数cond(X)则可以检查奇异或者接近奇异的矩阵。
(4)算法:行列式的值是通过高斯消元法得到三角矩阵的系数得到的。
[L,U]=lu(A)
s= det(L) %这一值总为+1l或-1
det(A)=s*prod(diag(U))
(5)应用实例
语句A=[1 2 3;45 6;7 8 9]得到
该矩阵恰好是一个奇异矩阵,所以d=det(A)的结果为d=0。将元素A(3,3)改变为A(3,3)=0可以将A变为一个非奇异的矩阵。则d=det(A)的结果为d=27。
(5)详解
在FreeMat中,一个方阵的行列式是通过LU分解计算得到的。需要注意的是,若干个矩阵相乘得到的矩阵的行列式等于这些矩阵的行列式相乘。于是,我们得到:
LU=PA
这里L是一个对角线上元素全为1的下三角矩阵(lower triangular),U是一个上三角矩阵(upper triangular),P是一个行置换矩阵(row-permutation matrix):
|LU|=|L||U|=|U|=|PA|=|P||A|
这里我们应用了L的行列式为1这个结论。P的行列式为1或-1。
所谓置换矩阵,是指交换一个n*n的单位矩阵的两行得到的矩阵(在线性代数中,这种操作叫做矩阵的初等变换)。置换矩阵的每行/列都只有一个1,其余元素全为0。
rank,inv
在FreeMat中的示例:
--> A = [0 0 0; 1 2 3; 4 5 6];
--> det(A)
ans =
--> B = [1 2; 3 4];
--> det(B)
ans =
-2
性质1:如果(a,b)=(1,0),(c,d)=(0,1)则平行四边形变成正方形,面积=1,A为单位阵,即
性质2:若A有相同的两行,则det(A)=0.
看一个极端情况,如果(a,b)=(c,d),即向量(a,b)与(c,d)重合,面积肯定为0。