弹性碰撞次数与圆周率的关系 - 3Blue1Brown

写在前面

本文主要用于记录我是怎么被这个有趣的问题牵扯精力的,不写篇文章对不起自己推导公式的时间,要后悔大家一起后悔嘛。本文的问题描述、来源分析、解法推导和相关问题都是个人整理的,但解法参考了知乎和论文。

来源描述

在2019年1月13日,YouTube上的著名频道3Blue1Brown发布了一个有趣的数学视频:YouTube:The most unexpected answer to a counting puzzle。当然,由于3Blue1Brown在国内已经有了B站官方账号,你也可以在B站上吃瓜:一个计数谜题的意外答案

这个问题的描述如下:如图,在完全光滑的无限长平面上,有一个质量为MM的滑块AA以垂直于墙面的速度v0v_0向墙运动,AA和墙之间的连线上停着另一个质量为mm的滑块BB。假设系统所有碰撞均为完全弹性碰撞,且滑块可以看成质点。

弹性碰撞次数与圆周率的关系 - 3Blue1Brown
M=nmM=nm,则滑块BB在墙面与AA之间发生碰撞的总次数CC满足:
limnC=nπ\lim\limits_{n \to \infty }{C}=\sqrt{n} \pi
“数学和物理有时会显现出令人惊讶的默契”,从离散的物理碰撞能够推导出一个无限不循环的数学常量,这就是3Blue1Brown所说的Unexpected,冥冥之间蕴含着宇宙的某种设计。

Gregory Galperin于1990s最早发现了这个结果,并于2003在论文Playing pool with π (the number π from a billiard point of view中公布这个问题,B站中给出的论文在墙内是打不开的(小声BB)。然后百度上可以搜索到的中国近年来最早提到这个问题的就是知乎2016年3月的帖子了:如何求解这个小球碰撞次数与圆周率关系的趣味问题? - 知乎,然后2017年3Blue1Brown入驻B站,并于今年在YouTube和B站上同步发布了相关视频,才导致这个问题成为一个网红问题,从而被各路新闻、公众号、博客和视频平台转发报道。

解决方法

解法一

主要思路:能量守恒定律 >> 变换坐标系 >> 三角换元 >> 几何观察 >> 极限

v1v_1v2v_2分别为滑块AABB在一次碰撞后的瞬时速度,由能量守恒定律可知:
12Mv12+12mv22=12Mv02\frac{1}{2}Mv_1^{2}+\frac{1}{2}mv_2^{2}=\frac{1}{2}Mv_0^{2}
M=nmM=nm代入,化简得到v1v_1v2v_2坐标系下的椭圆方程:
v12+(v2n)2=v02v_1^{2}+(\frac{v_2}{\sqrt n})^{2}=v_0^{2}
v2=v2nv_2^{'}=\frac{v_2}{\sqrt n},得到v1v_1v2v_2^{'}坐标系下的圆的方程:
v12+v22=v02v_1^{2}+v_2^{'2}=v_0^{2}
于是我们可以使用v1=v0cosθv_1=v_0cos\thetav2=v0sinθv_2^{'}=v_0sin\theta进行三角换元。假设每次碰撞前,两滑块相向运动,且远离墙壁的方向为速度的正方向,则根据动量守恒定律,我们可以得到方程:
Mv1a+mv2a=Mv1b+mv2bMv_{1a}+mv_{2a}=Mv_{1b}+mv_{2b}
下标bbaa分别代表碰撞前后。将M=nmM=nm代入,化简得到:
nv1a+v2a=nv1b+v2bnv_{1a}+v_{2a}=nv_{1b}+v_{2b}
将三角换元公式代入可以得到:
ncosb+nsinb=ncosa+nsinancosb+\sqrt n sinb=ncosa+\sqrt n sina
补充一下和差化积公式:

  1. sinα+sinβ=2sin[(α+β)/2]cos[(αβ)/2]sinα+sinβ=2sin[(α+β)/2]cos[(α-β)/2]
  2. sinαsinβ=2cos[(α+β)/2]sin[(αβ)/2]sinα-sinβ=2cos[(α+β)/2]sin[(α-β)/2]
  3. cosα+cosβ=2cos[(α+β)/2]cos[(αβ)/2]cosα+cosβ=2cos[(α+β)/2]cos[(α-β)/2]
  4. cosβcosα=2sin[(α+β)/2]sin[(αβ)/2]cosβ-cosα=2sin[(α+β)/2]sin[(α-β)/2]

利用公式1、4我们可以化简得到:
cot((a+b)/2)=ncot((a+b)/2)=\sqrt n
其中bbaa分别表示碰撞前后的三角函数参数,即v1v_1v2v_2^{'}坐标系下的圆心角。那么:
ab=actan(1/n)a-b=actan(1/\sqrt n)
由上式可以看出每次碰撞导致的圆心角的增量是一个常数值(正值)。而初始情况下v1=v0v_1=-v_0v2=v2n=0v_2^{'}=\frac{v_2}{\sqrt n}=0,在坐标系里即为圆与v1v_1坐标轴负半轴的交点(我们假设远离墙壁的方向为速度正方向)。而每次碰撞只是该点沿着圆的轨迹

解法二

解法三

占位待续(第三种解法的矩阵正交复变换触及了我的数学盲区)

其他相关

另一个Playing Pool

如果百度一下Playing pool还会查到这篇文章:Playing Pool with |ψ⟩: from Bouncing Billiards to Quantum Search。估计作者Adam R. BrownGG的小迷弟,模仿原论文的标题,将π\pi改成了态矢量ψ|ψ⟩,声称找到了弹性碰撞问题和Grover量子搜索算法之间的联系。想要读懂这篇文章需要对量子力学和量子计算机有一定了解,它触及到了本人的物理、算法和数学等一系列知识的盲区,希望经过以后的学习能够读懂它。

大佬Jorge S. Diaz

在Google上查找弹性碰撞问题的前世今生的时候,偶然邂逅了JSD的文章:Digits of π from colliding blocks。这是一篇写的十分漂亮的学院派文章,从理论分析到Python的实验都做的很详尽,文章的排版也清晰简洁(作为一个站长我当然很关心排版),于是访问了一下他的首页和作者页,他的Bio如下:

I am a data scientist at BASF. I received a Ph.D. in Theoretical Physics from Indiana University Bloomington with minors in nuclear physics and high-energy physics. After two years working as a postdoctoral researcher at the Karlsruhe Institute of Technology in Germany, I made the transition to industry. Now I enjoy a daily dose of Python coding, mining text data, machine learning, and playing with maps. My fascination for physics is now streamed via Twitter and a blog for the general public.

可以看到他是一个德国人,获得了印第安纳大学伯明顿分校的理论物理博士学位,现在于巴斯夫公司(德国的化工企业)做一名数据科学家,最近开始从物理学转向了ML,喜欢Python编程。他的网站创建与2018年1月,只有两篇文章,另一篇是Tests of Lorentz invariance using neutrino oscillations,翻译过来是用中微子振荡检验洛伦兹不变性,看起来也十分硬核。我关注了他的GitHub,也许将来可以交个朋友。

3Blue1Brown名称由来

我从一开始就很好奇这个奇怪的名字,为啥叫三蓝一棕?在百度上没能找到答案,于是去Google一下,3Blue1Brown官方网站上介绍了频道的作者:Grant Sanderson。他对自己的介绍如下图:
弹性碰撞次数与圆周率的关系 - 3Blue1Brown
我翻译一下:“我叫Grant Sanderson。我在斯坦福大学学习数学时,一直受到计算机科学的诱惑。有一段时间,我的工作经历告诉我应该去做软件工程/数据科学方向。但最终,我对数学的热情占领高地,代价是牺牲了小情人计算机。可汗学院的人才发掘计划让我很幸运地开始了一条不太传统的数学推广道路。我在2015/2016年担任多元微积分研究员,为他们制作视频和撰写文章。之后,我开始把全部精力投入在3blue1brown上。”可见作者是一个斯坦福数学系毕业的学生,这里并没有说明名字的由来,但从照片上看来我猜想他是美国白人,混了一些北欧血统,那么他很大概率是蓝眼睛。从*上我找到了正解:

The channel name and logo reference the color of Grant’s right eye, which has blue-brown sectoral heterochromia. It also symbolizes the channel’s visual approach to math.

Sanderson的右眼有区域性虹膜异色,所以3Blue1Brown的意思就是他虹膜的四分之三是蓝色,四分之一是棕色。这让我不禁联想到I型起源那部悲伤而美妙的爱情电影。他本人也说有些粉丝为了顺嘴,也管这个频道叫3b1b:3b1b for those who prefer less of a tongue-twister。而这个频道的标志就是他的右眼虹膜,也象征着这个频道对数学的一种理解方式,究竟是怎样的理解方式,他没有具体说,但根据他的其他介绍可以略知一二:

Loosely speaking, I think of the first category as motivating math by its usefulness, and the second as motivating math as an art form. But of course, the line dividing these two is easily blurred.

“泛泛而言,我认为驱动数学发展的第一类动力是实用性,排在第二的应该是数学的艺术形态。当然,这两者的界限是很模糊的。”我们可以认为Blue代表的是传统意义的实用性,而Brown代表的是另一个视角的艺术美。

Problems in math which many people may not have heard of, and which seem really hard at first, but where some shift in perspective makes it both doable and beautiful.

“很多人们从没听说过的数学问题,乍一看很难,但变换一下思维的角度,它可以变得既有可行性又有美感。”这可能就是3Blue1Brown这个频道所追求的主旨,将数学变得深入浅出,尽力去展现它的美感。可能Blue是常规意义的视角,Brown就代表那种既可行又漂亮的视角吧。Sanderson是如何做到这一点的呢,请往下看。

3Blue1Brown视频引擎

*上说道,Sanderson在2015年开始了一个个人项目,在Showmakers(某个播客节目;播客,podcast,是一种收听类的节目) 中他表示想要练习编程技能,决定制作一个基于Python的图形库。这个图形库最终变成了著名的开源视频引擎Manim(Mathematical animations的缩写)。3Blue1Brown因此拥有了吸引人的立体动画,使人们尽情体验数学之美。

Manim的仓库地址:Manim。知乎上对这个视频框架的介绍已经十分详细了,在我深入研究这个框架之前不打算做搬运工:3Blue1Brown 的视频是怎么制作的? - 李狗嗨的回答 - 知乎。这个频道对与线性代数、微积分、神经网络、黎曼猜想、傅里叶变换和四元数都有很好的讲解,尤其是线性代数,口碑很好,码上留着慢慢看。