从π的无穷乘积到‘点火失败’:华里士公式背后的数学之美与编程实现

张开发
2026/4/18 13:02:26 15 分钟阅读

分享文章

从π的无穷乘积到‘点火失败’:华里士公式背后的数学之美与编程实现
从π的无穷乘积到‘点火失败’华里士公式背后的数学之美与编程实现数学史上那些看似简单的公式往往隐藏着令人惊叹的智慧。17世纪英国数学家约翰·沃利斯John Wallis提出的这个关于圆周率π的无穷乘积公式不仅在当时引发了数学界的震动至今仍以其独特的魅力吸引着数学爱好者和程序员们。让我们先看一个有趣的场景当你尝试用这个公式计算π时会发现随着计算项数的增加结果会神奇地逼近π/2——但前提是你能让计算点火成功。1. 沃利斯公式的历史背景与数学意义1655年沃利斯在《无穷算术》中首次发表了这个公式。在那个微积分尚未正式诞生的年代沃利斯通过观察整数乘积的模式大胆地将结论推广到无穷乘积的情形。这种思想在当时堪称革命性为后来的牛顿和莱布尼茨发展微积分奠定了基础。公式的核心在于奇偶双阶乘的比值π/2 lim(n→∞) [ (2×4×6×...×2n) / (1×3×5×...×(2n-1)) ]² × 1/(2n1)这个看似简单的表达式背后蕴含着深刻的数学内涵连分数与无穷乘积沃利斯公式展示了如何用离散的整数序列逼近超越数π组合数学的雏形双阶乘的概念后来在组合数学中扮演重要角色分析学的先驱这是早期数学中少有的涉及极限和无穷过程的例子沃利斯本人可能没想到他的公式会在三个世纪后成为测试计算机浮点运算能力的经典案例2. 公式的直观理解与点火机制为什么这个公式会被戏称为点火公式让我们拆解它的运作机制偶数情形点火成功分子(2n)!! 2ⁿ × n!分母(2n-1)!! (2n)! / (2ⁿ n!)最终会生成π/2的倍数奇数情形点火失败乘积终止于1无法产生π的倍数关系这种全有或全无的特性像极了火箭发射时的点火过程——要么成功升空要么原地不动。用Python可以直观展示这个过程import math def wallis_product(n_terms): product 1.0 for i in range(1, n_terms1): numerator (2 * i) ** 2 denominator (2 * i - 1) * (2 * i 1) product * numerator / denominator return 2 * product # 计算不同项数时的近似值 for n in [10, 100, 1000, 10000]: approx_pi wallis_product(n) print(f使用{n}项近似值: {approx_pi} (误差: {abs(approx_pi - math.pi)}))3. 收敛性分析与数值实验沃利斯公式的收敛速度并不算快但它的收敛模式却非常有趣。通过数值实验我们可以观察到计算项数近似值与π的绝对误差103.06770.07391003.13380.007810003.14080.0008100003.14150.0001收敛速度大约是O(1/n)这意味着要获得更高的精度需要显著增加计算量。不过我们可以通过以下技巧改进Richardson外推法利用不同步长的计算结果加速收敛连分数变换将乘积形式转换为连分数形式并行计算利用现代多核处理器加速大规模计算# 使用numpy向量化计算加速 import numpy as np def vectorized_wallis(n_terms): i np.arange(1, n_terms1) numerators (2 * i) ** 2 denominators (2 * i - 1) * (2 * i 1) return 2 * np.prod(numerators / denominators)4. 从数学到编程可视化收敛过程理解数学公式最好的方式之一就是将其可视化。我们可以用matplotlib展示沃利斯公式的收敛过程import matplotlib.pyplot as plt def plot_wallis_convergence(max_terms200): terms range(1, max_terms1) approximations [wallis_product(n) for n in terms] plt.figure(figsize(10, 6)) plt.plot(terms, approximations, label沃利斯近似值) plt.axhline(ymath.pi, colorr, linestyle--, label真实π值) plt.xlabel(计算项数) plt.ylabel(π的近似值) plt.title(沃利斯公式收敛过程可视化) plt.legend() plt.grid(True) plt.show() plot_wallis_convergence()这幅图会清晰地展示近似值如何随着项数增加而波动地逼近π。有趣的是近似值总是从上方趋近于π这种单调收敛的特性使得沃利斯公式在数值计算中特别有用。5. 现代应用与扩展思考虽然沃利斯公式在现代计算π的算法中已不是最高效的选择但它在多个领域仍有重要价值计算机科学教学展示无穷乘积与极限的概念数值分析测试浮点运算的稳定性算法设计启发更高效的π计算算法更深入地我们可以思考为什么这个公式会产生π它与圆的几何性质有何内在联系如何将沃利斯公式推广到其他常数的表示在量子计算等新兴领域这类古典公式是否有新的应用场景# 更高效的实现使用对数避免大数相乘 import math def log_wallis(n_terms): log_product 0.0 for i in range(1, n_terms1): log_product math.log(4 * i**2) - math.log(4 * i**2 - 1) return 2 * math.exp(log_product)在数学与编程的交汇处沃利斯公式就像一座桥梁连接着17世纪的数学智慧与21世纪的计算技术。当你下次在Python中调用math.pi时或许会想起这个将奇偶数的简单乘积与圆周率神奇联系起来的公式。

更多文章