Matlab算矩阵决定式为什么算出这么个结果?

>>A=[101;211;321];>>det(A)ans=-1.1102e-16A=101211321用笔算,det(A)应该等于0吧,为什么matlab得的是-1.1... >> A=[1 0 1;2 1 1;3 2 1];
>> det(A)

ans =

-1.1102e-16

A =

1 0 1
2 1 1
3 2 1
用笔算,det(A)应该等于0吧,为什么matlab得的是 -1.1102e-16?

请高手赐教!
展开
ttqs5
2012-06-26 · TA获得超过408个赞
知道小有建树答主
回答量:346
采纳率:0%
帮助的人:341万
展开全部
试了一下还真是这样= =
估计matlab他的计算方式不是向我们那样乘起来加减的。
下面是其他有个知道的回答。

计算机中的数值是浮点数,不是我们理解的实数,所以当我们输入一个矩阵时,里面的元素和我们输入的数据是有一点点误差的。LU分解时,对矩阵的一些元素进行了减法,扩大了这些误差,所以本来应该是零的值很可能变成一个很小的值。第二个矩阵的行列式恰好等于零是因为运气好正好没扩大误差。嗯,如果你想深入分析,最好先看看浮点数系统(floating-points system)。然后自己编一个精度更低的浮点数系统模拟器,再算算,就可以体会到期间的奥妙了。

参考资料: http://zhidao.baidu.com/question/325337618.html

小九九go
2012-06-26 · TA获得超过952个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:370万
展开全部
刚用了matlab算了一下 结果为0 我的版本7.0.0.19920 (R14)
A=[1 0 1;2 1 1;3 2 1];det(A)

ans =

0
你重启程序试试? 要不就是你精度设置的问题。
追问
怎么改变所谓“精度设置”?
追答
file-preferences
看一下text display里的numeric format是什么型 我用的是short
刚才试了下别的型 还是等于0
我确实遇见过你说的那种情况,但是一般都出现在2个数精度不同的情况,两个数做运算就会出现一个极小的值
你比如
0.42-0.5+0.08

ans =

-1.3878e-017
遇见这种数,就当它是0就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式