Hello 天文

自動翻譯,請以簡體中文原文校核。

星曆表只記幾次,怎麼找出「最近」和「剛好過零」的時刻?

除了補一個中間值,插值還能尋找局部極小值或過零點;前提是資料真的在附近。

通用演算法與數值計算

表格裡太陽到火星的距離先變小、再變大,最小值可能藏在兩行之間。另一張表裡水星緯度一負一正,它也在兩次記錄之間穿過了零。我們用書中的三點或五點,把這些時刻找出來。

開啟互動課程 →

先猜一下

看到一段曲線在下降,就能把它外推很遠來決定最低點嗎?

查看答案與解釋

不能,最低點應有附近數據支持 — 局部插值多項式在遠處可能與真實函數完全不同。

再把體驗和科學連結起來

先把單位和中心選對

表中角度已化成角秒,時刻偏移除以表格間隔才是n。中心應靠近要查詢的事件。

n=(查詢時刻−中心時刻)/表格間隔

三點與五點用到的資訊不同

三點描述二次彎曲;第三差分不能忽略時,五點會保留更高階變化。不是簡單把五個點平均。

三點二次 / 五點四次差分多項式

過零點與極值是兩個不同條件

水星緯度過零求y=0;火星距離最小求導數y′=0。找到時刻後也要計算該時刻的函數值。

零點 y(n)=0;極值 y′(n)=0

只信附近,不把外推當預測

求出來的n如果遠離中心,書中公式可能會給出荒謬結果。本課程拒絕這種事件輸出,提示換中心或數據。

局部求根後再檢查範圍和殘差

把計算鏈展開

a = y₂−y₁;b = y₃−y₂;c = b−a y(n) = y₂ + n(a+b+nc)/2 y′(n) = (a+b)/2 + nc 零点:y(n)=0;极值:y′(n)=0

以上展開三點分支,五點分支採用四次多項式。導數針對無量綱n;求根後還需檢查範圍,c=0時不直接除以c求極值。

試一試

先看月球表的三點與五點差別,再切到水星過零點和火星最近距離。不能從遙遠的一小段數據可靠外推極值。

動手看一遍 →

符號不用背

n
距中心時刻的偏移,除以採樣間隔
a,b,c / A…K
逐階差分
y(n)
三點二次或五點四次內插多項式
y′(n)=0 / y(n)=0
極值條件 / 過零條件

演算法、精確度與適用範圍

補齊第3章3.3–3.11。三點與五點差分展開為同一多項式;零點以原式3.7/3.11等價Newton修正,極值對導數求零;另保留3.6/3.10式固定迭代的數學入口作比較。不把沒有找到局部根當零,不接受離中心超過一個間隔的外推根。介面查詢限制|n|≤0.5,事件搜尋檢查|n|≤1。月球地平視差採例3.e;水星五點過零採用印刷頁30練習;火星極值採用3.b;第四表為明確標示的自編四次函數。結果時間沿用各表註明的TD或UT,不作相互換算。所有數據預先轉同一單位;另有原書赤經跨24h與太陽經度跨0°數據,採用最短連續差展開後插值,不把359°到0°當成倒走359°。五點不是任意情況下都比較準確。原書的遠處正弦極值反例說明了外推風險,未將不可靠外推作為預報功能。

我的理解檢查

找函數的零點,與尋找最小值,條件相同嗎?

不同 — 零點要求y=0,極值要求導數為零。

n=0.25總等於6小時嗎?

不是,要看表格間隔 — 只有採樣間隔為一天時,0.25個間隔才是6小時。

只給三筆記錄,能直接當成五點法嗎?

不能 — 五點法需要五個等間隔值,程式不能自己捏造另外兩個。

先選事件附近的表格,再分別求值、求零或求極值;最後檢查單位、範圍和殘差。

Jean Meeus · Astronomical Algorithms, 2nd ed. · 第 3 章

通用演算法與數值計算 · 全部互動課程