作者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/cn.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