方法

星盤算得有多準

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″。

專案比對次數最大偏差平均偏差
太陽551.8″0.5″
月亮559.6″1.3″
水星556.7″1.9″
金星5520.2″1.6″
火星5511.2″1.5″
木星559.9″2.6″
土星5510.9″3.0″
天王星5511.2″4.4″
海王星5518.4″9.0″
冥王星555.0″1.7″
北交點(平均)550.2″0.1″
北交點(真)5536.3″11.2″
上升點5211.9″2.4″
天頂5211.2″2.4″
Placidus 宮頭56412.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′ 以內的差別在頁面上看不出來。實際誤差比這個上限小得多,見上表。

計算的每一步寫在「我們怎麼算的」。