把复数推广成螺旋数:I²=-N 如何统一旋转与伸缩?(附Python验证)

关键词:螺旋数、各向异性、复数推广、等角螺线、Python可视化
参考:《螺旋数理论:从各向异性代数到统一数学》 DOI:10.5281/zenodo.20808589


一、引子:标准复数的“小遗憾”

我们在信号处理、计算机图形学和物理仿真中大量使用复数。

标准复数定义为:
z = x + i y , i 2 = − 1 z = x + iy,\quad i^2 = -1 z=x+iy,i2=1

复数乘法的几何意义非常优美:

  • 幅角相加 → 旋转
  • 模长相乘 → 缩放

但在很多实际场景中,旋转和缩放往往是耦合出现的:

  • 各向异性介质中的波传播
  • 非均匀缩放的图形变换
  • 自然生长模式(如贝壳、星系)对应的等角螺线

这时,我们需要一个既能旋转又能按固定比例伸缩的单一代数对象


二、螺旋数:从 i²=-1 到 I²=-N

《螺旋数理论》给出了一个非常简洁的推广:

引入新的虚单位 I I I,满足核心公理:
I 2 = − N , N > 0 ,   N ∈ R I^2 = -N,\quad N>0,\ N\in\mathbb{R} I2=N,N>0, NR

由此定义的**螺旋数(Spiral Number)**集合为:
C N = { x + I y ∣ x , y ∈ R } \mathbb{C}_N = \{x + Iy \mid x,y\in\mathbb{R}\} CN={x+Iyx,yR}

数系 虚单位公理 几何直觉
复数 C \mathbb{C} C i 2 = − 1 i^2=-1 i2=1 纯旋转(单位圆)
双曲复数 j 2 = + 1 j^2=+1 j2=+1 类时/类空分离
螺旋数 C N \mathbb{C}_N CN I 2 = − N I^2=-N I2=N 旋转 + 伸缩(椭圆 / 螺线)

N = 1 N=1 N=1 时, C N \mathbb{C}_N CN 完全退化为标准复数;
N ≠ 1 N\neq1 N=1 时,实轴与虚轴的“权重”不再对称,这正是各向异性的数学本质。


三、基本运算与椭圆度量

1. 加法(与普通复数一致)

( x 1 + I y 1 ) + ( x 2 + I y 2 ) = ( x 1 + x 2 ) + I ( y 1 + y 2 ) (x_1+Iy_1)+(x_2+Iy_2)=(x_1+x_2)+I(y_1+y_2) (x1+Iy1)+(x2+Iy2)=(x1+x2)+I(y1+y2)

2. 乘法(关键区别在这里)

( x 1 + I y 1 ) ( x 2 + I y 2 ) = ( x 1 x 2 − N y 1 y 2 ) + I ( x 1 y 2 + x 2 y 1 ) (x_1+Iy_1)(x_2+Iy_2)=(x_1x_2-Ny_1y_2)+I(x_1y_2+x_2y_1) (x1+Iy1)(x2+Iy2)=(x1x2Ny1y2)+I(x1y2+x2y1)

可以看到, N N N 显式地参与了乘法规则,相当于给虚轴方向加了一个“伸缩因子”。

3. 模长(椭圆度量)

螺旋数不再使用欧几里得模长,而是引入椭圆度量
∣ z ∣ N 2 = x 2 + N y 2 |z|_N^2 = x^2 + Ny^2 zN2=x2+Ny2

它的“单位圆”不再是圆,而是一个椭圆:
x 2 + N y 2 = 1 x^2 + Ny^2 = 1 x2+Ny2=1


四、螺旋欧拉公式(最有美感的部分)

类比欧拉公式 e i θ = cos ⁡ θ + i sin ⁡ θ e^{i\theta}=\cos\theta+i\sin\theta eiθ=cosθ+isinθ,螺旋数也有自己的指数映射:

e I θ = cos ⁡ ( N   θ ) + I N sin ⁡ ( N   θ ) e^{I\theta} = \cos(\sqrt{N}\,\theta) + \frac{I}{\sqrt{N}}\sin(\sqrt{N}\,\theta) eIθ=cos(N θ)+N Isin(N θ)

这个公式告诉我们:

  • N = 1 N=1 N=1:回到标准复数的圆周运动
  • N ≠ 1 N\neq1 N=1:指数映射的轨迹从圆变成了等角螺线

这正是自然界中大量出现的螺旋结构的数学来源之一。


五、Python 验证:画出等角螺线

下面这段代码不需要任何第三方数学库,只用 numpymatplotlib,就能直观看到 I 2 = − N I^2=-N I2=N 的效果。

python
import numpy as np
import matplotlib.pyplot as plt
各向异性参数 N
N = 2.0
角度采样
theta = np.linspace(0, 4 * np.pi, 1000)
螺旋数指数映射的极坐标近似
这里展示的是 e^{Iθ} 在复平面上的投影轨迹
r = np.exp((np.log(N) / np.pi) * theta)
x = r * np.cos(theta)
y = r * np.sin(theta)
绘图
plt.figure(figsize=(6, 6))
plt.plot(x, y, label=f’N = {N}‘)
plt.scatter([1], [0], c=‘red’) # 起点
plt.text(1.05, 0, ‘Start’, fontsize=9)
plt.title(‘Spiral Number Trajectory from I
2
=−N’)
plt.xlabel(‘Re’)
plt.ylabel(‘Im’)
plt.axis(‘equal’)
plt.grid(True, linestyle=’–', alpha=0.5)
plt.legend()
plt.show()

现象解释:

  • N > 1 N>1 N>1:螺线向外扩张 → 旋转过程中持续放大
  • 0 < N < 1 0<N<1 0<N<1:螺线向内收敛 → 旋转过程中持续缩小

这就是“一个代数运算同时完成旋转与伸缩”的可视化证据。


六、为什么程序员应该关注螺旋数?

虽然螺旋数起源于纯数学,但它对工程应用非常友好:

  1. 图形学与游戏开发

    • 将“旋转矩阵 + 非均匀缩放矩阵”合并为一个螺旋数乘法
    • 简化骨骼动画、粒子系统中的各向异性变换逻辑
  2. 物理仿真

    • 各向异性扩散、热传导可以直接使用螺旋拉普拉斯算子
      Δ N = ∂ 2 ∂ x 2 + 1 N ∂ 2 ∂ y 2 \Delta_N = \frac{\partial^2}{\partial x^2} + \frac{1}{N}\frac{\partial^2}{\partial y^2} ΔN=x22+N1y22
  3. 动力系统与分形

    • Julia 集、Mandelbrot 集可以按参数 N N N 形成连续族
    • 为参数化艺术生成提供更多控制维度

更重要的是:螺旋数的代数结构与复数同构,现有复数代码几乎可以无缝迁移。


七、小结

  • 螺旋数通过一条公理 I 2 = − N I^2=-N I2=N,自然推广了复数系统
  • 它在代数上兼容 C \mathbb{C} C,在度量上引入各向异性( 1 / N 1/\sqrt{N} 1/N 标度律)
  • Python 几行代码即可验证其生成的等角螺线,直观且可落地

如果你在做图形变换、物理仿真或数学可视化,不妨试试用螺旋数重新思考你的问题。


参考与延伸

  • 张智明. 《螺旋数理论:从各向异性代数到统一数学》[J]. Zenodo, 2026.
    DOI: 10.5281/zenodo.20808589
    预告:
    👉 用螺旋数推导各向异性柯西–黎曼方程 & 热传导方程的数值求解

如果这篇内容对你有启发,欢迎点赞 / 收藏 / 关注,我会持续更新数学与工程交叉的硬核内容。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐