文章 · JOURNAL
線上排盤準不準?
星盤的誤差從哪裡來,本站怎麼核對
「準」要分兩件事問:天文計算本身準不準,以及你給的出生時間、地點與時區對不對。這篇把一張星盤從鐘面時間算到宮位的每一步列出來,量出每一步的誤差有多大,再說明本站拿什麼和什麼比對、還有哪些沒有比對過。
用 Tab 鍵移到一列上,或用滑鼠指著它,這裡會寫出它怎麼算的。
- 星曆:與 JPL 星曆的差:天體位置移動約 0.24″。本站 7 個天體對 JPL Horizons,1900 到 2100 年 6 個時刻的最大差。
- ΔT 本身的不確定(1990 年):上升點移動約 0.41″。收據寫的 ΔT 不確定度約 0.03 秒,乘上上升點每秒走的角度。
- 忽略 ΔT(1900 年):月亮移動約 0.81″。ΔT 約 −1.5 秒;把世界時當成地球時算出的月亮差多少。
- 忽略 ΔT(1990 年):月亮移動約 29″。ΔT 約 57.1 秒;同上。
- 出生時間差 1 分鐘:上升點移動約 13′37″。本站對 14:01 的回應減 14:00 的回應。
- 座標取到整數度:上升點移動約 25′37″。北緯 25°、東經 122° 對 北緯 25.05306°、東經 121.52639°。
- 時區或夏令時間錯 1 小時:上升點移動約 13.6°。把鐘面當成 UTC+9(世界時早了 1 小時)。
圖中的數字(表格)
| 誤差來源 | 移動的是 | 移動多少 | 怎麼算的 |
|---|---|---|---|
| 星曆:與 JPL 星曆的差 | 天體位置 | 0.24″ | 本站 7 個天體對 JPL Horizons,1900 到 2100 年 6 個時刻的最大差 |
| ΔT 本身的不確定(1990 年) | 上升點 | 0.41″ | 收據寫的 ΔT 不確定度約 0.03 秒,乘上上升點每秒走的角度 |
| 忽略 ΔT(1900 年) | 月亮 | 0.81″ | ΔT 約 −1.5 秒;把世界時當成地球時算出的月亮差多少 |
| 忽略 ΔT(1990 年) | 月亮 | 29″ | ΔT 約 57.1 秒;同上 |
| 出生時間差 1 分鐘 | 上升點 | 13′37″ | 本站對 14:01 的回應減 14:00 的回應 |
| 座標取到整數度 | 上升點 | 25′37″ | 北緯 25°、東經 122° 對 北緯 25.05306°、東經 121.52639° |
| 時區或夏令時間錯 1 小時 | 上升點 | 13.6° | 把鐘面當成 UTC+9(世界時早了 1 小時) |
簡單地說:星盤算錯,很少錯在星曆。1900 到 2100 年,本站行星位置與 JPL 的星曆相差不到 0.4 角秒;讓上升點差上幾度的,是出生時間、時區與座標這些輸入。
重點
§01一張星盤是怎麼算出來的
先說單位:1 度是 60 角分,1 角分是 60 角秒。一般星盤把位置寫到角分,例如「處女座 24°47′」;所以小於半角分(30 角秒)的差,在畫面上看不出來。
從你填進表單的資料,到畫面上的上升點與宮位,中間有六步。每一步本站怎麼做,寫在下面:
- 出生地點與鐘面時間。出生證明上寫的是當時牆上時鐘的讀數,地點是一組經緯度。本站的地名目錄給出座標,也可以手動輸入。
- 時區與歷史時間。鐘面時間要先換成「那一刻是 UTC 加幾小時」。本站用 IANA 時區資料庫(tz database)換算,包括歷年的夏令時間;版本記在收據裡[1]。
- 世界時與 ΔT。由 UTC 得到世界時(UT,Universal Time,跟著地球自轉走的時間),再加上 ΔT(Delta T,地球時減世界時)得到地球時(TT,Terrestrial Time,均勻流逝的時間)。行星的位置要用地球時查,地平線與宮位要用世界時算;兩者在 1990 年約 57.1 秒,1900 年約 −1.5 秒,到 2399 年約 8.6 分鐘,後者是外推的估計[1][5]。
- 星曆。星曆(ephemeris)是列出日月行星每一刻位置的表。本站用 Astrodienst 的 Swiss Ephemeris 2.10.03,附帶的星曆檔(行星檔 sepl_18、月亮檔 semo_18)檔頭寫著 based on JPL DE441,也就是由美國噴射推進實驗室(JPL)的 DE441 星曆轉成,涵蓋 1800 到 2400 年初;本站接受 1900 到 2399 年的出生日期[5]。每個檔案的 SHA-256 雜湊釘在公開原始碼裡,伺服器啟動時核對,計算卷宗也逐檔寫出是否相符[6]。
- 座標轉換。預設是從地心看出去的視位置:計入光行時間、光行差與章動(nutation,地軸的小幅擺動),以當日的春分點為起點量黃經[2]。
- 宮位與四軸。世界時加上出生地經度,得到地方恆星時(sidereal time);它和黃赤交角、出生地緯度一起決定上升點、中天與宮頭。地球自轉讓恆星時每秒約 15.04 角秒地往前走,這一步因此對時間最敏感[5]。
§02誤差預算:哪一步差最多
圖 1 把各種誤差放在同一把尺上。用的是同一張合成盤:1990 年 5 月 15 日下午兩點,臺北;上升點在處女座 24°47′。每一列都是實算:改掉一項輸入,看位置移動多少[5]。
- 出生時間。這張盤上,上升點每秒約走 13.6 角秒;差 1 分鐘,上升點移動 13′37″,大約四分之一度。各星座升起的快慢不同,換一張盤這個數字會變;〈不確定出生時間?差五分鐘,上升星座與宮位會怎麼變〉有逐星座的數字。
- 出生地座標。同一個鐘面時間,座標取到整數度(北緯 25 度、東經 122 度),上升點移動 25′37″。經度差 1 度,地方恆星時就差 4 分鐘;用城市中心代替實際出生地,在大城市裡通常只差零點幾度,但東經寫成西經這類錯,整張盤都會換掉。
- 時區與夏令時間。把鐘面當成 UTC+9,世界時就早了整整一小時;錯 1 小時,上升點移動 13.6°。臺灣在 1946–1961、1974、1975、1979 年的夏天實施過夏令時間,這種錯最常發生在這些年份,見〈臺灣夏令時間出生,排盤要減一小時嗎?〉。
- ΔT。如果程式把世界時直接當成地球時去查星曆,月亮的位置就會偏掉 ΔT 那麼多秒的路程。月亮走得最快,所以差得最多:1900 年的盤只差 0.81″,1990 年的盤差 29″。年代越晚、ΔT 越大,忽略它的代價越高。本站不會忽略它;收據寫出本次用的 ΔT,以及它的不確定度。1990 年那張盤的不確定度約 0.03 秒,折合上升點約 0.41″[1]。
- 星曆本身。本站對 JPL Horizons 的最大差是 0.24 角秒,畫在圖 1 最左邊(下一節說明怎麼量的)。
虛線標出「顯示到角分」的捨入:落在虛線左邊的,在一般星盤上根本看不到;落在右邊的,才是會改變你看到的度數、甚至星座的誤差。從圖上看,輸入資料的錯比天文計算的誤差大了上千到上萬倍。
一張盤準不準,首先看出生時間、時區與地點對不對;天文計算本身的誤差,在角分的顯示裡看不到。
§03出生時間差幾秒、幾分鐘,上升點移多遠
圖 2 用同一張盤,把出生時間往後挪:從晚 1 秒到晚 1 小時。拖拉條每一步都是本站計算服務對那個時刻的實際回應。差幾秒,上升點只移幾角秒;差一分鐘,就超過畫面能顯示的一角分十倍以上;晚 30 分鐘,上升點已經換到天秤座,中天也同時跨進巨蟹座[5]。
拖拉選一個時間誤差,這裡會寫出上升點與中天移動多少、到了哪裡。
- 出生時間晚了 1 秒:上升點移動 0°00′14″,到處女座 24°47′;中天移動 0°00′14″,到雙子座 24°43′;兩者都還在原來的星座。
- 出生時間晚了 5 秒:上升點移動 0°01′08″,到處女座 24°48′;中天移動 0°01′09″,到雙子座 24°44′;兩者都還在原來的星座。
- 出生時間晚了 15 秒:上升點移動 0°03′24″,到處女座 24°50′;中天移動 0°03′27″,到雙子座 24°46′;兩者都還在原來的星座。
- 出生時間晚了 30 秒:上升點移動 0°06′49″,到處女座 24°53′;中天移動 0°06′55″,到雙子座 24°49′;兩者都還在原來的星座。
- 出生時間晚了 1 分鐘:上升點移動 0°13′37″,到處女座 25°00′;中天移動 0°13′49″,到雙子座 24°56′;兩者都還在原來的星座。
- 出生時間晚了 2 分鐘:上升點移動 0°27′15″,到處女座 25°14′;中天移動 0°27′38″,到雙子座 25°10′;兩者都還在原來的星座。
- 出生時間晚了 5 分鐘:上升點移動 1°08′07″,到處女座 25°55′;中天移動 1°09′05″,到雙子座 25°52′;兩者都還在原來的星座。
- 出生時間晚了 10 分鐘:上升點移動 2°16′15″,到處女座 27°03′;中天移動 2°18′08″,到雙子座 27°01′;兩者都還在原來的星座。
- 出生時間晚了 15 分鐘:上升點移動 3°24′24″,到處女座 28°11′;中天移動 3°27′09″,到雙子座 28°10′;兩者都還在原來的星座。
- 出生時間晚了 30 分鐘:上升點移動 6°48′52″,到天秤座 1°36′;中天移動 6°54′10″,到巨蟹座 1°37′;上升與中天已經換了星座。
- 出生時間晚了 1 小時:上升點移動 13°37′29″,到天秤座 8°24′;中天移動 13°48′51″,到巨蟹座 8°31′;上升與中天已經換了星座。
圖中的數字(表格)
| 晚了 | 上升點 | 移動 | 中天 | 移動 |
|---|---|---|---|---|
| 1 秒 | 處女座 24°47′ | 0°00′14″ | 雙子座 24°43′ | 0°00′14″ |
| 5 秒 | 處女座 24°48′ | 0°01′08″ | 雙子座 24°44′ | 0°01′09″ |
| 15 秒 | 處女座 24°50′ | 0°03′24″ | 雙子座 24°46′ | 0°03′27″ |
| 30 秒 | 處女座 24°53′ | 0°06′49″ | 雙子座 24°49′ | 0°06′55″ |
| 1 分鐘 | 處女座 25°00′ | 0°13′37″ | 雙子座 24°56′ | 0°13′49″ |
| 2 分鐘 | 處女座 25°14′ | 0°27′15″ | 雙子座 25°10′ | 0°27′38″ |
| 5 分鐘 | 處女座 25°55′ | 1°08′07″ | 雙子座 25°52′ | 1°09′05″ |
| 10 分鐘 | 處女座 27°03′ | 2°16′15″ | 雙子座 27°01′ | 2°18′08″ |
| 15 分鐘 | 處女座 28°11′ | 3°24′24″ | 雙子座 28°10′ | 3°27′09″ |
| 30 分鐘 | 天秤座 1°36′ | 6°48′52″ | 巨蟹座 1°37′ | 6°54′10″ |
| 1 小時 | 天秤座 8°24′ | 13°37′29″ | 巨蟹座 8°31′ | 13°48′51″ |
所以出生證明寫到幾分,盤就只能準到那一分鐘所對應的角度。醫院紀錄常常四捨五入到 5 分鐘或整點;如果你的紀錄看起來是整點,〈不知道出生時間,能排星盤嗎?〉說明本站怎麼把「大約幾點」照實標出來。
§04上升星座算錯、排盤結果不一樣,常見的原因
拿兩個工具排同一張盤,結果不同,原因多半在輸入的處理,而不在星曆。以下是一般性的情形,不針對任何一個工具:
- 歷史時區與夏令時間。只用今天的時區(例如臺灣一律 UTC+8)換算,夏令時間的年份就差一小時。時區資料庫本身也修訂過,不同年代內建的版本,可能對同一個舊日期給出不同的偏移;這也是本站把版本寫進收據的原因[1]。
- 座標太粗或填錯。只取到整數度、用縣市中心代替出生地、東經西經或南北緯的正負號弄反。
- 時間先換過一次。先換成真太陽時再輸入,經度會被算兩次,見〈西洋占星要不要換真太陽時?〉。用查詢表代替計算,也有同樣的問題,見〈上升星座查詢表為什麼常常不準〉。
- 捨入。輸入只收到分鐘、顯示只到角分,都會讓兩邊在邊界附近給出不同的星座或宮位。
- 忽略 ΔT 或用了過時的 ΔT 表。對現代的盤,月亮會偏幾十角秒;對很遠的未來,差得更多。
- 口徑不同,而不是算錯。宮位制、回歸或恆星黃道、真交點或平均交點、視位置或真位置,選的不同,結果本來就不同。這些是方法的選擇,本站在〈方法〉逐項寫明採哪一種。
兩個工具的上升點差了十幾度,通常不是誰的星曆比較準,而是有一邊把鐘面時間換錯了一小時。
§05本站拿什麼和什麼比
「準確」要有對照才有意義。本站的計算有幾組和外部數值的比對,比的對象、容許的差與實測的差如下。容許值是測試的設定,不是物理上的精度保證:超出就算失敗,沒超出不代表完全正確。
| 比什麼 | 和誰比 | 容許的差與實測 |
|---|---|---|
| 日月與五顆行星的地心視位置 | JPL Horizons(DE441),1900 到 2399 年之間 8 個時刻 | 黃經差不超過 0.4 角秒(2100 年以後 1.5 角秒);黃緯不超過 0.15 角秒;七個天體扣掉太陽的差之後不超過 0.05 角秒。實測最大 0.24 角秒;2100 年以後最大 1.18 角秒 |
| 世界時換成地球時 | JPL Horizons 的時間差,1972 年起 | 世界時換成地球時差不超過 5 毫秒 |
| 七個天體逐小時的位置與速度 | 另一條管線:JPL DE442 加上 Astropy/ERFA,1990 到 2026 年 | 共 2,244,088 列;位置與速度合計 99.96% 落在工程門檻內,五大行星的位置沒有一項超出門檻 |
| 日食的時刻與種類 | NASA 的五千年日食典,1900 到 2399 年 | 全面比對 1181 次日食;食甚時刻容許 30 秒,實測最大 12.1 秒。種類或是否為中心食,有 7 次與日食典不同,都落在日食典自己的分類邊界附近;測試把它們逐一列出 |
| 上升點、中天與宮頭 | 以球面三角另外寫的公式重算 | 7 種宮位制、10 個地點與年代,差小於 0.01 角秒 |
| 恆星時與一張盤的宮頭 | 美國海軍天文臺(USNO)的恆星時,2000 年元旦臺北 | 宮頭容許 0.5 角秒 |
第一列的 0.24 角秒,大部分不是星曆的差:同一個時刻,所有天體偏同一個方向、同一個量,那是兩邊用的歲差章動模型不同,春分點的位置差了一點。扣掉這個共同偏移之後,天體之間的相對位置差不超過 0.05 角秒[4]。第三列的逐小時比對是一次歷史比對,門檻是那一批比對的設定;兩條管線共用部分國際標準與觀測資料,所以本站不稱它們「完全獨立」。代表性的最大差是水星赤緯 4.8 角秒,細節與例外寫在〈驗證〉[3]。
這些比對都寫成本站的自動測試;每次改動程式,測試都要重跑一次,超出容許值就不能交付。這些測試與固定資料目前不在公開原始碼裡[4]。
§06還沒有驗證到的地方
- 你的出生紀錄。出生證明上的時間是否準確、是不是有人事後換算過,任何程式都驗證不了。
- 1970 年以前的時區。時區資料庫自己說明,1970 年以前、特別是地方平時的段落多為推定;本站把這些段落標成「資料庫推定、未驗證」[1]。
- 遠未來的 ΔT。2028 年以後的 ΔT 是外推,越往後越不確定;方法頁寫明 2399 年的不確定度約七分鐘的量級,這會移動那時的天體位置[1]。
- 比對的範圍。逐小時比對只涵蓋 1990 到 2026 年的七個天體;交點、恆星、極區與高緯度的宮位、恆星黃道與日心等模式,各自只有較小的核對,或還沒有外部對照[3]。逐小時那一批比對,早於後來修正的驗證器分母問題,修正後沒有整批重跑,只做了有範圍的抽查。
- 占星方法本身。天文位置算對,不代表任何一種占星解讀是對的。本文只說明計算,不替你解盤,也不預測。
§07自己核對:收據與計算卷宗
結果頁最下方有「技術細節與驗算資料」。打開之後,你會看到這次計算實際用了什麼:
- 時區資料庫的版本、UTC 偏移與換算出的世界時;
- 儒略日(Julian Day,天文計算用的連續日數)、本次的 ΔT(秒)與它的模型狀態(實測期的表、歷史重建或外推);
- Swiss Ephemeris 的版本與星曆的 JPL 來源;
- 計算政策(中心、黃道、視位置、旗標),以及逐步計算軌跡的步數與雜湊。
匯出時選「運算結果+驗算資料」,帶走的是整份計算卷宗,其中還逐檔列出每個星曆檔的 SHA-256,以及它是否符合公開原始碼裡釘選的值。
要重算,拿收據上的世界時與經緯度,用同一版 Swiss Ephemeris 呼叫 swe_calc_ut 算行星、swe_houses_ex 算宮位,旗標照收據的「計算政策」;行星位置也可以拿到 JPL Horizons 用地心視黃經去查,差多少可以對照表 1。卷宗也可以交給另一個人,用同樣的請求核對[6]。
計算在本站的伺服器上進行。瀏覽器送出了什麼、送到哪裡,可以照〈自己檢查瀏覽器送出什麼〉用開發者工具親手看;線上跑的是哪一版,看卷宗裡的版本識別碼。卷宗含有你的出生資料,分享前請先想清楚。
§08常見問題
線上排盤和專業軟體,哪個比較準?
這要看兩邊用的星曆、時區處理與口徑,不能一概而論。本站能說的是本站自己:比對的對象、容許值與實測值都寫在 §05,你也可以用收據自己重算。
上升星座和別的網站算的不一樣,是誰錯了?
先對照兩邊的世界時與座標。多半是時區、夏令時間或座標不同;兩邊都一樣時,再看宮位制與黃道等口徑。本站的世界時與座標都寫在收據裡。
Swiss Ephemeris 的準確度有多高?
本站只能說自己的比對:行星的地心視黃經與 JPL Horizons 差多少,逐年代列在表 1。範圍外的年代與模式,本站沒有宣稱。
出處
每一條後面標明我們核到哪一層:本站出處清單是本站公開的方法說明;本站自算是我們用標明版本的程式算出、可以照著重算的數字。
- 渾儀方法頁 §07.6〈UTC、UT1 與 ΔT〉:1972 年起以閏秒 UTC 換算、1960 年前與 1960–1971 年當作 UT1、ΔT 各段的來源與不確定度、時區依收據記下版本的 IANA 時區資料庫換算、1970 年前多為推定;以及方法出處清單條目
time/delta_t_model。本站出處清單 - 渾儀方法頁 §07.3〈視位置 vs 真位置〉:預設地心視位置、不計大氣折射。本站出處清單
- 渾儀〈驗證〉:與 JPL DE442+Astropy/ERFA 管線的逐小時比較(1990–2026 年,七個天體)、工程門檻、代表性最大差異、已涵蓋與未涵蓋的範圍。本站出處清單
- 本站的天文基準測試(目前不在公開原始碼裡):
tests/backend/test_external_astronomy_baselines.py(JPL Horizons 的地心視黃經與時間差、NASA 日食典),固定資料tests/backend/fixtures/jpl_horizons_positions.json與nasa_eclipse_canon_selection.json(各自寫明查詢網址、取得日期與容許值的理由);tests/backend/test_house_product_path.py(宮頭對閉合公式與 USNO 恆星時)。本站自算 - 本文的圖 1、圖 2 與 §01–§03 的數字:本站計算服務對合成時刻 1990-05-15 14:00(臺北,整宮制)及其變化(挪後的時刻、整數度座標、UTC+9、1900 與 2399 年同一日期)的實際回應;月亮「忽略 ΔT」以 Astrodienst Swiss Ephemeris 2.10.03(經 pyswisseph 呼叫
swe_calc)在世界時當成地球時的時刻自算;星曆檔的 JPL 來源讀自檔頭,涵蓋年份讀自本站的星曆檔清單。2026 年 10 月自算。本站自算 - 渾儀〈信任〉第 05 節:每一次計算都產生一份可重算的卷宗,內含口徑、時間換算、引擎與星曆版本、軌跡步數與 SHA-256 收據,選「運算結果+驗算資料」匯出即整份帶走;星曆檔的釘選雜湊在公開原始碼
deploy/ephemeris.sha256。本站出處清單