如何求解這個小球碰撞次數與圓周率關係的趣味問題?

如圖,在光滑水平面上,有一個球A向牆運動,速度垂直於牆面,A和牆之間的連線上停著另一個小球B。假設球與球,球與牆之間的碰撞均為完全彈性的。這個圖畫的並不好,兩個球大小完全一致可以看成質點。

當兩個球質量相等時,A碰上B,A停下來B繼續運動,B碰到牆再返回碰A。球與球、球與牆之間一共發生了3次碰撞。
如果球A的質量大於B,那麼A碰完B之後還會繼續向牆運動,總共的碰撞次數可能會大於3。實際上:
當A的質量是B的10000倍時,共碰撞314次。
當A的質量是B的1000000倍時,共碰撞3141次。
當A的質量是B的1億倍時,共碰撞31415次。
隨著A和B質量之比的增大,總共的碰撞次數會和圓周率的數值有關。如何解釋這個關係?
Mathematics Stack Exchange 上討論問題的鏈接physics - Intuitive reasoning behind $pi$"s appearance in bouncing balls.


我先提供一個答案


設大小球的質量比為N
由能量守恆frac{1}{2} NV_{i}^2+frac{1}{2}v_{i}^2  =frac{1}{2} NV_{i-1}^2+frac{1}{2}v_{i-1}^2
可以得到V_{i}^2+(v_{i}/sqrt{N})^2  是一個定值,也就是left( V_{i},v_{i}/sqrt{N}  
ight) 在一個圓上
不妨設其為單位圓,記left( V_{i},v_{i}/sqrt{N}  
ight) =left( cosalpha ,sinalpha  
ight)
將其代入動量守恆NV_{i}+v_{i}=NV_{i-1}-v_{i-1}
得到sqrt{N} cosalpha +sinalpha=sqrt{N} coseta -sineta
可以看到這個根號N明顯是個單身狗,想要妨礙sin和cos的偉大結合,將它提到一邊
sqrt{N}=frac{sineta+sinalpha}{coseta-cosalpha} =cotleft( frac{alpha-eta}{2}  
ight)
對於任意的i,碰撞前後alpha和beta的差是定值(由質量比N決定)。
所以把left( V_{i},v_{i}/sqrt{N}  
ight)在圓上依次畫出來之後,這個點每次移動的角度是固定的。
起始的點是(1,0),終止的情況是這個點第一次跨入第三象限的剎那(當小球在某次碰撞後仍然向右走,那麼過程停止)(評論區的同學指出,確切的說,是跨過射線left( -1,frac{1}{sqrt{N}} 
ight) 之後終止,在極限情況下趨近於x軸負半軸),轉過的角度是固定的,因此必然會跟pi 相關。
N
ightarrow infty 時,Delta 	heta =2arctanfrac{1}{sqrt{N}}sim  frac{2}{sqrt{N}}
球之間碰撞的次數napprox frac{pi}{2/sqrt{N} }
總碰撞次數m=2n-1approx pi sqrt{N}

感謝白神思路,要精確求最終解感覺會出來一點arc和取整,無傷大雅


@白如冰
高中競賽的時候寫過這個題...解法基本一致

另外,從現在的觀點來看,二體碰撞問題是一個關於兩者速度的線性變換,變換中有動能這個二次型保持不變,那麼就是二維正交矩陣:總共就只有兩種,旋轉和旋轉加反射。
既然碰撞時旋轉加反射,那麼再加一個反射就能夠實現旋轉。


初看到結論的時候,就好像有種故意誘導讓人這麼作的感覺。。。(大誤)

估計很多人都像我這麼想吧,
假設大球初速度為v0,且質量為小球質量的k倍,

假設某次碰撞後狀態如下圖,
根據能量守恆,大球速度的√k倍,√kv1,與小球的速度v2,明顯在一個圓上。
kmv_{1} ^2+mv_{2}^2=E
(sqrt{k} v_{1})^2+v_{2}^2=E/m

然後小球撞向牆壁,速度反向為-v2,與大球再次碰撞後,速度為v1",v2"
如下圖

這兩點距離為Δ,
反覆碰撞後,大球速度逐漸減為零,然後開始反向加速,直到與小球速度相同,兩球才不碰撞。
假設這時速度為v""
根據能量守恆,
mv
當k趨於無窮時,
v

也就是說,這個點從橫軸的正半軸,一直移動到負半軸。
經過的路程為
pi sqrt{k} v_{0}

很容易讓人聯想到,如果經歷了
pi sqrt{k}
次碰撞,圖中有
pi sqrt{k} /2
個點(因為每兩點之間有一次撞牆過程)

則Δ長應該為
Delta =2v_{0}

我們來驗證一下,
能量守恆
kv_{1}
動量守恆
kv_{1}

k=frac{(v_2-v_2
v_1+v_1

解得
v_1
v_2
代入
Delta^2 =(sqrt{k} v_1-sqrt{k}v_1
=frac{4kv_1^2-8kv_1v_2+4kv_2^2+4v_2^2-8kv_1v_2+4k^2v_1^2}{(k+1)^2}
=frac{4v_1^2/k-8v_1v_2/k+4v_2^2/k+4v_2^2/k^2-8v_1v_2/k+4v_1^2}{(1/k+1)^2}
因為
v_2<sqrt{k} v_0
所以當
sqrt{k} 
ightarrow infty

Delta ^2
ightarrow 4v_0^2


前面幾位給出的都是初等思路,暴力解法,我來給出一個先求近似+微分方程的解吧。

正方向約定與其他答案一致。

略去了碰撞求解,可以在別的答案中找到。

略去了求解微分方程的過程,學過高數的應該都會解。

最終令VA=-V0求得t是因為從始至終能量沒有損耗,最後能量還是會完全回到大球身上。

算上球與牆的碰撞就可以得到正確答案。

至於正確與否以及一些細節,歡迎討論。


列一下本渣的弱雞解法,因為數學太差所以強行用微(玄)分(學)方程代替差分方程,所幸在質量差距懸殊的極限下離散過程過渡為連續過程,得到的解是精確的: ——————————————————————
先做符號說明。
大球質量……1
大球動量大小……p
大球動量大小的初值……1
小球質量……a
小球動量大小……q

在迎面彈性碰撞中,雙方交換一部分動量,在質心繫中很容易證明這部分動量等於兩倍之約化質量與相對速度之乘積,對大球而言:

為消去q,代入能量守恆方程

即可將問題化為對遞推數列p(差分方程)的求解。
誠然差分方程中含根式故求解未必十分輕鬆,但考慮到在a遠小於1極限下過程由離散向連續過渡,故嘗試引入參數t將其用更易處理的微分方程代替。注意:t不是時間參數。它代表碰撞次數的求和,微元dt可以看作每一次碰撞。

分離變數後定積分。注意定積分的區間:本題中大球動量大小p應先從初值1遞減為0,之後運動過程反演,反向增加到1。故積分區間選為0到1,再將結果乘2。

嚴格的積分也無甚困難,不過方便起見將分母上的p√a項略去,可以證明結果是正確的。

注意這樣一來我們得到的t,代表運動過程對稱軸的前半部分,同時也只考慮球撞球,而球撞牆的次數和球撞球相等,故應放大四倍

這樣就證明了題目中的現象
——————————————————————
前面清北浙的同學都已經拿出很棒的解法了,自己真是來給母校丟臉的 (′-ω?`)


我用z變換求解了一下,雖然計算過程並沒有簡化多少……
第一個答案在數學上貌似不太嚴謹,兩者最後一次碰撞應該是在第二象限。而且,最後應該是用夾逼定理得到(總的碰撞次數÷√N)的極限為π的結論。


量綱分析可以知道碰撞次數N和球牆距離、球的速度都沒有關係,是純粹的質量比的函數,可以寫成N=f(M/m),f待定。然後就不知道了。

啊哈哈先佔個位
只會用一點點C……貼一下代碼:

#include&
#include&#define k 10000000000
float PZ1(float x,float y)
{ float z;
z=(2*k*y+(1-k)*x)/(1+k);
return (z);
}
float PZ2(float x,float y)
{ float z;
z=(2*x+(k-1)*y)/(1+k);
return (z);
}
int main()
{ int N=1;
float v1,v2,t;//注意加上球撞牆反向的條件

for(v2=10.0,v1=0.0;(v1&>0.0)||(v2&>0.0)||(v1&<=v2);)
{ t=v1;
v1=PZ1(v1,v2);
v2=PZ2(t,v2);

if((v1&<0.0)((-v1)&>fabs(v2)))
N=N+1;
if((v1*v2&<0.0)(fabs(v1)& {N=N+1;v1=-v1;}
if(((v1&>0.0)(v1&>fabs(v2)))||((v1&>=0.0)(v2&>0.0)(v1& {N=N+2; v1=-v1;}

printf("%d ",N);
printf("%f,%f
",v1,v2);
}
return (0);
}


大概就是分情況討論了一下。 質量比k取到10000000000的時候能得到
314159。

—————————分割線————————————————
更新版的代碼來了。可以輸出質量比k和碰撞次數N的數值函數。
#include&
#include&#define sx 10000//設定質量比循環上限

float PZ1(float x,float y,float s)
{ float z;
z=(2*s*y+(1-s)*x)/(1+s);
return (z);
}
float PZ2(float x,float y,float s)
{ float z;
z=(2*x+(s-1)*y)/(1+s);
return (z);
}

int main()
{
float N=1;
float v1,v2,t,k; //注意加上球撞牆反向的條件
for(k=1.0;k&{for(v2=10.0,v1=0.0;(v1&>0.0)||(v2&>0.0)||(v1&<=v2);)
{ t=v1;
v1=PZ1(v1,v2,k);
v2=PZ2(t,v2,k);

if((v1&<0.0)((-v1)&>fabs(v2)))
N=N+1;
if((v1*v2&<0.0)(fabs(v1)&{N=N+1;v1=-v1;}
if(((v1&>0.0)(v1&>fabs(v2)))||((v1&>=0.0)(v2&>0.0)(v1&{N=N+2; v1=-v1;}

}
printf("%f %f
",k,N);
}
return (0);
}


不知道還有人關注這個問題沒有,其實用數學軟體Mathematica來做幾分鐘就搞定了,雖然很暴力。

約定速度向牆為正,用能量守恆和動量守恆可以求出任意一次碰撞之後的速度結果:

MatheMatica代碼及結果:

這個結果代表了第k次碰撞和第k-1次碰撞後小球速度的關係,從這個關係可以給出小球速度數列的遞推關係:

注意 V_{b}(k) 有一個負號,原因是小球B會與牆碰撞,從而使得下次碰撞前的速度與上次碰撞後的速度差一個負號。

有了數列的遞推關係便可以求出數列的通項公式,當然必須給出初始項 V_{a}(0)=v 以及 V_{b}(0)=0 。Mathematica代碼以及結果如下(已經在計算前將M換成nm,v取為1,這並不影響結果):

什麼時候小球不再發生碰撞?當然是小球的速度趕不上大球的速度的時候,就不在發生碰撞了。所以碰撞結束的條件是Va&,那麼終止條件是就是函數 f(n,k)>0f(n,k) 的表達式如下:

事實上 f(n,k)=0 已經確定了n和k的隱函數關係,所以,接下來的目標是求出 f(n,k)=0 的根,結果如下(附加上條件 n>0 是因為大球的質量不會為負數):

上面C[1] in Integers的意思是C[1]是一個整數。這是因為 f(n,k)=0 有很多根,因此 f(n,k)=0 解得的結果裡面出現了一個任意整數C[1]。現在根據上述結果定義顯示函數 k(n)k(n) 就是碰撞次數k和質量倍數n的函數關係:

k(n) 函數太複雜了,肉眼很難看出什麼端倪。雖然通過題主給的信息可以很容易猜到 k(n)/sqrt{n} 的極限和 pi 有關,但現在就讓我們假設不知道這個結果按正常的做法去做好了。

我們關心的是n趨近於無窮時的極限情況,所以,可以將 k(n)n=infty 處進行泰勒展開,取最低階的項,得到:

根據上面的結果已經可以得到一些線索了。泰勒展開的第一項出現了 pisqrt{n} ,所以我們可以試著求一下 k(n)/sqrt{n} 的極限:(另外,因為一旦碰撞條件不滿足了,小球和大球就再也不會碰了,所以其實我們只需要關心第一個正根。從上式子可以看出,取c1=1就可以得到那個根)

這結果表明n趨近於無窮的時候, k(n)/sqrt{n}pi/2 為極限。注意k(n)是小球與大球的碰撞次數,每次小球與大球碰後還要和牆碰,因此實際碰撞次數為 2k(n) ,所以碰撞次數在n趨近於無窮的時候正好是 pisqrt{n}

至此證明完成。

現在可以看一下 f(n,k) 的圖像( n=10^15 時),第一個根出現在大概5*10^7那裡,之後 f(n,k)>0 ,碰撞終止,取c1=1正好對應第一個正根。

最後,數值計算驗證一下碰撞次數和 pi 的關係:

n=10^10時:(第一行為碰撞次數(這裡偷懶沒有收成整數),第二行為碰撞次數除以 sqrt{n} ,第三行為 pi 的準確值以供對比)

n=10^20時:

n=10^40時:

可以發現當n=10^x時,大致精確到第x/2位。


在簡諧振動,彈簧振子的周期與彈簧振子質量、彈簧勁度係數有關(即T與m,K有關)。周期公式是

T=2π√(m/k)

因為牆的剛性,周期只有1半
T=π√(m/k)
π=T/(√(m/k))

瞎猜的。m為 質量比,有點像。

質量比越大,越近似彈簧。


因為質量差異太大時,速度估計會超過光速。不考慮了。


其實這個和球沒有本質關係。如果是兩個正方體、三角體呢?結果也會是如此。

能量轉換和動量轉換本身或許就存在某種和π有關係的數學規律,可能沒有什麼物理意義。


近似而已


推薦閱讀:

你有什麼一輩子也用不到的知識或技能?
人丑才要多讀書有科學依據嗎?
科學規律或定理,合乎人的直覺的多還是違反人直覺的多?
人的眼睛為什麼大多數時候要一起動?
聽說意志力可以消耗完,科學研究出來,意志力有哪些規律?

TAG:數學 | 物理學 | 趣味數學 | 線性代數 | 科學 |