太陽直射點不落在地球的A處,設A處一根桿的底端為原點,求從日出到日落它的影子的端點移動的軌跡是什麼?


答案是圓錐曲線或直線或圓。

在全球不同的地點,不同的日期,每個人看到的軌跡都是不一樣的;但是總的來看,無外乎是圓錐曲線或者直線或者圓。

本文以如下假設為前提,進行初等數學(不含線性代數,含有少量微積分)的推導:

地球是球體;

太陽光來自無窮遠;

地球公轉軌道為圓;

本文的想法最先源於2014年暑假參加全國天文論壇,見到了天津耀華中學的高中同學們推導出來,這次基本是沿襲其理念,但是方法不同,結果是相同的。在此鳴謝天津耀華中學。

第一部分推導過程較繁瑣,酌情食用,效果更佳,不喜者可直接跳到本文核心公式。

一、推導部分

共分為兩個部分,第一部分為直接的極坐標公式,第二部分是用部分已知條件結合假設得出標準的直角坐標系公式,第三部分為前兩部分的等價推出,統一兩者。

第一部分:球坐標和極坐標的首先表出

立一根竹竿,以其支點為中心,東方為x軸,北方為y軸,向上為z軸建立空間直角坐標系和同樣基礎的球坐標系。

設太陽在一個半徑為R的大球上東升西落,稍後R會被約掉。

x=Rcos	heta cosphi y=Rcos	heta sinphi z=Rsin	heta

一切以地球為參考系考察太陽周日視運動的過程,必須考慮地球的自轉軸,即當地的北極星高度。

太陽的周日視運動軌跡為一個圓,這個圓在半徑為R的天球上,且與地球自轉軸方向垂直,太陽直射點的周年變化反映在這個圓上下的平移。

因此這個圓所在平面為cosalpha y+sinalpha z-sinalpha _0R=0,其中alpha 為當地緯度,即北極星的高度,alpha _0為太陽直射點緯度。

太陽的軌跡就是這個平面和球面x^2+y^2+z^2=R^2的交線。

用球坐標聯立得:

cosalpha cos	heta sinphi +sinalpha sin	heta -sinalpha_{0} =0(公式0)

請注意,公式0就是我們所要的表達式,但是沒有表出成為可視的形式。後面的所有表達,均因此而起。

注意這裡的phi 	heta 在平面極坐標中還需要,因此後面會修正一下符號。

影子長度與原長的比值為1/tan	heta ,因此本質上就是求解1/tan	heta phi 的函數關係。

由三角函數公式,從cosalpha cos	heta sinphi +sinalpha sin	heta -sinalpha_{0} =0得:

r=1/tan	heta =(-sinalpha _0cosalpha sinphi +sqrt{cos^{2}alpha sin^2phi+sin^2alpha-sin^2alpha_0 }sinalpha )/(sinalpha sinalpha_0 +sqrt{cos^{2}alpha sin^2phi+sin^2alpha-sin^2alpha_0 } cosalpha sinphi)

(公式一)

這兩個式子是一個信息,因為我們需要1/tan	heta 這個信息,因此需要把它化成這個樣子。

這就是影長原長之比r與phi的關係,也就是r和phi的關係,因此此為一個極坐標下的函數。

第一部分推導完畢

第二部分:直角坐標下的推導

按理說這個公式反映的就是一條圓錐曲線,但是如果不能化簡成一般形式,是沒有說服力的,因此我們必須對這個式子進行考察。

想要化簡成一般形式並不容易,這裡提供一種猜想的簡化思路。

假設r(phi)能夠用圓錐曲線的極坐標形式表出,具體為r(phi)=1/1+esin(phi),其中分母為1+esin(phi)而非傳統的1-ecos(phi),是因為現在的雙曲線,開口落在了y軸而非x軸,因此有一個phi=	heta+pi/2的變換。同時還應該意識到,即使是極坐標下,也不能表示成這樣,因為實際的圓錐曲線位於y軸向上平移的位置。帶入cosalpha cos	heta sinphi +sinalpha sin	heta -sinalpha_{0} =0,比較相同次數項係數,可以得到e=cos(alpha)/|sin(alpha_0)|

請注意,這裡的離心率非常重要,我們可以從這個離心率中看出很多信息

春秋分日,alpha_0=0,e=∞,離心率無窮表現為的是直線,這個同樣稍後就會有更清晰的解釋。

南北極點,alpha=90°,e=0,顯然,南北極點的影端軌跡是圓形。

alpha_0alpha互余,則e=1,例如夏至日的北極圈,軌跡是拋物線,正好也是橢圓和雙曲線的分界。

接著,有了e的表達之後,我們可以嘗試將方程設為(y-k)^2/a^2 - x^2/b^2 =1,已知的e提供了方程(a^2+b^2)/b^2 =( cos(alpha))^2/(sin(alpha_0))^2,此時令x=0,表達的就是正午太陽高度角,我們又已知,正午太陽高度角alpha±alpha_0,因此影長應為y=tan(alpha±alpha_0)。而y的開方正好產生兩個方程,即可聯立得解。

(y-k)^2/a^2 - x^2/(((cosalpha)^2-(sinalpha_0)^2)/(sinalpha_0)^2)a^2 =1 其中:

k=sinalpha cosalpha /((cosalpha)^2(cosalpha_0)^2-(sinalpha)^2(sinalpha_0)^2)

a=sinalpha_0 cosalpha_0 /((cosalpha)^2(cosalpha_0)^2-(sinalpha)^2(sinalpha_0)^2)

(公式二)

這就是任意地點任意時刻的影長公式!就是我們熟悉的圓錐曲線表達式!

第二部分推導完畢

第三部分:兩者的統一等價變換

這裡我沒能用等價變換,因此這是個小瑕疵。儘管作圖兩者是重合的,但是從科學精神出發,仍然不能說明二者是等價的。從那個長長的表達式化簡為我們熟悉的樣子實在太難了,因此我們使用了一些猜測和管中窺豹的辦法做了推導。但是我們仍然不可以武斷地認為,上述兩個形式是等價的,亦即,第三部分的等價變換是必要的,令我們可以確信,這兩個表達式,都可以等價表出為第三個公式。

以下為 @雲航 的推導,在此鳴謝。

注意到,x,y分別為極坐標轉換為直角坐標下的橫縱坐標,而極坐標下的r表出為r=1/tan	heta,因此設:

x=cosphi/tan	heta

y=sinphi/tan	heta

帶入公式0,可得:

cosalpha*ysin	heta-sinalpha_0=sin	heta sinalpha

聯立以上三式,利用(sin	heta)^2+(cos	heta)^2=1消去	heta,得:

(x^2+y^2+1)(sinalpha_0)^2=(ycosalpha-sinalpha)^2 (公式三)

第三部分推導完畢

公式一由公式0等價變換而得到,公式三也由公式0等價變換而得到,同時公式三可以等價變換為公式二,因此,公式一、公式二和公式三三者等價。

我們選擇一種情況,這裡就選擇了長沙(28.2°N)11月1日(太陽直射14.8°S)的軌跡(為何選擇這個時間這個地點稍後闡明)。

由此直觀可見,三者確實是等價的。

---------------------------本文核心公式--------------------------------------------------------------------

公式一:

r=1/tan	heta =(-sinalpha _0cosalpha sinphi +sqrt{cos^{2}alpha sin^2phi+sin^2alpha-sin^2alpha_0 }sinalpha )/(sinalpha sinalpha_0 +sqrt{cos^{2}alpha sin^2phi+sin^2alpha-sin^2alpha_0 } cosalpha sinphi)

公式二:

(y-k)^2/a^2 - x^2/(((cosalpha)^2-(sinalpha_0)^2) a^2/(sinalpha_0)^2) =1 其中:

k=sinalpha cosalpha /((cosalpha)^2(cosalpha_0)^2-(sinalpha)^2(sinalpha_0)^2)

a=sinalpha_0 cosalpha_0 /((cosalpha)^2(cosalpha_0)^2-(sinalpha)^2(sinalpha_0)^2)

公式三:

(x^2+y^2+1)(sinalpha_0)^2=(ycosalpha-sinalpha)^2

---------------------------------------------------------------------------------------------------------------

二、詳細信息

這個推導結果看起來很繁瑣,但是公式二確實是我們熟知的圓錐曲線的表達。

這三個公式涵蓋了極其豐富的信息,因為正是alpha_0alpha,分別指定了時間和空間,因此上述公式,反映了全球全年的影端軌跡。

接下來我們逐一解析。

1、春分日

春分日時,alpha_0=0,公式一化簡為1/tan	heta =sinalpha/(cosalpha sinphi),這個樣子非常利於我們考察:春分日全球的日影端點軌跡都是直線!是一條沿著緯線的南北方向的直線,北半球觀測者這條直線在立桿點以北,反之以南。這是一個非常重要而又簡潔的結果,我們可能熟知的是春分日日夜平分,太陽正東升起正西落下,但是這個公式已經全部顯示出來,r=∞反解出phi=0,即太陽影長為無窮長的時候是正東方升起時。關於這個方便的結論,我所在的北大青天會,曾經在2015年春分附近,利用這個條件測量了地球半徑。

2、中國

中國全境沒有進入極圈,因此全國不會出現極晝極夜。大家可能已經想到了,只有極晝時候,太陽永不落下,一天之內影子端點不會趨於無窮,限制在某一區域內,這條軌跡就是橢圓;而在中國,情況變為雙曲線;由於拋物線比較特殊,它僅能出現在緯度與太陽直射點緯度互余的地區。

中國只有可能在春分秋分觀察到影子端點軌跡為直線,除這兩天外,全國皆為雙曲線。

3、全球

下面我們來看夏至日全球的情況。

北極點某條魚看到的結果

圓的半徑也是顯然的,就是a=cosalpha_0/sinalpha_0 = cot23.5° = 2.3

85°N萌萌噠北極熊看到的結果

此為橢圓,已經很接近正圓。

66.5°N毛子同學看到的結果

恰好為拋物線,因為當天毛子同學會看到太陽在北方地平線上正好掠過而實現極晝

北京(40°N)看到的結果

此為俯視圖,上北下南。下邊這條就是北京同學看到的。

大家會注意到上邊還有一條,這條是雙曲線的另一支,它在夏至日沒有用,但是它反映的是冬至日北京看到的情況,也可以反映對應於北京的40°S地區的智利小夥伴在我們夏至日看到的。所以我們認為這是條共軛的曲線。

繼續往南,來到熱帶,這裡會出現立日無影的情況,也就是太陽直射點和當地緯度相同的時候。顯然從公式也可以清楚地反映出來。alpha_0alpha相等,k和a便相等,軌跡過原點!

4、最終檢驗

@罷學胡 的數據非常好,可以直接作為實驗來檢驗

長沙(28.2°N)11月1日(太陽直射14.8°S)的軌跡為

沒錯,應該選取上邊的一條,因為剛剛是夏至日的結果,從夏至日到冬天經歷了秋分,秋分影子的軌跡是直線,因此剛剛下邊的那條隨著時間推移慢慢變直,又變為了向上彎曲的。

先看正午太陽高度角,stellarium模擬

正午太陽高度角為47.5°,1/tan47.5°=0.92,衚衕學的數據和理論計算都符合。

再看太陽升起的方位角,stellarium模擬

東偏南16.2°,衚衕學的數據用量角器得15°,理論計算解方程為16.7°,均符合較好。

三、關於評論和私信的回答

@陳寧堯 對於南半球來說,雖然有點繞,但是道理是一樣的。對於南緯10°,在冬至日,也就是太陽直射南回歸線當天,情況如圖:

應當是上面一支。

我同樣做了當太陽直射點回到南緯3.5°時候的情形。

依然是上面的那一條,可見此時太陽仍然從東南方升起,但是正午時分已經在北邊。顯然,從上圖到下圖的演化中,必然有中間一天,正午時分太陽從南邊過渡到北邊,亦即太陽位於頭頂,直射南緯10°,該地出現立日無影,影端軌跡過原點,如下圖:

@時阿玩 對於你所說的切割球體的思路,我覺得可以理解一部分,但是對於非春分日的情況,還是得回到投影上面來。希望我今天補充的那部分推導可以幫到你。我的建議:只考察太陽初升、落下和正午,想像在這三處,桿的影子會怎樣,尤其是日落時候延伸的方向。至於為什麼是圓錐曲線,而不是其他的曲線比如懸鏈線,我只能說,必須得推導。綜上,在地球上一天的影子端點軌跡和當地緯度以及太陽直射點緯度都有關係,具體表現為圓錐曲線或者直線或者圓。


2015年11月1日,長沙市的影子端點軌跡,桿長1M

其實這個數據是用軟體Mathematica 10.2的內置函數SunPosition計算出來的,10月的時候我測過一次影子長度是272cm,軟體計算出來是270cm,誤差基本是可以說的過去的。

圖出來我的第一感覺是雙曲線,但感覺應該沒那麼簡單就沒深入算了,暑假參加全國數學建模A題就是太陽高度和影子相關的,當時跟也做了和李澤峰一樣的假設(地球是球體;太陽光來自無窮遠;地球公轉軌道為圓;),當時是在經緯坐標中推的公式,就沒試過聯立,倒是 @李澤峰同學用的方法很有味道,答案也很明了,我再用軟體畫幾幅圖驗證一下李同學的理論:

北緯70,東經120,2015年6月22日一天的太陽軌跡,大致是橢圓:

夏至日,北緯66.5度,如李同學所言拋物線:

夏至日北緯90度,基本是個圓

北緯30度,春分日,確實是一條直線:

太陽直射點在南半球時,雙曲線是朝上(如圖一)

太陽直射點在北半球時,雙曲線是朝下(如圖)

北緯30度,2015年7月22日:

最後附上程序代碼吧,裝個mathematica10以上版本就可以運行了,不必擔心輸入時間是黑夜的問題,程序會把黑夜的時間去掉的,所以想看7月21的就在timebegin輸入{2015, 7, 21, 0, 0, 0},timeover輸入{2015, 7, 22, 0, 0, 0}就好了:

p = GeoPosition[{30, 120}](*緯度,經度*);
timebegin = TimeObject[{2015, 7, 21, 0, 0, 0}](*起始時間*);
timeover = TimeObject[{2015, 7, 22, 0, 0, 0}](*結束時間*);
ListPolarPlot[{270 Degree - #[[1]], Cot[#[[2]]]} /@ (Select[
QuantityMagnitude[
SunPosition[p, #] /@ (DateRange[timebegin,
timeover, {2, "Minute"}])] Degree, #[[2]] &> 0 ])]


給@李澤峰 的答案手動點一個贊!

我這裡想了一個不需要數學推導就能知道是什麼曲線的思路。前提:

1,太陽在無窮遠

2,局部(指的是影子差不多能觀察到的部分)地球表面是平面(其實等價於桿相對於地球半徑不是太長)

3,不考慮一天之內的太陽周年運動

這個問題可以等價為,太陽和桿頂點連線的延長線和地平面交點的軌跡。前提1和3保證太陽和桿頂點連線在一天內掃出了一個圓錐面,其延長線和這個圓錐面對頂。

於是問題歸結為用一個平面(在這裡就是地面)去切一對對頂圓錐會得到什麼曲線?答案是很明顯的:圓或者直線或者圓錐曲線。

這個圓錐的張角,圓錐的軸和地面的夾角和桿的高度決定了軌跡方程,而這兩個角決定於當地的緯度和太陽的赤緯。(改天有空了來用這個思路推一下試試)


歡迎參觀雲南昆明/旁邊某市太陽曆廣場


推薦閱讀:

清華校歌「西山蒼蒼」指的是哪座山?
如何提高地理對地圖的把握與定位能力?
克拉地峽運河對中國有何戰略意義?
为什么寄生虫病等传染病的起源和肆虐多发于非洲?

TAG:地理 | 數學 | 物理學 | 天文學 | 天體物理學 |