def differentiate(fn,lvl,value):
    d=0.0000001
    if lvl==0:
        return fn(value)
    else:
        return (differentiate(fn,lvl-1,value+d)-differentiate(fn,lvl-1,value))/d
def i(x):
    return 1 + x + x**2 + x**3 + x**4 +x**5+x**6

我试图找到I(lvl)(0),其中lvl是区分我的次数我不知道为什么我的代码为不同的D提供了完全不同的输出。将通知任何帮助:)
例如,
for x in range(7):
    print(differentiate(i,x,0))

我希望得到:1,1,2,6,24120720。
但是,根据d的值,我得到了不同的值。

最佳答案

这个问题很容易理解。
您正在评估值,例如f(0 + d),即。

1 + 0.0000001 + 0.0000001² + 0.0000001³ + 0.0000001^4 + 5 0.0000001^5 =
1.00000010000001000000100000010000005

当双精度浮点数能够表示大约15个有效数字时。
高阶的数值导数是很有挑战性的。

09-11 17:56