前言
大家好 好久没有更新郭csdn了,今天做了一道python练习题分享给大家。对于圆周率pi大家肯定是再熟悉不过了,并且大家都知道他约等于3.1415926,但是如何计算圆周率大家可能还不太熟悉,今天我分享一个用泰勒公式计算圆周率的办法。
正文
泰勒公式是我们大学高等数学中非常重要的一项内容,包括以后大家如果参加研究生数学考试的话没用泰勒公式计算极限有时是一个非常有效的方法。常用的泰勒公式如下图:
本文采用arcsinx的泰勒公式对圆周率进行计算,具体的代码如下:
import matplotlib.pyplot as plt
import math
#求解n的阶乘
def f(n):
s1=1
s=1
while s<(n+1):
s1=s1*s
s=s+1
return s1
#设计arcsinx的泰勒公式
def g(x,n):
S=0
for i in range(n):
S=S+f(2*i)/(pow(4,i)*(2*i+1)*pow(f(i),2))*pow(x,(2*i+1))
return S
real=[]
sim=[]
for i in range(1,10):
real.append(math.pi)
for i in range(1,10):
sim.append(2*g(1,i*500))
print(sim)
plt.plot(real,color='green',linestyle='--',label='real')
plt.plot(sim,color='pink',linestyle='--',label='sim')
plt.legend(loc='upper right')
plt.show()
实验结果
本文首先用泰勒公式的前9项来计算圆周率,计算结果如下图:
可以看到通过前九项计算的圆周率还是存在较大误差的。为了提高精度,本文分别用泰勒公式的前500 ,1000,1500,2000,2500,3000,3500项来计算圆周率:
可以看出结果有了明显的提升(注意:虽然和图一形状相似,注意数座标轴的不同)
结语
通过泰勒公式计算圆周率,采用的项数越多,计算速度也就越慢(到10000项的时候速度就比较慢了),当然通过泰勒公式也可以计算其他特殊的数字 ,例如e,今天的分享就到这里了,大家再见