Hannya 发表于 2022-1-25 17:02:23

浮点数计算问题(大概?)

看课本的时候偶然发现的一个问题,就是在这样一个程序运算下
import numpy as np
def deriv(f,x,h,n=1):
if n == 1:
    return (f(x+h)-f(x))/h
else:
    return (deriv(f,x+h,h,n-1)-deriv(f,x,h,n-1))/h

#本质上就是一个模拟微分的函数,如果n=1则按照微分定义,如果n=2则分头继续导

H =
for h in H:
E1 = deriv(np.exp,1,h,1)
E3 = deriv(np.exp,1,h,3)
e = np.exp(1) #exp(x) 返还的是e的x次方的值
diff1 = np.abs(E1-e)
diff3 = np.abs(E3-e)
print("(exp(%.0e))'= %.6f, which is %.2e away from the value of %.6f." % (h,E1,diff1,e))
print("(exp(%.0e))'''= %.6f, which is %.2e away from the value of %.6f." % (h,E3,diff3,e))

最后一个E3是0而非e附近哪个值。这是因为超出运算精度了还是什么其他原因吗?
用的是Colaboratory。

Hannya 发表于 2022-1-25 17:04:45

并且倒数第二个E3(倒数第三行输出)也非常可疑。理应来讲应当也是e附近哪个值,但是显示的却是3.11。
页: [1]
查看完整版本: 浮点数计算问题(大概?)