[讨论] 有办法避免计算结果是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