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

bars()函数生成数组后,如何用reduce近似计算圆周率π?

问题解答

首先得搞懂你的bars()函数到底在算什么:它生成的是半径为this.numberOfBars的四分之一圆上的点的y坐标(x从0到this.numberOfBars-1,对应每个x的y值满足圆方程x² + y² = r²,r就是this.numberOfBars)。

用这个数组近似计算π的核心是矩形法积分近似圆面积:

  • 数组里每个元素是矩形的高度,每个矩形的宽度是1(因为x每次递增1),所有矩形的面积和≈第一象限四分之一圆的面积。
  • 四分之一圆的面积公式是(π*r²)/4,反过来推导π的近似值:π ≈ 4 * 矩形面积和 / r²

所以正确的写法是:

const piApprox = bars().reduce((acc, curr) => acc + curr, 0) * 4 / (this.numberOfBars ** 2);

你之前的错误有两个:

  • 没乘以4:你只算了四分之一圆的面积,要乘4才对应整个圆的面积
  • 除以的是bars数量(即r),但根据圆面积公式,应该除以r²

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:05:46