gpt4 book ai didi

logarithm - 使用对数来避免数值下溢的算术问题

转载 作者:行者123 更新时间:2023-12-01 00:03:51 25 4
gpt4 key购买 nike

我有两个分数列表;

A = [ 1/212, 5/212, 3/212, ... ]
B = [ 4/143, 7/143, 2/143, ... ] .

如果我们定义 A' = a[0] * a[1] * a[2] * ...B' = b[0] * b[1] * b[2] * ...
我想计算 A' / B' 的值,

我的问题是 A 和 B 都很长,每个值都很小,所以计算乘积会很快导致数值下溢......

我了解通过对数将乘积转化为总和可以帮助我确定 A' 或 B' 中的哪个更大

max( log(a[0])+log(a[1])+..., log(b[0])+log(b[1])+... )
但我需要实际比例....

迄今为止我最好的选择是将数字表示保留为分数,即 A = [ [1,212], [5,212], [3,212], ... ]并实现我自己的算术,但它变得笨拙,我觉得有一种(简单的)对数方式我只是想念......

A 和 B 的分子不是来自序列。对于这个问题,它们也可能是随机的。如果它有助于 A 中所有值的分母相同,那么 B 的所有分母也相同。

任何想法最受欢迎!

最佳答案

您可以按稍微不同的顺序计算它:

A' / B' = a[0] / b[0] * a[1] / b[1] * a[2] / b[2] * ...

关于logarithm - 使用对数来避免数值下溢的算术问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com