星盤算得有多準
COSINE 餘弦的星盤由程式按天文星曆計算,AI 只負責解讀算好的結果。這一頁公開這套程式算得有多準:55 張測試星盤,和專業占星軟體普遍使用的瑞士星曆表(Swiss Ephemeris)逐項比對。下面的數字在每次更新網站時重新計算。
- 測試星盤
- 55 張,其中 52 張有出生時間
- 出生年份
- 1900 – 2050 年
- 出生地分佈
- 南緯 77.8° 到北緯 78.2°,31 個時區
- 行星最大偏差
- 20.2″(上限 1′ = 60″)
比對結果
下表是每一項與瑞士星曆表的黃經之差。1° 等於 60 角分(′),1 角分等於 60 角秒(″)。我們給自己定的上限是 1′,表裡最大的一項是 36.3″。
| 專案 | 比對次數 | 最大偏差 | 平均偏差 |
|---|---|---|---|
| 太陽 | 55 | 1.8″ | 0.5″ |
| 月亮 | 55 | 9.6″ | 1.3″ |
| 水星 | 55 | 6.7″ | 1.9″ |
| 金星 | 55 | 20.2″ | 1.6″ |
| 火星 | 55 | 11.2″ | 1.5″ |
| 木星 | 55 | 9.9″ | 2.6″ |
| 土星 | 55 | 10.9″ | 3.0″ |
| 天王星 | 55 | 11.2″ | 4.4″ |
| 海王星 | 55 | 18.4″ | 9.0″ |
| 冥王星 | 55 | 5.0″ | 1.7″ |
| 北交點(平均) | 55 | 0.2″ | 0.1″ |
| 北交點(真) | 55 | 36.3″ | 11.2″ |
| 上升點 | 52 | 11.9″ | 2.4″ |
| 天頂 | 52 | 11.2″ | 2.4″ |
| Placidus 宮頭 | 564 | 12.7″ | 2.3″ |
行星和交點每張星盤比一次;上升點和天頂只比有出生時間的星盤;宮頭是 Placidus 有解的每張星盤各 12 個。平均交點和真交點是兩種演算法,星圖的「檢視全部資料」裡兩種都有。
這些差別都小於星圖上顯示的最小單位 1′。只有當一顆行星或宮頭恰好落在星座、宮位交界的幾角秒以內時,它才可能改變判斷。逆行與否,440/440 次判斷與瑞士星曆表一致。
比對怎麼做
參考值來自瑞士星曆表 2.10.03(Moshier 模式),由一個獨立的 Python 程式生成。它用 Python 自帶的時區資料把當地時間換算成世界時,和網站使用的時區資料是兩套,所以時區換算也一併得到核對。
測試星盤覆蓋 1900 到 2050 年,包括南半球、西經、赤道附近、極圈以內,UTC+5:30、+5:45 這類非整點時區,歷史上的夏令時,以及出生時間未知的情況。
這組比對是自動化測試的一部分:每次修改計算程式碼都要重新跑一遍,任何一項超過 1′,測試就不通過。瑞士星曆表只用來生成參考數字,網站本身不包含它的程式碼。
哪些由程式計算
行星位置、逆行、上升點、天頂、宮頭和相位,全部由程式計算。行星位置用開源天文計算庫 astronomy-engine:求出天體在出生那一刻相對地球的視位置,再換算到當時的黃道座標。
你向 AI 提問時,伺服器先算好星盤,再把結果整理成文字交給 AI。AI 不計算、也不修改任何位置,只解讀它拿到的資料。
時區與夏令時
你填寫的是當地的鐘錶時間。程式按 IANA 時區資料庫裡各地的歷史規則換算成世界時,包括歷史上的夏令時。換算錯一小時,上升點會移動約 15°,往往換一個星座。
測試星盤裡有 27 張出生時正值夏令時,例如中國 1986–1991 年的夏令時、1941 年重慶的夏令時、臺灣 1955、1974 和 1979 年的夏令時、香港 1965 年、韓國 1988 年,以及英國 1944 年的雙重夏令時(UTC+2)。55/55 張星盤換算出的世界時與參考值一致,精確到秒。
宮位與高緯度
宮位用 Placidus 制。在南北緯約 66° 以上,有些時刻 Placidus 在數學上沒有解,這時改用整宮制:上升所在的星座整個作為第一宮,星圖頁面會註明。
測試裡有 5 張出生在極圈以內的星盤,最北到北緯 78.2°,最南到南緯 77.8°。Placidus 無解、改用整宮制的有 5 張,瑞士星曆表在這幾張上同樣算不出 Placidus。要不要改用整宮制,52/52 張與瑞士星曆表的判斷一致。
比計算誤差大得多的:出生時間
上升點平均每 4 分鐘移動約 1°,也就是每秒約 15″。按這個速度,上表裡上升點的最大偏差 11.9″,相當於出生時間差 0.8 秒。
而出生時間往往只記到整點、半點或一刻鐘。差 4 分鐘,上升點就移動約 1°;差 15 分鐘,約 4°,可能換一個星座,宮頭也跟著移動。所以上升或宮頭落在交界附近時,先核對出生時間,比比較不同軟體之間的幾角秒有用得多。
出生地也一樣:我們用城市或區縣中心的座標。在同一座城市裡相差十公里左右,上升點大約差幾角分,比計算誤差大,但遠小於出生時間不準的影響。
其他侷限
這一頁只比對行星、交點、上升點、天頂和宮頭。凱龍星、四顆小行星和莉莉絲等點另有測試;其中真莉莉絲(月球的密切遠地點)會放大月球軌道的細小誤差,與瑞士星曆表最多相差約 12′。
2050 年以後,地球自轉會快慢多少沒人能準確預測,各家軟體的估計不同,到 2100 年月亮的位置會因此相差約 1′。日期離現在越遠,軟體之間的差別越大。
回歸黃道還是恆星黃道、Placidus 還是別的宮位制,會讓結果相差很多,但那是流派的選擇,不是計算誤差。我們用回歸黃道和 Placidus。
對照:讓語言模型直接給出星盤
有些應用把出生資料直接交給大語言模型,讓它「算」出星盤。2026 年 10 月 13 日,我們做過一次測試:把 10 個人的出生日期、時間和城市分別交給三個常用模型(DeepSeek V4.1 Flash、GPT-4o mini、Gemini 2.5 Flash),不給任何星盤資料,請它們寫出太陽到土星、上升和天頂九個位置的星座和度數,共 25 份有效回答。
| 專案 | 語言模型答對 |
|---|---|
| 太陽星座 | 25/25 |
| 月亮星座 | 1/25 |
| 上升星座 | 15/25(60%) |
| 九個位置合計 | 124/225(55%) |
| 太陽以外,誤差在 1° 以內 | 17/200 |
太陽星座的日期每年差不多,到處都寫著,模型憑記憶就能答對。月亮每兩天半換一個星座,必須按確切的時刻計算,模型的月亮平均錯了 79°,將近三個星座。而程式計算的位置,在上面的比對裡與瑞士星曆表相差不到 20.2″。
測試是通過 API 直接呼叫模型,沒有聯網搜尋,也沒有程式碼工具,所以不等於 ChatGPT 應用本身的表現。但它說明了一件事:語言模型擅長寫字,不擅長算天體位置。這就是 COSINE 餘弦讓程式算盤、讓 AI 只做解讀的原因。 測試全文(英文)
常見問題
為什麼別的軟體算出的度數和這裡差一兩分?
常見的原因是出生地座標不同、交點用的是平均還是真交點、時區或夏令時處理不同。軟體之間純計算上的差別通常只有幾角秒。
幾角秒的誤差會影響解讀嗎?
幾乎不會。1 角秒是 1° 的三千六百分之一,只有行星恰好落在星座或宮位交界處時才可能有影響。相比之下,出生時間差 4 分鐘,上升點就移動約 1°。
上限為什麼定在 1′?
星圖上的度數顯示到 1′,所以 1′ 以內的差別在頁面上看不出來。實際誤差比這個上限小得多,見上表。
計算的每一步寫在「我們怎麼算的」。