You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中点积分近似:两种中点公式的效率与差异咨询

两个中点积分公式的差异与效率分析

一、数学等价性(看似不同,实则同源)

先对两个公式做代数化简:

  • 书中公式:midpoint = 0.5 * (2 * a + delta_x * (2 * i - 1))
    展开后:midpoint = a + delta_x * i - delta_x / 2
  • 搜索到的公式:midpoint = a + (dx / 2) + (i * dx)
    整理后:midpoint = a + dx * i + dx / 2

两者的核心差异仅在于循环变量i的起始取值范围:

  • 若书中公式的i从1到n(n为区间数),第一个中点是a + delta_x/2,正好对应积分区间[a, a+delta_x]的中点;
  • 若搜索到的公式的i从0到n-1,第一个中点同样是a + dx/2,和书中公式的计算结果完全一致。

你觉得效果差异大,大概率是实现时搞错了i的取值范围——比如搜索到的公式被错误地让i从1到n,导致所有中点都偏移了一个dx,积分结果自然偏差极大,需要更多区间来弥补误差。

二、效率与精度对比

  1. 计算效率
    两个公式的浮点运算次数几乎相同:
  • 书中公式:1次乘法、1次加法、1次除法(0.5等价于除以2);
  • 搜索到的公式:1次乘法、2次加法、1次除法。
    实际运行中两者的效率差距可以忽略不计,除非是极端大规模的循环场景。
  1. 精度表现
    从数值计算精度来看,书中的公式更有优势:
  • 0.5*(2*a)可以避免a直接和小数相加的精度损失(比如当a是极大数时,a + dx/2的浮点精度会比0.5*(2a)差);
  • delta_x*(2i-1)的计算,在i为整数时,2i-1是整数,乘法的精度损失更小。

这就是为什么书中公式用更少的区间就能达到准确结果——不是公式本身逻辑不同,而是数值精度更高,相同区间数下的误差更小。

内容的提问来源于stack exchange,提问作者Omar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:08:13