def calculate_pi(iterations):
pi = 0
for i in range(iterations):
term = (-1) ** i / (2 * i + 1)
pi += term
pi *= 4
return pi
# 设置迭代次数
iterations = 1000000
estimated_pi = calculate_pi(iterations)
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def power(x, n):
if n == 0:
return 1
else:
return x * power(x, n - 1)
def sin(x):
# 使用泰勒级数展开计算sin(x),这里只计算到第5项
x = x % (2 * estimated_pi) # 将x限制在[0, 2π]范围内
sum_sin = 0
for i in range(5):
term = power(-1, i) * power(x, 2 * i + 1) / factorial(2 * i + 1)
sum_sin += term
return sum_sin
def polygon_approximation(n):
# 计算正n边形的边长
side_length = 2 * sin(estimated_pi / n) # 使用π的近似值
return side_length
def estimate_pi(precision=0.000001):
n = 10000 # 初始多边形边数,可以选择其他正多边形
while True:
current_side_length = polygon_approximation(n)
next_side_length = polygon_approximation(n + 1)
if abs(next_side_length - current_side_length) < precision:
break
n += 1
return n * current_side_length / 2
print("Pi:", round(estimate_pi(),5))
相关文章
- 如何计算Pi?python
- 蓝桥杯每日一题(15):莱布尼茨计算圆周率(python)
- Python快速计算高精度圆周率
- 从控制台上输入年、月、日,计算输入的日期是这一年的第多少天 (python实现)
- python如何学习(二)
- 记一次Python算法案例: 如果 a+b+c=1000,且 a²+b²=c²(a,b,c为自然数),如何求出所有a、b、c可能的组合?
- 【Python数据结构与算法复习day38】1-02-时间复杂度与大O表示法+如果 a+b+c=1000,且 a^2 + b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?不允
- 【Python数据结构与算法复习day37】1-01-算法引入+“如果 a+b+c=1000,且 a^2 + b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?不允许依赖任何”
- 使用python装饰器计算函数运行时间的实例
- Python知识点:运用Python工具,如何使用BERT进行句子嵌入