作者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)
推 JamesChen:因為小數點浮點計算問題 05/01 14:18
→ JamesChen:這你問我就好啦= = 05/01 14:18
推 JamesChen:exp(710) 是 inf 了 05/01 14:21
→ JamesChen:你要給他一個有限直取代 05/01 14:21
→ JamesChen:這不是 exp 函數有問題 05/01 14:22
推 sunev:google 算錯了? 05/01 14:31
→ Raphali:可我需要精確的結果... 05/01 15:05
→ Raphali:所以我應該改問如何能解決浮點計算的問題嗎? 05/01 15:06
→ kdjf:symbolic toolbox? 05/01 15:09
→ forloricever:e^x/(1+e^x) = 1/(e^(-x) + 1) 這樣就不會爆了 05/01 21:55
→ Raphali:感謝大家! 最後決定用樓上的方法:從問題2變成問題1 05/01 23:46
→ Raphali:不過問題1似乎無解 我下午弄錯了 google也是顯示1... 05/01 23:48
→ doom8199:1/(1+r) ~ 1 - r + r^2 - ... 05/02 00:14
→ doom8199:原po可以直接拿 1 - e^(-x) 來近似 05/02 00:15
→ doom8199:不過基本上 e^(-x) 已經小到可以直接忽略掉 05/02 00:16
推 sunev:只要叫程式單單存1-x中x的部份就行了,也就是e^(-x) 05/02 01:23