我正在尝试计算矩阵逆的行列式。矩阵的逆存在。但是,当我尝试计算逆的行列式时,它在 matlab 中给了我 Inf 值。这背后的原因是什么?
问问题
5465 次
1 回答
2
简答:给定A = inv(B)
,那么det(A)==Inf
可能有两种解释:
- 在行列式的数值计算期间发生溢出,
- 中的一个或多个无限元素
A
。
在第一种情况下,您的矩阵缩放严重,因此det(B)
可能下溢和det(A)
溢出。请记住,det(a*B) == a^N * det(B)
wherea
是标量并且B
是N
时间N
矩阵。
在第二种情况下(即nnz(A==inf)>0
),矩阵B
可能是“工作精度的奇异”。
PS:
如果矩阵的条件数很大,则它几乎是奇异的。(小行列式与奇点无关,因为行列式本身的大小受缩放影响。)。
如果矩阵在高斯消元中具有零枢轴,则矩阵对于工作精度来说是奇异的:在计算逆时,matlab 必须计算1/0
哪个返回Inf
。
事实上,在 Matlab 中溢出和零除异常不会被捕获,因此,根据 IEEE 754,Inf
会传播一个值。
于 2012-07-04T14:40:33.887 回答