瓦伦斯占星选集·卷一第十八节:希帕恰斯式月亮星座算法
瓦伦斯占星选集·卷一第十八节希帕恰斯式月亮星座算法

【原文翻译】
我用下法简便求出月亮所在星座:从下附列王表中取所问年份对应的正确加数并相加。将该数除以 3,不丢弃余数而保留:余 1 时加 10;余 2 时加 20;余 3 时不加,因为此时正好整除。然后,取从透特月至出生日所经过月数的一半,加上〈出生月份中的〉日数。若可能,除以 30;从太阳所在星座起按余数计数。若太阳在星座起始处,每个星座分配 2 1/2;若接近星座末尾,则分配相应数量。计数停止处即为月亮位置。
也可用同一方法求某张命盘的日期:把加数加到所问年份上,依上述方法除以 3;再加所经月数的一半,记下结果。随后估计太阳至月亮的距离,每个星座分配 2 1/2〈日〉。比较两个数字:若由日月距离所得的数字较大,减去先前算出的数字,结果即显示日期;若距离数较小,先加 30,再减去先前的数字。若两个数都能被 30 整除,月亮就与太阳合相。
例如:哈德良三年,阿提尔月二十八日。我把这位国王惯用的加数 2 加到第三年,得 5;除以 3,余 2,故加 20,得 25。从透特月至阿提尔月的月数之半为 1 1/2,再加阿提尔月的 28 日,目前合计 54 1/2。除以 30,商 1,余 24 1/2。月亮距太阳合相便是这么多日。我从太阳所在的射手座起计此数,每个星座分配 2 1/2;在所说的那一天,月亮位于处女座。
求日期如下:再次把 2 加到第三年,再除以 3,余 2;故加 20 得 25,再加月数之半 1 1/2,共 26 1/2。然后估计太阳至月亮(即射手座至处女座)的距离为 24 1/2 日。因无法从 24 1/2 减去先前总数 26 1/2,便先加 30,得 54 1/2;再减 26 1/2,结果为 28,表明出生日为二十八日。
各位国王惯用的加数,按年代顺序附列如下:
| 君王 | 在位年数 | 运行总数 | 减数 | 余数/加数 |
|---|---|---|---|---|
| 奥古斯都 | 1,43 | 44 | 30 | 14 |
| 提比略 | 22 | 36 | 30 | 6 |
| 盖乌斯 | 4 | 10 | — | 10 |
| 克劳狄乌斯 | 14 | 24 | 19 | 5 |
| 尼禄 | 14 | 19 | — | — |
| 维斯帕先 | 10 | 21 | 19 | 2 |
| 提图斯 | 3 | 5 | — | 5 |
| 图密善 | 15 | 20 | 19 | 1 |
| 涅尔瓦 | 1 | 2 | — | 2 |
| 图拉真 | 19 | 21 | 19 | 2 |
| 哈德良 | 21 | 23 | 19 | 4 |
| 安敦宁 | 23 | 27 | 19 | 8 |
| 安敦宁与卢基乌斯·康茂德 | 32 | 40 | 30 | 10 |
| 塞维鲁与安敦宁 | 25 | 35 | 30 | 5 |
| 安敦宁 | 4 | 9 | — | 9 |
| 亚历山大 | 13 | 22 | 19 | 4 |
| 马克西米安 | 3 | 7 | — | 7 |
| 戈尔迪安 | 6 | — | — | — |
| 腓力 | 6 | — | — | — |
表意说明:奥古斯都的余数 14 加到提比略;提比略在位 22 年,合计 36,减 30 余 6。尼禄处十九年周期正好完成。因为这一周期有效,为补足 30,向维斯帕先在位期加入 11 年。至腓力处,十九年周期再次完成。【译注:底本表格排版紧凑,部分“运行总数”是承接上一行余数的累计,并非单纯等于本行在位年数。】
【解读】
这套方法在计算什么
这套方法先估算出生时的“月龄”,再根据太阳的位置推算月亮所在的星座。
月龄指的是:
从上一次日月合相,也就是朔月或新月开始,已经过去了多少天。
整套计算可以理解为:
出生年份和日期
→ 估算月龄
→ 把月龄换成日月之间的距离
→ 从太阳的位置出发寻找月亮
它计算的是月亮在黄道上的星座位置,与前面讲的月纬、月亮阶位和风向不是同一件事。
第一步:把帝王纪年接起来
瓦伦斯使用“哈德良三年”“图拉真十三年”这样的帝王纪年。
问题在于,每换一位皇帝,年份就重新从第一年开始。因此,他需要用王表中的“承接加数”,把不同皇帝的纪年接成一条连续的时间线。
计算方式:
有效年数 = 当前皇帝在位年数 + 上一周期留下的承接加数
原文例子是哈德良三年。
哈德良使用的承接加数是2,因此:
3 + 2 = 5
这个5就是后面计算月相时使用的有效年数。
需要注意:表中的余数会传给下一位君王。哈德良三年使用的2来自图拉真一行留下的余数。哈德良一行最后算出的4,是哈德良完整在位期结束后传给下一位君王的数。
从现代角度看,这张王表相当于一张“纪年转换表”。
第二步:计算年份造成的月相偏移
一个太阳年约有365.24天。
十二个朔望月合计约354.37天。
两者相差约:
365.24 - 354.37 = 10.87天
瓦伦斯把它近似成11天。
也就是说,同一个太阳历日期到了下一年,月相大约会错开11天。

所以年份造成的月相偏移可以写成:
年份偏移 = 有效年数 × 11
例子中的有效年数是5:
5 × 11 = 55
月相大约每30天循环一次,所以只保留55除以30之后的余数:
55 - 30 = 25
年份部分的月相偏移就是25天。
原文为什么要“除以3,再加10或20”
瓦伦斯没有直接让人把有效年数乘以11,而是使用了一种方便心算的方法:
- 除以3余1:在原数上加10
- 除以3余2:在原数上加20
- 正好整除:不加
例子中的有效年数是5:
5除以3,余2。
因此在5上加20:
5 + 20 = 25
这与“5乘以11,再除以30取余数”的结果相同:
5 × 11 = 55
55除以30,余25。
所以,“除以3再加10或20”只是古人的快捷算法。它实际计算的是每年约11天的月相偏移。
五欢星命札记
原文写“余3时不加”,按照现代数学语言,应理解为“余数为0,也就是正好整除”。除以3不会真正出现余3。

第三步:计算月份造成的偏移
埃及历每个月固定为30天,但真正的朔望月约为29.53天。
两者每个月相差约半天。
因此,瓦伦斯规定:
月份偏移 = 从透特月至出生月的月数 ÷ 2
原文例子从透特月至阿提尔月按3个月计算:
3 ÷ 2 = 1.5
所以月份造成的月相偏移是1.5天。
第四步:加上出生日期
现在把三部分放在一起:
- 年份偏移:25天
- 月份偏移:1.5天
- 出生日期:28日
相加得到:
25 + 1.5 + 28 = 54.5
这个54.5还不是最终结果,因为月相每约30天会重新循环。
第五步:求出月龄
从54.5中减去一个完整的30天周期:
54.5 - 30 = 24.5
因此,出生时的月龄大约是24.5天。
它表示:
出生时距离上一次日月合相,大约已经过去24.5天。
这个24.5是天数,不是月亮黄经24.5°。
第六步:把月龄换成日月距离
瓦伦斯把一个30天的月相周期平均分给十二个星座:
30 ÷ 12 = 2.5
因此,他认为月亮相对太阳每前进一个星座,大约需要2.5天。
原文例子的月龄是24.5天:
24.5 ÷ 2.5 = 9.8
也就是说,月亮已经从太阳所在的位置向前走了大约9.8个星座。
用角度表示,每个月龄日大约相当于12°:
30° ÷ 2.5天 = 12°/天
所以:
24.5 × 12° = 294°
月亮大约领先太阳294°。
第七步:从太阳所在星座寻找月亮
例子中的太阳位于射手座开头附近。
瓦伦斯从射手座开始,每2.5天分配给一个星座:
- 0至2.5天:射手座
- 2.5至5天:摩羯座
- 5至7.5天:水瓶座
- 7.5至10天:双鱼座
- 10至12.5天:白羊座
- 12.5至15天:金牛座
- 15至17.5天:双子座
- 17.5至20天:巨蟹座
- 20至22.5天:狮子座
- 22.5至25天:处女座
月龄24.5落在22.5至25之间,因此月亮位于处女座。
原文最后得到:
月亮在处女座。
如果太阳位于一个星座的中间或末尾,就不能机械地给第一个星座分配完整的2.5天,需要按照太阳已经走过的度数缩短第一段。原文只说“分配相应数量”,没有给出完整的换算规则。
反过来推算出生日期
这套方法也可以倒过来使用。
已知:
- 出生年份
- 出生月份
- 太阳位置
- 月亮位置
就可以估算出生日期。
第一步:只计算年份和月份
前面已经算出:
- 年份偏移:25天
- 月份偏移:1.5天
暂时不加入出生日期:
25 + 1.5 = 26.5
这个26.5是出生日期以外的月相偏移。
第二步:由日月距离估算月龄
太阳在射手座,月亮在处女座。
按照每个星座对应2.5天的规则,瓦伦斯估计这段距离相当于24.5天。
所以:
日月距离数 = 24.5
第三步:减去年份和月份偏移
原本应当计算:
24.5 - 26.5
结果是负数。
因为月相是30天循环,所以先给24.5加上一个完整周期:
24.5 + 30 = 54.5
然后再减:
54.5 - 26.5 = 28
因此,出生日期是:
阿提尔月28日。
用现代公式概括
设:
Y = 当前王年加承接加数
M = 从透特月至出生月的月数
D = 出生日期
L = 月龄
E = 月亮领先太阳的角距离
正向计算可以写成:
有效年数:
Y = 当前王年 + 承接加数
月龄:
先计算 11 × Y + M ÷ 2 + D。
如果结果超过30,就不断减去30,直到结果落在0至30之间。
留下的数字就是月龄L。
日月角距离:
E ≈ 12° × L
月亮位置:
月亮黄经 = 太阳黄经 + E
如果结果超过360°,就减去360°。
反推日期的现代写法
先根据太阳和月亮的位置,计算月亮领先太阳多少度。
然后:
月龄 = 日月角距离 ÷ 12°
最后计算:
出生日期 = 月龄 - 11 × Y - M ÷ 2
如果结果小于0,就不断加30,直到结果落在1至30之间。
原文例子:
月龄是24.5天。
年份偏移是25天。
月份偏移是1.5天。
所以:
24.5 - 25 - 1.5 = -2
结果小于0,加上一个30天周期:
-2 + 30 = 28
因此出生日期是28日。
每一步实际在处理什么
| 计算步骤 | 实际作用 |
|---|---|
| 当前王年加承接数 | 把不同皇帝的纪年接成连续时间 |
| 有效年数乘以11 | 计算每年累积的月相偏移 |
| 月数除以2 | 修正30日月份与29.53日朔望月的差 |
| 加出生日期 | 加入出生月已经过去的天数 |
| 减去完整的30天周期 | 得到出生时的月龄 |
| 每2.5天分配一个星座 | 把月龄换成日月之间的星座距离 |
| 从太阳位置向前计数 | 得到月亮所在星座 |