|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
看课本的时候偶然发现的一个问题,就是在这样一个程序运算下
- 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 = [1e-4,1e-5,1e-6]
- 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。 |
-
运行后显示
|