[問題] exp函數如何才能取到真值?

看板MATLAB作者 (Raphael Y.S.Lee)時間12年前 (2013/05/01 13:43), 編輯推噓4(4012)
留言16則, 6人參與, 最新討論串1/1
之前一直聽說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)

05/01 14:18, , 1F
因為小數點浮點計算問題
05/01 14:18, 1F

05/01 14:18, , 2F
這你問我就好啦= =
05/01 14:18, 2F

05/01 14:21, , 3F
exp(710) 是 inf 了
05/01 14:21, 3F

05/01 14:21, , 4F
你要給他一個有限直取代
05/01 14:21, 4F

05/01 14:22, , 5F
這不是 exp 函數有問題
05/01 14:22, 5F

05/01 14:31, , 6F
google 算錯了?
05/01 14:31, 6F

05/01 15:05, , 7F
可我需要精確的結果...
05/01 15:05, 7F

05/01 15:06, , 8F
所以我應該改問如何能解決浮點計算的問題嗎?
05/01 15:06, 8F

05/01 15:09, , 9F
symbolic toolbox?
05/01 15:09, 9F

05/01 21:55, , 10F
e^x/(1+e^x) = 1/(e^(-x) + 1) 這樣就不會爆了
05/01 21:55, 10F

05/01 23:46, , 11F
感謝大家! 最後決定用樓上的方法:從問題2變成問題1
05/01 23:46, 11F

05/01 23:48, , 12F
不過問題1似乎無解 我下午弄錯了 google也是顯示1...
05/01 23:48, 12F

05/02 00:14, , 13F
1/(1+r) ~ 1 - r + r^2 - ...
05/02 00:14, 13F

05/02 00:15, , 14F
原po可以直接拿 1 - e^(-x) 來近似
05/02 00:15, 14F

05/02 00:16, , 15F
不過基本上 e^(-x) 已經小到可以直接忽略掉
05/02 00:16, 15F

05/02 01:23, , 16F
只要叫程式單單存1-x中x的部份就行了,也就是e^(-x)
05/02 01:23, 16F
文章代碼(AID): #1HWAjuho (MATLAB)