鱼C论坛

 找回密码
 立即注册
查看: 990|回复: 1

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

[复制链接]
发表于 2022-1-25 17:02:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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。

运行后显示

运行后显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-1-25 17:04:45 | 显示全部楼层
并且倒数第二个E3(倒数第三行输出)也非常可疑。理应来讲应当也是e附近哪个值,但是显示的却是3.11。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 04:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表