](http://upload-images.jianshu.io/upload_images/3574753-565318cf76a0183f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Abstract
萬有引力定律被普遍認為與兩個物體之間的距離平方的反比有關,從1687年牛頓的總結到如今,平方反比定律經過無數次的檢驗,依然保持著高度的準確性。本文將以星體運動為背景粗略探討平方反比律。
宇宙中每個質點都以一種力吸引其他各個質點。這種力與各質點的質量的乘積成正比,與它們之間距離的平方成反比。
Every particle in the universe attracts every other particle with a force that is directly proportional to the product of their masses and inversely proportional to the square of the distance between them.
<center> ——艾薩克·牛頓,《自然哲學的數學原理》</center>
Background
太陽系是被太陽的引力系結在一起的系統,包括軌道直接或間接繞行它的天體。軌道環繞太陽的天體被分為三類:行星、矮行星、和太陽系小天體。太陽系中的各星體在萬有引力的作用下,形成各自形狀,運行軌道相對穩定的狀態。
平方反比律,即萬有引力定律:
$$F = G \frac{m_1m_2}{r^2}$$
$G = (6.67408 \pm 0.00031)\times 10{-11}m3/(kg\cdot s^2)$
在兩個物體之間的距離遠大于物體的幾何尺寸時,物體可以近似看作質點,這個公式才是適用的。
當我們讓$$F = G \frac{m_1m_2}{r^{\beta}}$$
中的 $\beta$ 不等于$2$時,有趣的事發生了。
Fist Things First: Draw A Planetary Orbit
在物體運動軌跡呈周期性時,不應使用歐拉法直接計算運動軌跡,而是采用Euler-Cromer method
進行 Numerical Computation
。
<center>Pseudocode for Planet Orbit Calc</center>
- $F_{G,x}=-\frac{GM_SM_E}{r{\beta}}cos\theta=-\frac{GM_SM_Ex}{r{\beta+1}}$
- At each time step $i$ calculate the position$(x,y)$ and velocity $(v_x,v_y)$ for time step $i+1$.
- Calc the distance $r_i$ from the sun:$r_i=(x2_i+y2_x)^{1/2}$
- Compute $v_{x,i+1}=v_{x,i}-\frac{4\pi x_i}{r^{\beta+1}i}\Delta t$ and $v{y,i+1}=v_{y,i}-\frac{4\pi y_i}{r^{\beta+1}_i}\Delta t$
- The Euler-Cromer step:$x_{i+1}=x_i+v_{x,i+1}\Delta t$, $y_{i+1}=y_i+v_{y,i+1}\Delta t$
Repeat...
類型 | 天文單位AU | 換算 |
---|---|---|
距離 | AU | $1 AU \approx 1.5 \times 10^{11}m$ |
時間 | year(yr) | $1 yr=3156000 s$ |
質量組合常數 | 組合常數 | $GM_S=v2r=4\pi2AU3/yr2$ |
注意,在太陽系中由于星體本身質量巨大,距離遠,軌道周期長,使用國際單位制顯然不合適,于是我們使用天文單位:
類型 | 天文單位AU | 換算 |
---|---|---|
距離 | AU | $1 AU \approx 1.5 \times 10^{11}m$ |
時間 | year(yr) | $1 yr=3156000 s$ |
質量組合常數 | 組合常數 | $GM_S=v2r=4\pi2AU3/yr2$ |
可以由計算得到:當$v_{x,0}=0,v_{y,0}=2\pi(AU/yr)$時,行星運動軌跡是一個標準圓。實際中八大行星的運動軌跡都不是標準的圓,水星(Mercury)的離心率甚至達到了0.206左右。地球的離心率約為0.017。還是挺圓的。
那么我們可以通過改變初速度$v_0$的方式使行星運動軌跡接近真實情況。
Who Changes the $\beta$ ?
- 不同$\beta$值下,橢圓行星軌跡的變化,注意$\beta=3$時,可憐的行星被巨大的萬有引力拉向了太陽,在質點模型下這個小可憐在被拉向中心后會被筆直地甩開,呈幾乎勻速直線運動遠離中心。
上圖使用$\Delta t = 0.001 (yr),Total time=2,2,1,3,0.263(approximate)(yr)$繪制多周期軌跡。從子圖1中看一看出即使$\beta=2$,軌跡在遠離近日點/遠日點處抖動也十分嚴重。于是我們進一步作死縮小時間步長。
[]
- 于是將$\Delta t$ 縮小至$ 0.001 (yr)$,卻帶來了計算量暴增的問題。為此引入
numba
庫對運算函數進行編譯和硬件優化,以減少運算時間:
from numba import jit
# Exercise 4.9
#使用@jit讓函數在運行前被編譯,有利于加速運算,
@jit
def cruisingx(beta,total_time,initvy):
initx = 1
inity = 0
...
@jit
def cruisingy(beta,total_time,initvy):
...
total_time = 100
no @jit: @6.209s taken for {drawpic},
using @jit: @0.975s taken for {drawpic}
total_time = 500
no @jit: @30.116s taken for {drawpic}
using @jit: @2.812ss taken for {drawpic}
- 重新繪制的圖像。
- 在$\beta=2$時,即使時間長達100年,積累誤差也不會太大。
different $\beta$ for circular orbit
將$\beta$取不同值時的行星運動軌跡畫出,在軌跡穩定的前提下,將時間盡可能取長,上限1000年(時間再長的話在屏幕上畫出圖像的時間會遠遠超過計算軌跡的時間...)。
- 第一行為$\beta < 3$時的軌道,為了不使圖中軌道過于稠密,我將前四個圖軌道中的點按隔數千個取值一次的方式畫出軌跡圖。
可見在$\beta < 3$時,圓軌道都在相當一段時間內是穩定的。$\beta > 3$以后,軌跡會在段時間內被吸向中心。接下來會發生什么我就不得而知了。
- 如果中心只是個質點,那么這可憐的星球不但會被拉向中心,還在某一刻速度達到逃逸速度,掙脫引力,逃離中心,飛出太陽系,飛向宇宙深處......
扯遠了。時間縮短至20年,并且將運動軌跡局部放大,(當然,$\beta > 3$時我們只取軌道逃逸前的最長時間)
在$\beta > 3$時,星球們會被牛頓萬有引力如何玩弄:
- $\beta = 3.001,total time = 50(yr)$,僅僅半生時間,這顆星球便已躁動不安。
- $\beta = 3.01,total time = 50(yr)$,
這不是,小時候經常看到廣告的大大卷么 - 可以想象,行星先向心運動,再離心運動,在某一刻萬有引力再也拉不住這顆脫韁的行星,這顆星
我們還注意到,在第一幅圖中,在$\beta = 3.0$時,軌道軌跡線同時向內向外延展了,那么是在什么時候做向心運動,又是在什么時候做離心運動呢?
- 上圖為前250年,下圖為后250年的軌跡采樣。我們可知,大致在200年前后,行星運動模式由向心變為離心。
different $\beta$ for elliptical orbit
按照上面的格式,我們依然取同樣的$\beta$值,但是降低初速度,使軌道變為橢圓。易證,遠日點的速度小于$2\pi (AU/yr)$,近日點速度大于$2\pi (AU/yr)$。
- 很明顯,橢圓軌道在$\beta$取值變化時具有更低的穩定性。
第一行第三幅圖,同樣的時間,同樣的$\beta$值,橢圓軌道中的行星已經走遠...
$\beta=3$時亦然,圓軌道情況想還能保持近似圓形的圖案。
以上大致能說明,在$\beta \neq 2$時,橢圓軌道的穩定性是遠不如圓軌道的。
原因分析:橢圓軌道每個點速度不同。在近日點/遠日點動能達到極大/極小,而動能的不一致容易導致軌道穩定性崩塌。
將時間不同程度縮短以使所有軌跡都呈現:
Different initial velocity for the same $\beta$
由上面討論可知,同樣的$\beta$值,圓軌道穩定性大于橢圓軌道,現猜測同樣初始位置,初速度越小的橢圓軌道越不穩定。
- 由上圖知。
將同一$\beta$值下的圓和橢圓軌道繪制在一張圖內:
Conclusion
經過以上討論,才進一步認識到平方反比律,其中平方二字的重要性,幾乎是這個世界存在之合理性的最重要解釋。感謝這個有序的世界。
Acknowledgements!
- Compiling Python code with @jit
- 彭辰銘和邱偉與我討論了圓軌道在$\beta=3.0$時軌道的運動趨勢。
- 課本?