利用马青公式输出π的后任意位数字

本文介绍了马青公式用于计算π的方法,通过级数展开和Python编程,展示了如何获取π的多位数字。通过可视化,观察到π可能是正规数,并通过特定函数搜索到生日数字在结果中出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

马青公式

π=16arctan154arctan1239π=16arctan15−4arctan1239
arctanx=xx33+x55......arctanx=x−x33+x55−......
π=16×(11×513×53+......)4×(11×23913×2393+......)π=16×(11×5−13×53+......)−4×(11×239−13×2393+......)
级数中的分数,分母增长很快,但我们可以对一个分式,不断除以同一个低精度数(52239252、2392),就能得到所有分数的值。


# Python 实现

import pandas as pd
def f(number):    
    number1 = number+10

    # 算到小数点后number1位
    b = 10**number1

    # 求含4/5的首项
    x1 = b*4//5
    # 求含1/239的首项
    x2 = b// -239

    # 求第一大项
    he = x1+x2
    #设置下面循环的终点,即共计算n项
    number *= 2

    #循环初值=3,末值2n,步长=2
    for i in range(3,number,2):
        # 求每个含1/5的项及符号
        x1 //= -25
        # 求每个含1/239的项及符号
        x2 //= -57121
        # 求两项之和
        x = (x1+x2) // i
        # 求总和
        he += x

    # 求出π
    pai = he*4
    #舍掉后十位
    pai //= 10**10

    ############ 输出圆周率π的值
    result=str(pai)
    return result

最后为了方便统计出现的数字的次数,将其转换为series格式,并定义以下函数来可视化。

def show(n,plt_type='pie'):
    result = f(n)
    a = pd.Series([int(i) for i in result])
    b = a.value_counts()
    if plt_type=='pie':
        plt.figure(figsize=(10,8))
        plt.pie(b,labels=b.index,explode=[0.05]*10,shadow=True,autopct='%1.1f%%')
        plt.show()
    elif plt_type=='bar':
        plt.figure(figsize=(10,8))
        plt.bar(b.index,b.values)
        plt.show()
    else:
        print('Type Wrong')

利用此函数可输出饼图或柱形图
当n=100时:

show(100,'pie')
show(100,'bar')

这里写图片描述
这里写图片描述

当n=10000时:

show(10000,'bar')
show(10000,'pie')

这里写图片描述
这里写图片描述

由此来看ππ应该是正规数。突然想看看在其中会不会出现自己的生日,于是定义以下函数

import re
def find_(pattern,result):
    loc = result.find(pattern)
    return loc
result=f(300000)#产生300000位数
find_('199766',result)

最后return了140151,惊奇竟然真的在里面了!(虽然这个算法有误差hhh不过姑且当他正确吧)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值