您的位置:

用 Python 计算圆周率

一、介绍

计算圆周率(π)一直是数学中的一大挑战。在计算机科学中,我们可以用计算机来实现这一任务。Python 是一种非常适合编写科学计算程序的编程语言,其支持高精度计算,非常适合用来计算 π。本文将介绍如何用 Python 来计算 π。

二、使用公式计算π

计算圆周率最常用的公式是 π = 4 * arctan(1),其中 arctan 为反正切函数。在 Python 中,我们可以使用 math 库中的 arctan 函数来实现这个公式:

import math

pi = 4 * math.atan(1)
print(pi)

通过运行上面的代码,我们可以得到结果:

3.141592653589793

这是到小数点后 15 位的 π 的值。

三、蒙特卡罗方法计算π

蒙特卡罗方法是一种通过随机抽样来得到数值解的方法。用来计算π,我们可以通过在一个正方形内生成随机点,并计算这些点是否位于以正方形为外接圆的圆内,从而估算 π 的值。

具体实现方法如下:

import random

n = 1000000

inside = 0
for i in range(n):
    x, y = random.uniform(-1, 1), random.uniform(-1, 1)
    if x**2 + y**2 <= 1:
        inside += 1

pi = 4 * inside / n
print(pi)

上面的代码首先生成了 n 个范围在 [-1, 1] 的随机点。然后,计算这些随机点中有多少个位于以正方形为外接圆的圆内。最后用这个比例来估算 π 的值。当 n 很大时,得到的结果会越来越接近于真实的 π 值。

运行上面的代码,我们可以得到结果:

3.141804

比起前面的公式法,结果略微大了一点。但是,使用蒙特卡罗方法的好处在于其可以很容易地扩展到更高维度的空间中:

import random

n = 1000000

inside = 0
for i in range(n):
    x, y, z = random.uniform(-1, 1), random.uniform(-1, 1), random.uniform(-1, 1)
    if x**2 + y**2 + z**2 <= 1:
        inside += 1

pi = 6 * inside / n
print(pi)

上面的代码用同样的方法来估算 3 维空间中的球的体积,其半径为 1。该程序得出的结果可以用来估算 3 维空间中的 π 值。

四、使用泰勒级数计算π

泰勒级数是一种用多项式的形式来逼近函数的方法。通过使用泰勒级数,我们可以将 π 的计算转化为多项式的计算。具体相应的公式是:

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

用 Python 来实现这个计算,代码如下:

pi = 0
for i in range(1, 1000000, 2):
    pi += (-1)**((i - 1) // 2) * 1 / i

pi *= 4
print(pi)

上面的代码用了一个循环来计算 π,得到的结果也会越来越接近于真实的 π 值。这种方法的好处在于其可以很容易地扩展到高精度计算,但计算效率相对较低。

五、结论

通过本文的介绍,我们可以看到 Python 可以用多种方法来计算圆周率,包括使用公式、蒙特卡罗方法和泰勒级数。它们各有优缺点,根据需求的精度和计算效率,可以选择适当的方法。