星盘算得有多准
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′ 以内的差别在页面上看不出来。实际误差比这个上限小得多,见上表。
计算的每一步写在「我们怎么算的」。