gpt4 book ai didi

c++ - 在 C/C++ 中实现导数

转载 作者:IT老高 更新时间:2023-10-28 21:43:32 27 4
gpt4 key购买 nike

f(x) 的导数通常如何以编程方式计算以确保最大准确性?

我正在实现 Newton-Raphson方法,需要对函数求导。

最佳答案

我同意@erikkallen 的观点,即 (f(x + h) - f(x - h))/2 * h 是数值逼近导数的常用方法。然而,获得正确的步长 h 有点微妙。

(f(x + h) - f(x - h))/2 * h 中的近似误差随着 h 变小而减小,这表明您应该使 h 尽可能小。但是随着 h 变小,浮点减法的误差会增加,因为分子需要减去几乎相等的数字。如果 h 太小,您可能会在减法中失去很多精度。因此,在实践中,您必须选择一个不太小的 h 值,以最大限度地减少 近似 错误和 numerical 错误的组合。

根据经验,您可以尝试 h = SQRT(DBL_EPSILON) 其中 DBL_EPSILON 是最小的 double e,这样1 + e != 1 机器精度。 DBL_EPSILON 大约是 10^-15 所以你可以使用 h = 10^-710^-8 .

有关详细信息,请参阅这些 notes关于选择微分方程的步长。

关于c++ - 在 C/C++ 中实现导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1559695/

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