gpt4 book ai didi

c++ - 在计算 C++ 中两个 float 的差时,y * (1 - x/y) 是否比 y - x 更好?

转载 作者:太空狗 更新时间:2023-10-29 23:21:25 25 4
gpt4 key购买 nike

在 C++ 中减去两个 float 会导致 catastrophic cancellation .

在数值稳定性方面,用 y * (1 - x/y) 代替 y - x 有什么好处吗?

最佳答案

哈哈,没有。如果这两个数字几乎相等且远离 0,那么当您决定要找出两个数字之间的差异时,就会发生灾难性的抵消。无论您使用的公式多么古怪——计算所需的信息精确差异计算已被丢弃。

为了避免这种情况,您需要计算并存储不同的数字。也就是说,不是计算和存储 xy,而是计算 a=xb=y-x。或者 a=(x+y)/2b=(x-y)/2。您不会根据 xy 计算它们——这会遇到完全相同的问题——相反,您会计算并存储它们作为实际数字,并根据需要计算 xy。 (显然,这需要选择 ab,根据您的用例,这实际上可以计算出来。)

关于c++ - 在计算 C++ 中两个 float 的差时,y * (1 - x/y) 是否比 y - x 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312571/

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