利用Python求圆周率无穷数级
时间: 2024-02-13 17:57:50 浏览: 101
以下是两种利用Python求圆周率无穷数级的方法:
1. 利用蒙特卡罗方法求圆周率
```python
import random
def estimate_pi(n):
num_point_circle = 0
num_point_total = 0
for _ in range(n):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = x**2 + y**2
if distance <= 1:
num_point_circle += 1
num_point_total += 1
return 4 * num_point_circle / num_point_total
print(estimate_pi(1000000)) # 输出:3.141732
```
2. 利用梅钦公式计算圆周率
```python
import math
def machin_of_pi():
pi = 4*(4*math.atan(1/5)-math.atan(1/239))
return pi
print(machin_of_pi()) # 输出:3.141592653589793
```
相关问题
Python圆周率估算无穷级数
利用Python可以通过无穷级数来估算圆周率,其中一个经典的级数是莱布尼茨级数:
$$
\frac{\pi}{4}=1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\cdots=\sum_{n=0}^{\infty}\frac{(-1)^n}{2n+1}
$$
可以写出Python代码实现该级数的计算:
```python
import math
def estimate_pi(n):
result = 0
for i in range(n):
sign = (-1) ** i
term = 1 / (2 * i + 1)
result += sign * term
return 4 * result
print(estimate_pi(100000))
print(math.pi)
```
输出结果为:
```
3.1415826535897198
3.141592653589793
```
可以看到,当$n=100000$时,莱布尼茨级数可以精确地计算出$\pi$的前八位。不过,这种方法的缺点是收敛速度非常慢,需要计算很多项才能得到较为准确的结果。
python 利用莱布尼兹数列求圆周率,保留小数点后9位数
Python可以利用莱布尼茨级数计算圆周率π,该级数是一个无穷级数,其公式是这样的:
\[ \pi = 4 \sum_{k=0}^{\infty} \frac{(-1)^k}{2k+1} \]
为了求得小数点后9位数,我们需要编写一个程序,控制级数迭代到足够的项,使得后续项对结果的影响在精度范围内变得非常微小。下面是一个简单的示例:
```python
def leibniz_series(n_terms):
pi = 0.0
sign = 1
for k in range(n_terms):
term = (sign * (1 / (2 * k + 1)))
pi += term
sign *= -1
return pi * 4
# 求小数点后9位
n_terms = 10**7 # 很大的数值,实际计算中通常需要更多项来达到足够精度
approx_pi = round(leibniz_series(n_terms), 9)
print(f"Using Leibniz series, π approximated to 9 decimal places is {approx_pi}")
阅读全文