[討論] 有辦法避免計算結果是inf嗎

作者: weien0126 (rffvb)   2017-04-06 20:18:00
就是我會碰到一個情況
我的變數 product =
(47!46!45!44!43!42!)^(-1)
( ! : factorial )
47!46!45!44!43! 在matlab上算出來是兩百多位數
假如再乘上42! 在matlab上運算後會出現 Inf , Inf^(-1) = 0
這樣我的product 算出來等於0 , 帶進去equation算 就沒意義了
想請問當遇到這種 "很小很小" 或 "很大很大" 的值 要做運算的時候
是要去拆解那個值跟equation其他變數去做運算嗎 ?
( 還是這樣也沒有用?因為到時候那些值還是會乘在一起,然後最後在matlab上就會顯示I
nf )
還是有甚麼解決方法,可以朝那個方向去做?
我有嘗試過用
digits() ,vpa() 去控制運算的位數
但這樣是不是有點像把那個值truncate後去做運算
這樣精準度是不是就不是原本equation跑出來那麼準了
謝謝
作者: aada (aada)   2017-04-06 20:23:00
我會加個0.0000001來避免照問題
作者: worcdlo (worcdlo)   2017-04-06 21:16:00
原本就不是準的吧? 光是42!就可以把mantissa塞爆了自己開個function寫個加法和乘法運算 想開幾格就開幾格我是說開矩陣陣列 取代原本參數型態精度的限制
作者: lavifoxbat (花次郎)   2017-04-07 02:27:00
只是要近似值的話 取log變成加法 最後再exp回來?
作者: worcdlo (worcdlo)   2017-04-08 14:40:00
exp回來還是會爆掉 不過樓上提供很好的想法 其實要分析的話 log後再分析也可以吧 單純空間不同

Links booklink

Contact Us: admin [ a t ] ucptt.com