1980年,IBM 数学家本华·曼德勃罗(Benoit Mandelbrot)在计算机屏幕上看到了一个奇怪的图形——无论放大多少倍,边缘总是呈现出相似的复杂结构。
这个图形后来被称为曼德勃罗集(Mandelbrot Set),它是分形几何中最著名的对象,也被人称为"上帝的指纹"。
而生成这个"宇宙"的核心代码,只需数十行 Python。
今天,我们就用代码来探索这个数学奇观。

曼德勃罗集的定义非常简单。对于复平面上的每个点 c,我们反复迭代以下公式:
z₀ = 0zₙ₊₁ = zₙ² + c
判断规则:
|z| 始终不超过 2,则 c 属于曼德勃罗集(涂黑色)|z| 超过 2,则 c 不属于集合(根据迭代次数上色)就是这个简单的规则,生成了人类见过最复杂的图形之一。
import numpy as npimport matplotlib.pyplot as plt# 设置中文字体plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']plt.rcParams['axes.unicode_minus'] = False# ================= 配置区域 =================WIDTH, HEIGHT = 800, 800 # 图像分辨率X_MIN, X_MAX = -2.5, 1.0 # 复平面X轴范围Y_MIN, Y_MAX = -1.25, 1.25 # 复平面Y轴范围MAX_ITER = 100 # 最大迭代次数(越多越精确)# ===========================================def mandelbrot(c, max_iter):"""计算单个复数点c的迭代次数核心公式:z = z² + c"""z = 0for n in range(max_iter):if abs(z) > 2: # 发散判断return nz = z * z + creturn max_iterdef generate_mandelbrot():"""生成曼德勃罗集图像"""print("🌌 正在计算曼德勃罗集...")# 创建复平面网格x = np.linspace(X_MIN, X_MAX, WIDTH)y = np.linspace(Y_MIN, Y_MAX, HEIGHT)X, Y = np.meshgrid(x, y)C = X + 1j * Y # 复数平面# 存储每个点的迭代次数M = np.zeros(C.shape, dtype=int)# 逐点计算(简单直观,可优化为向量化)for i in range(HEIGHT):for j in range(WIDTH):M[i, j] = mandelbrot(C[i, j], MAX_ITER)# 进度显示if (i + 1) % 100 == 0:print(f" 进度: {i + 1}/{HEIGHT} ({(i + 1) / HEIGHT * 100:.1f}%)")return M# ================= 主程序 =================M = generate_mandelbrot()# 创建图像print("🎨 正在渲染图像...")plt.figure(figsize=(10, 10))plt.imshow(M, cmap='magma', extent=[X_MIN, X_MAX, Y_MIN, Y_MAX])plt.colorbar(label='迭代次数')plt.title('Mandelbrot Set - 曼德勃罗集', fontsize=16, color='white')plt.xlabel('Re(c)', color='white')plt.ylabel('Im(c)', color='white')plt.gca().set_facecolor('black')plt.gcf().patch.set_facecolor('black')# 保存图像plt.savefig('mandelbrot.png', dpi=300, facecolor='black', bbox_inches='tight')print("✅ 图像已保存为 mandelbrot.png")
曼德勃罗集最迷人的特性是无限自相似——放大任何边缘,都会看到与整体相似的结构。
# 尝试放大这个区域X_MIN, X_MAX = -0.75, -0.74Y_MIN, Y_MAX = 0.09, 0.10MAX_ITER = 200 # 放大后需要更多迭代
每次放大,都会发现新的螺旋、新的分支、新的细节。理论上,这个过程可以无限继续。
黑色区域内部是"稳定"的(迭代不发散),彩色区域是"混沌"的(迭代发散)。而两者之间的边界,就是分形所在的地方。
这像不像某种隐喻? 秩序与混乱从来不是非黑即白,它们之间有着无限复杂的过渡地带。
费曼曾说过:
"数学不是关于数字,而是关于理解。"
曼德勃罗集告诉我们:简单的规则可以产生无限的复杂。这不仅是数学,也是物理、生物、乃至整个宇宙的运行方式。
DNA 只有 4 种碱基,却能编码所有生命; 物理定律只有几条,却能描述整个宇宙; 而这个公式只有 5 个符号,却能画出无限的图案。
也许,这就是数学之美的本质——在简洁中看见无限。