首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab除以0: Inf或-Inf

Matlab除以0: Inf或-Inf
EN

Stack Overflow用户
提问于 2016-11-29 18:07:26
回答 1查看 169关注 0票数 3

我不明白为什么除以0在以下两种情况下给出不同的结果。amort是一个计算常数摊销计划的函数。我们现在唯一关心的是,A的最后一个元素就是0。

代码语言:javascript
复制
amort = @(r,M) ((1+r).^(0:M)' - (1+r).^M) ./ (1-(1+r).^M)

A = amort(0.03, 20);

>> A(end)==0
ans =
     1

奇怪的是:

代码语言:javascript
复制
>> 1/0
ans =
   Inf
>> 1/A(end)
ans =
  -Inf

然而,

代码语言:javascript
复制
>> sign(A(end))
ans =
     0
>> 1/abs(A(end))
ans =
   Inf

这怎么可能?为什么?有没有什么隐藏的“标志”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 18:28:59

A(end)实际上有它的符号位集(即它是负零)。尝试使用num2hex查看十六进制表示:

代码语言:javascript
复制
>> a = -0
a =
     0    % Note the sign isn't displayed

>> num2hex(A(end))
ans =
8000000000000000

>> num2hex(a)
ans =
8000000000000000  % Same as above

>> num2hex(0)
ans =
0000000000000000  % All zeroes

>> 1/a
ans =
  -Inf

注意,-0显示为0,但实际上设置了它的符号位。因此得到了-Inf结果。

还请注意对sign函数的这一解释(强调我的意思):

对于X的每个元素,符号(X)如果元素大于零,返回1;如果元素等于零,返回0;如果元素小于零,返回-1。

由于-0不小于零,而是等于0,所以sign返回0

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40872779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档