什么是韦达公式?
1593 年,法国数学家弗朗索瓦·韦达(François Viète)发表了已知历史上第一个用闭式解析形式表示圆周率π的无穷乘积公式。整个公式完全由「二分之一」的嵌套平方根层层叠加而成。本计算器会按你指定的项数计算这个乘积,并展示数值收敛到 3.14159265358979 的速度有多快。这是一条纯数学公式,无论在世界哪个角落,算出来的结果都完全一致。
$$\frac{2}{\pi} = \sqrt{\tfrac12} \cdot \sqrt{\tfrac12 + \tfrac12\sqrt{\tfrac12}} \cdot \sqrt{\tfrac12 + \tfrac12\sqrt{\tfrac12 + \tfrac12\sqrt{\tfrac12}}} \cdots$$
使用方法
输入迭代次数(即要计算的乘积项数,默认 100),再选择希望显示的小数位数。每多算一项,相当于把内接正多边形的边数翻一倍,从正 4 边形一路逼近到正 \(2^{n+1}\) 边形。由于本工具采用标准 IEEE 754 双精度浮点运算,π最多可解析到约 15 位有效数字;「显示位数」选项只是把结果四舍五入到对应的位数。
公式原理详解
初始令 \(s = 0\)、\(y = 1\)。在第 \(k\) 步,先把 \(s\) 更新为 \((1 + s) / 2\) 的平方根,再将这个新值乘进累计乘积 \(y\) 中。每个因子都等于 \(\cos(\pi / 2^{k+1})\),而这些余弦的连乘积会趋向于 \(2/\pi\)。因此,π可用 2 除以累计乘积 \(y\) 来逼近。这个估计值会从下方逐步上升、逼近π,每多算一项大约能多算对一个二进制位。
$$s_k=\sqrt{\tfrac{1+s_{k-1}}{2}},\quad y_k=\prod_{i=1}^{k}s_i,\quad \pi=\frac{2}{y_k}$$
计算示例
k=1:\(s = \sqrt{0.5} = 0.70710678\),\(y = 0.70710678\),\(\pi \approx 2.82842712\)。k=2:\(s = 0.92387953\),\(y = 0.65328148\),\(\pi \approx 3.06146746\)。k=3:\(\pi \approx 3.12144515\)。k=4:\(\pi \approx 3.13654849\)。到 \(k=20\) 时,结果已经能与π的前 14 位小数完全吻合;而迭代次数只要达到 30 左右,在双精度下就能稳稳锁定 3.14159265358979。
常见问题
为什么把显示位数调到超过 15 位也没用? 标准双精度浮点数本身只能保存约 15 到 16 位有效数字,所以无论选项怎么调,底层运算都无法解析出更多位数。
为什么迭代次数太少,结果误差就很大? 这个乘积是按几何级数收敛的;项数只有寥寥几个时,相当于还在用边数很少的多边形逼近圆,因此结果会明显小于π。
结果会不会超过π? 不会。每个因子都是小于 1 的余弦值,所以 \(2/y\) 始终是从下方逼近π的偏小估计值。