[討論] 運算結果不同?

看板MATLAB作者 ( )時間12年前 (2012/04/26 21:50), 編輯推噓3(306)
留言9則, 2人參與, 最新討論串1/1
我要計算 log(20^-20+a+b),但是當 a=-b 的時候會出錯,例如 log(20^-20+1-1)=-Inf log(20^-20)=-59.914645471079822 請問要怎麼避免這種問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.79.107

04/26 23:16, , 1F
我猜錯誤的原因是20^-20比起1和-1小太多了
04/26 23:16, 1F

04/26 23:16, , 2F
20^-20+1時 20^-20就備省略掉了
04/26 23:16, 2F

04/26 23:17, , 3F
於是20^-20+1-1 實際上就是1-1而已
04/26 23:17, 3F

04/26 23:19, , 4F
解決的方法是log(20^-20+(1-1)) 先把後面算完
04/26 23:19, 4F

04/26 23:19, , 5F
避開省略造成的錯誤
04/26 23:19, 5F

04/26 23:20, , 6F
或者是log(1-1+20^-20)
04/26 23:20, 6F

04/26 23:21, , 7F
Matlab好像是從左邊算到右邊 我不太確定C是不是也是這樣
04/26 23:21, 7F

04/26 23:21, , 8F
請會得人幫忙解答一下吧
04/26 23:21, 8F

04/27 00:18, , 9F
log(20^-20+(a+b))
04/27 00:18, 9F
文章代碼(AID): #1FcLAhbs (MATLAB)