写在前面
前几天在观看B站一位UP主视频时,无意中了解到‘1729’这几位数字在圆周率中首次出现的位置,为了验证此结论,决定采用编程来计算一下比较准确的圆周率,并打印出来!
在python中运用math库中的math.pi进行计算
直接打印
>>> import math >>> math.pi # 输出结果,有精度限制 3.141592653589793
准换成整型打印输出
# 计算圆周率 import math num = 307 #由于精度限制,最高为307 T = pow(10, num) val = int(math.pi * T) print(val)
打印结果
31415926535897933178453804144376221908315439785764303742952151621682011959942190545180279952566411409731034352044806109352811966123290977537403352612801619373524233568883796529471055516385616314431338186482800041818035308022134833914884645131986531623916630788964914954076030731869165419827572759855540207616
运用类库直接打印输出精度非常有限,而转化为整型输出,则失去了原本3.1415926.....的直观感受,换种方式再输出试试!
运用公式
高等数学中我们学过泰勒公式,可以运用泰勒展开计算相对精确的圆周率。
由于 tan(π/4)值为1,则其反函数arctan(1)的值为 π/4,因此我们可以对arctan()函数进行泰勒展开得到如下表达式
from decimal import Decimal from decimal import getcontext def cal_pi(precision): sum = 0 getcontext().prec=precision for i in range(1, 100): sum += pow(-1, i+1)*(Decimal(1)/(2*i-1)) return Decimal(sum)*4 print(cal_pi(1000)) # 打印前1000位 # 打印结果 3.151693406071115578377765997070890365649285540185470123751471121727655262367284522657280268921018502369622553574362461586694470507312166190853692538124095603633806268574907681354671154086968848787076970065421160220171612704072602079901601112116065262828034987385908975083783671687791474625570730356479043326841051016714534025984486393215760124744444788885602965380338124423589920822843734074352833447328032790609275235781495610106732480696380754554369250821238301398488617860483936650831002318068830815315485528145593912379635017931979028457257136029602992763148968843960309145356581543974078431876764103865573824611178389987826829190630952039552498840482829710019021630308443282185184995788386692253091381278588715262734980797870853580579489463932116675903261010001837664622250980918744244256311187345610596992256786165695710426614576425579337762645113830751190944032575185987724379227038974140916029080402046532301500814401194594688851513697053535030146781463336833361716507037802348100895239905123
我们发现,打印结果的前几位失去了准确。
误差分析
arctan(1) = π/4
我们在利用泰勒公式运算时会有一定的误差,我们计算的结果再乘4,无意间放大了误差。
网站验证 https://www.1415926pi.com/getIndex.html
结论正确