作者Raphali (Raphael Y.S.Lee)
看板MATLAB
标题[问题] exp函数如何才能取到真值?
时间Wed May 1 13:43:17 2013
之前一直听说matlab的exp运算有问题 今天自己遇到了...
想请问板上高手们exp怎麽写才算得出来真值?
先谢!!
1.计算结果趋近1时,算出来的不是真值
MATLAB: exp(700)/(1+exp(700))=1
google: exp(700)/(1+exp(700))=0.99947473399
2.算不出结果(值太接近1时?)
d=exp(710)/(1+exp(710))
d=NaN
(我还不死心的试了一下 到709都算得出来近似值是1 为什麽...?orz)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.8.253
※ 编辑: Raphali 来自: 118.168.8.253 (05/01 13:44)
※ 编辑: Raphali 来自: 118.168.8.253 (05/01 13:51)
1F:推 JamesChen:因为小数点浮点计算问题 05/01 14:18
2F:→ JamesChen:这你问我就好啦= = 05/01 14:18
3F:推 JamesChen:exp(710) 是 inf 了 05/01 14:21
4F:→ JamesChen:你要给他一个有限直取代 05/01 14:21
5F:→ JamesChen:这不是 exp 函数有问题 05/01 14:22
6F:推 sunev:google 算错了? 05/01 14:31
7F:→ Raphali:可我需要精确的结果... 05/01 15:05
8F:→ Raphali:所以我应该改问如何能解决浮点计算的问题吗? 05/01 15:06
9F:→ kdjf:symbolic toolbox? 05/01 15:09
10F:→ forloricever:e^x/(1+e^x) = 1/(e^(-x) + 1) 这样就不会爆了 05/01 21:55
11F:→ Raphali:感谢大家! 最後决定用楼上的方法:从问题2变成问题1 05/01 23:46
12F:→ Raphali:不过问题1似乎无解 我下午弄错了 google也是显示1... 05/01 23:48
13F:→ doom8199:1/(1+r) ~ 1 - r + r^2 - ... 05/02 00:14
14F:→ doom8199:原po可以直接拿 1 - e^(-x) 来近似 05/02 00:15
15F:→ doom8199:不过基本上 e^(-x) 已经小到可以直接忽略掉 05/02 00:16
16F:推 sunev:只要叫程式单单存1-x中x的部份就行了,也就是e^(-x) 05/02 01:23