QIAN
数据
6
月
18
日
2026年
先验直觉: 一个公式固定了,不管怎么改参数,出来的图案应该差不多——顶多放大缩小、转个角度。但事实是——公式里只改一个数字(年/月/日),出来的图案就天差地别,而且一万天里的每一幅图案都是唯一的。
2021年5月23日,QIAN数据发了第一版《日期与复平面》的短文。那时文章简单:给个公式、画个图、欣赏。
当时那条路径长这样:

左图是2021年的版本——单色线条,能看到一点螺旋的轮廓,但信息量有限。右图是2026年的升级版——同样的公式、同样的日期,但用渐变色标出了路径前进的方向,结构一目了然。
四年过去,我们对"如何把一个公式背后的数学讲清楚"的理解完全不一样了。这篇文章重新做一遍这个选题:从复数几何讲起,到代码实现,到生成你自己的生日图案。
你不需要懂复数才能理解这篇文章。你只需要知道一件事:
复数平面上的 e^{iθ} 就是 "旋转"。

左图:在复平面上,e^{iθ} 表示从原点出发、与水平方向夹θ角、长度为1的一个点。当θ从0变到2π,这个点就在单位圆上走一圈——一个完整的旋转。
中图:我们的公式会不断旋转,每次旋转的角度在变。把每次旋转后的位置累积加起来,就形成了路径。前500步,路径还只是几道弧线,看不出什么。
右图:几千步之后,一条复杂的路径就浮现了。简单的旋转叠加产生了复杂的图案——这就是"复平面的魔法":一个简单的递推公式,经过几千次迭代,可以产生无限丰富的图形。
公式本身其实很简单:
其中 m=月份、d=日、y=年份(后两位),N = 2 × lcm(m, d, y) + 1。
cos 和 sin 就是这个"旋转"的x坐标和y坐标。每次加上一小段,累积起来就是一条路径。
核心原因藏在那个最小公倍数 lcm(m, d, y) 里。
N = 2 × lcm(m, d, y) + 1
lcm决定了公式要算多少步。不同的日期组合:
步数不同,路径长度不同。 再加上公式里的 m, d, y 直接决定了每一步旋转的角度,所以换了数字就是换了整条路径。
来看同一公式、9个不同日期的图案:

最明显的观察:
- 2026/1/1(元旦) :步数极少,只转了几圈就闭合了
- 2026/6/17 :中等步数,螺旋+尖角混合
- 2026/10/1(国庆) :步数多,图案繁复
这就是"一个公式,万幅画"的数学原因——不是公式变了,是参数变了,而参数微小变化导致路径几何级的差异。
4. Python代码:生成你自己的生日图案
import numpy as npfrom math import gcdimport matplotlib.pyplot as pltdeflcm(a, b):return a * b // gcd(a, b)defdate_complex_path(m, d, y):"""给定月/日/年,返回复数路径坐标""" N = 2 * lcm(lcm(m, d), y) + 1 x, y = np.zeros(N + 1), np.zeros(N + 1)for i inrange(1, N + 1): theta = 2 * np.pi * i * (1/m + i/d + i*i/y) x[i] = x[i-1] + np.cos(theta) y[i] = y[i-1] + np.sin(theta)return x, y, Ndefplot_date(m, d, y, title=''): x, y, N = date_complex_path(m, d, y) plt.figure(figsize=(8, 8))# 渐变色显示路径方向 colors = plt.cm.plasma(np.linspace(0, 1, N))for i inrange(N - 1): plt.plot(x[i:i+2], y[i:i+2], color=colors[i], lw=0.8) plt.scatter(x[0], y[0], c='green', s=30, label='起点', zorder=5) plt.scatter(x[N-1], y[N-1], c='red', s=30, label='终点', zorder=5) plt.axis('equal') plt.axis('off') plt.title(title, fontsize=12, fontweight='bold') plt.legend(fontsize=9) plt.show()# 输入你的生日month, day, year = 6, 17, 26plot_date(month, day, year, f'20{year}/{month}/{day} 的复数轨迹')预期输出:运行时替换 month, day, year 为你的生日,就能看到专属的图案。如果你喜欢,把图片保存下来,那就是属于你生日的数学指纹——没有第二个日期会生成相同的图案。

从π日(3/14)的螺旋到圣诞节(12/25)的复杂网络,每个日期都像一个独特的签名。注意程序员日(10/24)的图案出奇的对称漂亮——1024是2的10次方,lcm结果产生了一个特别规整的路径。
你也可以试着输入自己的生日,看看你的专属图案长什么样。代码在前面,跑一下就行。
如果把中国的二十四节气也映射到复平面上,会是什么样子?

这是一幅6×4的画卷——从小寒(1月5日)到冬至(12月21日),二十四节气按时间顺序排列。几个有趣的观察:
春夏秋冬,各有"色"相:
- 春季(立春→谷雨):路径以舒展的弧线为主,像破土而出的嫩芽
- 夏季(立夏→大暑):路径变得密集、盘旋上升——夏至(6月21日)的图案最为繁复,因为6、21、26的最小公倍数大,步数多
- 秋季(立秋→霜降):路径开始收敛,出现对称结构——秋分(9月23日)的图案格外规整,昼夜平分的数学对称性似乎在复平面上也有体现
- 冬季(立冬→冬至):路径变得紧凑、向内收拢
二十四节气还有一层数学巧合:每个节气之间的间隔大约是15天。在复平面上,15天的时间差恰好让相邻两个节气的N值变化不大(lcm变化一般在几十到几百的范围内),所以相邻节气之间的图案有视觉上的连续性——小寒→大寒→立春,图案是一步步演变的,不是跳变的。
这构成了一个独特的"数学历法图谱":二十四节气不仅是农耕的时间坐标,也是一组数学上连贯的可视化签名。
这篇文章的核心工具——复数和欧拉公式——背后有一段300年的数学史。
1545年,意大利数学家卡尔达诺(Cardano)在解一元三次方程时,第一次遇到了"负数的平方根"。他把这叫做"诡辩的量"(sophistic quantity),认为它只是计算过程中的一个中间产物,没有实际意义。
1748年,欧拉(Euler)在《无穷小分析引论》中写下了那个被称为"最美丽的数学公式":
这个公式把数学中五个最基本的常数——0、1、e、i、π——用一次加法、一次乘法、一次指数运算联系在了一起。没有任何多余的项,没有任何近似。数学家们争论了几百年"e的虚数次幂是什么意思",欧拉一个公式就给出了答案——e^{iθ} 就是复数平面上的旋转。
1831年,高斯(Gauss)正式提出了"复数平面"的概念:把虚数 i 当作y轴、实数当作x轴,每一个复数 z = a + bi 对应平面上的一个点。这个简单的几何直观,让复数从"诡辩的量"变成了"人类理解世界的基本工具"。
到20世纪初,复数已经渗透到每一个工程领域。今天我们用的WiFi(正交频分复用OFDM)、手机信号、图像压缩(JPEG),底层都是复数运算。你每天用的每一个电子设备里,都有e^{iθ}在运行。
1. 复数的本质是旋转:e^{iθ} 表示复数平面上从原点出发、旋转θ角度的单位向量——这是理解一切复数应用的基础
2. 一个公式能生成无限种图案:改变参数(m、d、y),同样的公式产生完全不同的路径
3. lcm决定路径长度:最小公倍数越大,路径越复杂、图案越繁复
4. 你的生日是一幅画:Python代码跑一下,就能生成专属于你生日的复数图案——独一无二,不可重复
5. 复数不是抽象数学:WiFi、手机信号、图像压缩——复数就在你的口袋里
QIAN数据:一类日期数和复平面的关系QIAN数据公众号, 2021-05-23. — 本文的前身,初代版本
Euler, L. "Introductio in analysin infinitorum." 1748. — 欧拉公式的起源
Needham, T. "Visual Complex Analysis." Oxford University Press, 1997. — 最好的复数几何直觉教材
John D. Cook. "Explanation of exponential sums." https://www.johndcook.com/expsum/details.html — 本文公式的来源
© QianStat_data