用matlab计算行列式值为零的矩阵的行列式值时,为什么结果不是零?

如题所述

有一种东西叫舍入误差,不知道你有没有概念。
在计算机里只能精确表示一部分2进制的有限小数,其它的实数不论是初始数据还是中间结果都需要进行舍入。
而matlab的行列式计算并不是直接用递归定义或者完全展开n!项来实现的,在消元法当中会引进舍入误差。不过不论如何,这个误差不会很大,一般来讲会小于10^{-14}量级。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-23

是0啊,没问题啊,是不是你MATLAB设置有问题?

第2个回答  2012-10-09
看了楼上的解释,感觉是内置函数在调用过程中由于精度引起的偏差。
>> A = [1 2 3;4 5 6;7 8 9];

>> det(A)
ans =
6.6613e-016
////////////////////////////////////
>> A = sym('[1 2 3;4 5 6;7 8 9]');

>> det(A)
ans =
0
第3个回答  2011-10-21
大哥, A=[1 2 3;4 5 6;7 8 9] 的行列式等于0啊。。。 谁教你你的。。。追问

不等于0么??

第4个回答  2011-10-21
把你的行列式传上来看看,怎么可能拟!
A=magic(5)
det(A)%计算行列式的值追问

我搞了一个最简单的矩阵
A=[1 2 3;4 5 6;7 8 9]
det(A)
结果不是0
为啥?

追答

当然不为0,这个行列式的 结果不为0,你用一个简单的行列式自己,例如
有两行值相同的行列式值为0
a=[1 2 3;1 2 3;4 5 6]
det(a)

追问

为什么你们都说不为零??1x5x9+2x6x7+3x4x8-3x5x7-1x6x8-2x4x9=45+84+96-105-48-72=225-225=0。。。

不是这么算么??

相似回答