gpt4 book ai didi

python - Python 中的数值精度损失

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:32 25 4
gpt4 key购买 nike

我想计算一系列数字的标准误差。假设数字是 x[i],其中 i = 1 ... N。为此

我设置

averageX = 0.0
averageXSquared = 0.0

然后我遍历所有 i=1,...N 并为每个我计算

averageX += x[i]
averageXSquared += x[i]**2

然后我除以N

averageX = averageXC / N
averageXSquared = averageXSquared/N

然后我对差值求平方根

stdX = math.sqrt(averageXSquared - averageX * averageX)

这里的参数肯定总是>=0。

但是,如果我设置所有 x[i] = 0.07(例如),那么我会得到一个数学域错误,因为根函数的参数是负数。似乎有一些精度损失。

参数的数量级为 10e-15。

这看起来并不令人鼓舞。我现在必须先检查自己,看看结果是否定的,然后才能生根。

还是我做错了什么

最佳答案

这不是python问题,而是一般精度有限的问题。如果将所有数字设置为相同的值,则标准误差在数学上为 0,但对于计算机而言并非如此。处理此问题的正确方法是将非常小的值设置为 <0 到 0。

x = [0.7, 0.7, 0.7]
average = sum(x) / len(x)
sqav = sum(y**2 for y in x) / len(x)
stderr = math.sqrt(max(sqav - average**2, 0))

关于python - Python 中的数值精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23372750/

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