作者weien0126 (rffvb)
看板MATLAB
標題[討論] 有辦法避免計算結果是inf嗎
時間Thu Apr 6 20:18:00 2017
就是我會碰到一個情況
我的變數 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跑出來那麼準了
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.121.150
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1491481082.A.888.html
1F:推 aada: 我會加個0.0000001來避免照問題 04/06 20:23
2F:→ worcdlo: 原本就不是準的吧? 光是42!就可以把mantissa塞爆了 04/06 21:16
3F:→ worcdlo: 自己開個function寫個加法和乘法運算 想開幾格就開幾格 04/06 21:17
4F:→ worcdlo: 我是說開矩陣陣列 取代原本參數型態精度的限制 04/06 21:19
5F:→ lavifoxbat: 只是要近似值的話 取log變成加法 最後再exp回來? 04/07 02:27
6F:→ worcdlo: exp回來還是會爆掉 不過樓上提供很好的想法 其實要分析 04/08 14:40
7F:→ worcdlo: 的話 log後再分析也可以吧 單純空間不同 04/08 14:40