急求!!!float数乘法溢出问题!

Civiano 2013-09-23 10:19:24
如图所示

A_ij取0或1,theta是个(0,1)区间上的小数,i,j的区间为(0,N),s的区间为(0,C)。在做累乘时,如果N很大,常常会导致分子分母都为0。
另一方面,由于分母的存在,似乎不能采用取对数再运算的方法。
求各位大神指点!
...全文
625 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bird_1989 2013-11-13
  • 打赏
  • 举报
回复
完全看不懂的运算
maniachhz 2013-10-06
  • 打赏
  • 举报
回复
数学运算太神秘.....
panghuhu250 2013-09-23
  • 打赏
  • 举报
回复
log(pi_r)+sum of A_ij*log(theta_rj) - log(pi_s) - sum of A_ij*log(theta_sj)
这个反了,应该是:
-log(pi_r) - sum of A_ij*log(theta_rj) + log(pi_s) + sum of A_ij*log(theta_sj)
panghuhu250 2013-09-23
  • 打赏
  • 举报
回复
首先, 把记号简化一下, 令b_s = pi_r*product of(theta...), 你的公式可以表示为: b_r/(sum of b_s), 分子分母同除以b_r,得到1/sum(b_s/b_r). 只要能计算b_s/b_r就行了, b_s/b_r完全是乘除法, 可以通过log计算: 先算
log(pi_r)+sum of A_ij*log(theta_rj) - log(pi_s) - sum of A_ij*log(theta_sj)
再取指数. 分母中有一个是1, 其它的b_s/b_r也一定大于0, 所以分母一定不会是0.
iasky 2013-09-23
  • 打赏
  • 举报
回复
这个不是很懂,建议参考numpy这个库。 http://www.numpy.org/

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧