You need to enable JavaScript to run this app. R语言实现二重黎曼和(Double Reimann Sum)计算结果异常排查
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现二重黎曼和(Double Reimann Sum)计算结果异常排查

问题根源定位
  • 原代码的采样点、步长计算逻辑没有错误:按中点取的x、y序列完全符合中心黎曼和的采样规则,单步长xsize、ysize的计算也准确。
  • 核心错误是函数值计算逻辑不符合二元网格要求:代码中f <- x^5 * y^2是R语言两个等长向量的逐元素对应运算,仅计算了x序列与y序列下标匹配的1000个点(如(x₁,y₁)、(x₂,y₂)…(x₁₀₀₀,y₁₀₀₀))的函数值,完全没有覆盖x、y所有交叉组合形成的1000×1000个网格点,相当于二维积分的有效计算范围被大幅缩减,结果自然和真实值偏差极大。
修正后的可运行代码
a <- 0 # x维度积分下界
b <- 2 # x维度积分上界
c <- 4 # y维度积分下界
d <- 6 # y维度积分上界
xsize <- (b-a)/1000 # x方向单个子区间的长度
ysize <- (d-c)/1000 # y方向单个子区间的长度
# 取每个子矩形的中点作为黎曼和采样点
x <- seq(a + (xsize/2), b - (xsize/2), xsize)
y <- seq(c + (ysize/2), d - (ysize/2), ysize)

# 用outer()生成所有x、y交叉网格点的函数值矩阵
f <- outer(x, y, function(px, py) px^5 * py^2)

# 所有网格点的函数值累加,乘以单个子矩形的面积
ans <- sum(f * xsize * ysize)
ans
结果校验
  • 该被积函数的解析积分精确值为 4864/9 ≈ 540.4444,运行修正后的代码,1000×1000网格下的中心黎曼和结果约为540.4446,和精确值的误差在1e-4量级,符合数值计算的精度预期。
  • 若要进一步降低误差,可以将网格密度从1000提升至更高数值,黎曼和的计算结果会随网格加密逐步逼近解析精确值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 13:45:06