圆周率的泰勒级数公式

探索数学史上最优雅的无穷级数,揭秘人类如何利用简单的幂函数展开,一步步逼近那个神秘而永恒的常数——π。

⚡ 引言:无限逼近永恒

在数学的浩瀚星空中,圆周率 π无疑是最耀眼的恒星之一。它不仅仅是一个几何常数,定义为圆的周长与直径之比,更是连接离散整数与连续几何的桥梁。然而,如何精确地计算出这个无限不循环小数,一直是数学家们梦寐以求的挑战。

在微积分诞生之前,人们依靠割圆术等几何方法估算 π 值,效率极低。直到 17 世纪,牛顿和莱布尼茨发明了微积分,特别是泰勒级数(Taylor Series)和麦克劳林级数(Maclaurin Series)的提出,人类终于拥有了用代数运算逼近超越数的强大武器。通过将一个复杂的函数展开为无穷多项式的和,我们可以利用有限的算术运算,以惊人的精度重构出 π 的值。

本文将深入剖析圆周率的泰勒级数公式,从基础的莱布尼茨级数出发,探讨其收敛缺陷,进而引出高效的马青类公式,并展示现代计算机如何利用这些数学原理将 π 计算至小数点后数万亿位。这不仅是一次数学知识的梳理,更是一场关于人类智慧极限的思维探险。

⚙️ 核心基石:常见的泰勒级数展开

要理解如何用泰勒级数计算 π,首先必须掌握几个关键的三角函数展开式。泰勒级数的本质是将函数 f(x) 在某一点 x₀ 附近表示为无穷多项式。对于计算 π,我们主要关注的是反正切函数 arctan(x) 在 x=0 处的麦克劳林级数展开。

1. 格雷戈里 - 莱布尼茨级数 (Gregory-Leibniz Series)

这是最著名的,也是历史上第一个用于计算 π 的无穷级数。其推导基于 arctan(x) 的导数为 1/(1+x²),将其展开为几何级数后逐项积分得到:

arctan(x) = x - x³/3 + x⁵/5 - x⁷/7 + ... = Σ [(-1)ⁿ x^(2n+1) / (2n+1)]

当 x = 1 时,我们知道 arctan(1) = π/4。代入上式,便得到了著名的莱布尼茨公式:

π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...

虽然形式简洁优美,但正如前文所述,这个级数的收敛速度极慢。若要获得 π 的两位小数精度,需要累加约 300 项;而要获得四位小数精度,则需要累加超过 5000 项。这对于手算而言是灾难性的,但对于验证算法逻辑却是完美的起点。

2. 欧拉改进的级数

为了克服莱布尼茨级数的低效,欧拉等人提出了利用三角恒等式构造新的级数。例如,利用 arctan(1/√3) = π/6,我们可以得到收敛稍快的级数:

π/6 = 1/√3 - 1/(33√3) + 1/(59√3) - 1/(727√3) + ...

由于自变量 x = 1/√3 ≈ 0.577 小于 1,各项衰减速度比 x=1 时要快一些,但依然不够理想。

📜 历史演进:从手工计算到超级计算机

1671 年

詹姆斯·格雷戈里发现 arctan 级数

苏格兰数学家詹姆斯·格雷戈里首次发现了反正切函数的幂级数展开,这为后来计算 π 奠定了理论基础。他意识到如果令 x=1,就可以得到 π 的值。

1674 年

莱布尼茨独立发表公式

德国数学家戈特弗里德·威廉·莱布尼茨独立发现了该级数,并以此闻名于世,形成了所谓的“莱布尼茨公式”。尽管收敛慢,但它标志着微积分在数值计算中的首次重大应用。

1706 年

约翰·马青提出马青公式

英国天文学家约翰·马青(John Machin)发现了著名的马青公式:π/4 = 4arctan(1/5) - arctan(1/239)。这一公式利用了 x 值较小带来的快速收敛特性,成为此后两百多年计算 π 纪录的主要工具。

1949 年

ENIAC 时代的突破

世界上第一台通用电子计算机 ENIAC 利用马青公式,耗时 70 小时计算出了 π 的小数点后 2037 位,开启了计算机时代计算 π 的新纪元。

现代

Chudnovsky 算法与万亿位

现代计算已不再单纯依赖简单的泰勒级数,而是使用了基于椭圆积分的 Chudnovsky 算法,其收敛速度极快,每计算一项就能增加约 14 位有效数字。不过,其底层逻辑依然深受泰勒级数思想的启发。

🚀 进阶策略:加速收敛与算法优化

既然基础级数收敛太慢,数学家们是如何解决这个问题的?答案在于构造更优的恒等式和利用复数域的性质。

➗

马青类公式 (Machin-like Formulas)

利用 arctan 的和差公式:arctan(a) ± arctan(b) = arctan((a±b)/(1∓ab))。通过精心选择有理数 a, b, c...,使得它们的线性组合等于 π/4,且每个 arctan 的参数都非常小。例如:

π/4 = 12arctan(1/49) + 32arctan(1/57) - 5arctan(1/239) + 12arctan(1/11044)

🌀

楚德诺夫斯基算法

虽然不直接是简单的泰勒级数,但其核心涉及广义超几何级数。该公式收敛速度惊人,每加一项增加 14 位小数。它是目前打破世界纪录的首选算法。

1/π = 12 Σ [(-1)ⁿ (6n)! (13591409 + 545140134n)] / [(3n)! (n!)³ (640320)^(3n+3/2)]

⚡

Euler Transform (欧拉变换)

这是一种对交错级数进行加速的技术。对于莱布尼茨级数这样的交错级数,欧拉变换可以将收敛速度提高数个数量级,使其在有限项内达到较高的精度。

网友还关心:为什么不用简单的几何法了?

早期的阿基米德割圆术依赖于多边形边数的倍增,计算量随精度要求呈指数级增长。而泰勒级数方法,特别是经过优化的马青类公式,其计算复杂度相对较低,且非常适合计算机处理浮点运算。在现代高精度计算中,迭代算法(如高斯 - 勒让德算法)和算术几何平均法(AGM)往往比单纯的级数求和更快,但它们的思想源头依然离不开微积分的深刻洞察。

💻 计算实战:代码实现与示例

理论终须实践。下面我们通过 Python 代码演示如何利用arctan的泰勒级数来实现一个简易的 π 计算器。我们将对比不同 x 值下的收敛情况。

示例 1:莱布尼茨公式 (x=1)

此代码展示了最基础的实现。请注意,为了获得有意义的结果,我们需要极大的迭代次数。

def leibniz_pi(iterations):
    pi_approx = 0.0
    for n in range(iterations):
        term = ((-1)n) / (2n + 1)
        pi_approx += term
    return 4  pi_approx

测试:计算 100 万项

print(f"100 万项后的近似值:{leibniz_pi(1000000)}") print(f"真实 π 值:3.1415926535...")

示例 2:马青公式 (x=1/5, x=1/239)

这是更高效的方法。由于 x 很小,级数收敛极快。

import math
def arctan_taylor(x, terms):
    """计算 arctan(x) 的泰勒级数"""
    result = 0.0
    power_x = x
    for n in range(terms):
        term = power_x / (2n + 1)
        if n % 2 == 0:
            result += term
        else:
            result -= term
        power_x = x  x
    return result
def machin_pi(terms):
    # π/4 = 4arctan(1/5) - arctan(1/239)
    val1 = arctan_taylor(1/5, terms)
    val2 = arctan_taylor(1/239, terms)
    return 4  (4  val1 - val2)

测试:仅需 20 项即可达到很高精度

approx = machin_pi(20) print(f"马青公式 (20 项):{approx}") print(f"误差:{abs(math.pi - approx)}")

数据对比表

算法名称 迭代次数 准确小数位 评价
莱布尼茨级数 1,000,000 ~4 位 教学演示用,实际价值低
arctan(1/√3) 10,000 ~5 位 中等效率
马青公式 20 ~10 位 高效,适合手算模拟
Chudnovsky 1 ~14 位 现代记录保持者

❓ 常见问题解答 (FAQ)

Q: 圆周率真的可以用分数完全表示吗?

不可以。π 是一个无理数,这意味着它不能表示为两个整数的比值(分数)。它的十进制表示是无限不循环的。泰勒级数提供了一种用有理数(分数)的无穷和来逼近无理数的方法,但永远无法用有限项精确等于 π。

Q: 为什么 arctan(1) 的级数收敛这么慢?

这是因为在 x=1 处,级数处于收敛半径的边缘。根据拉格朗日余项定理,误差项与 x^(2n+1) 成正比。当 x=1 时,分子始终为 1,分母仅按线性增长 (2n+1),导致每一项减小的速度非常缓慢。只有当 |x| < 1 时,x 的高次幂才会迅速趋近于 0,从而加快收敛。

Q: 泰勒级数在计算机中会有精度问题吗?

是的。计算机使用浮点数(如 IEEE 754 标准),存在舍入误差。在进行大量累加运算时,微小的误差会累积。因此,在高精度计算中,通常需要使用大数库(如 GMP 或 MPFR)来避免浮点误差,或者采用特定的排序算法(如 Kahan 求和法)来减少误差积累。

Q: 有没有比泰勒级数更快的计算 π 的方法?

有。虽然泰勒级数是基础,但现代算法如高斯 - 勒让德算法(Gauss-Legendre algorithm)和波尔温算法(Borwein's algorithms)具有二次或四次收敛性,即每迭代一次,有效位数翻倍或翻四倍,速度远超线性的泰勒级数。不过,它们的核心思想依然源于复分析和椭圆函数理论。

🔍 网友们还关心

✨ 更多精彩
🏷️ 标签:π值计算
研
墨卷研习录
墨卷研习录
CopyRight@educfa.com.cn