两个正方体撞出π

光滑的地面上放着大小两个滑块,左边是墙。大滑块的质量是小滑块的 n 倍。给大滑块一个向左的初速度,两个滑块之间,以及小滑块与墙之间会发生多次碰撞。假设碰撞没有能量损失,问一共会发生多少次碰撞?

当 n 为100的倍数时结果会是π的前若干位:

for i in range(1,9):
    m1=100**i
    print('m1='+str(m1))
    #m1 = float(input('m2=1KG,m1='))
    m2 = 1.0
    v1 = -1
    i = 0
    t = 0
    vv1 = (m1 - m2) * 0.1 / (m1 + m2) * 10 * v1
    vv2 = 0.2 * m1 / (m1 + m2) * v1 * 10
    v1 = vv1
    v2 = vv2
    L = 50
    i = 1
    while 1 == 1:
        i += 1
        # 由上次数据计算本次碰撞
        t = 0.2 * L / (v1 + v2) * 10
        v2 = -v2
        # 新数据
        L = L - v1 * t
        vv1 = ((m1 - m2) * v1 + 2 * m2 * v2) * 0.1 / (m1 + m2) * 10
        vv2 = ((m2 - m1) * v2 + 2 * m1 * v1) * 0.1 / (m1 + m2) * 10
        v1 = vv1
        v2 = vv2
        i += 1
        if v1 > 0:
            if v2 > 0:
                break
    print(i)

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值