1 概述
本节展示系数域如何影响 H 1 H_1 H1同伦。这个例子,与总是使用 Z / 2 \mathbb{Z}/2 Z/2(二进制)系数的常见约定相反,可能有充分的理由使用其他字段,尤其是在有扭曲的情况下。
以下是一些必须库:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from ripser import ripser
from persim import plot_diagrams
2 测试数据
现在创建一个封闭环,可以理解为2D环嵌入到3D空间:
- 围绕大圈每转一圈,让环围绕小圈(“内管”部分)运行两次;
- 分别给定大圈和小圈的半径 R R R和 r r r,采样如下参数的曲线:
x ( t ) = ( R + r cos ( 2 t ) ) cos ( t ) y ( t ) = ( R + r cos ( 2 t ) ) sin ( t ) z ( t = r sin ( 2 t ) ) \begin{aligned} &x(t)=(R+r\cos(2t))\cos(t)\\ &y(t)=(R+r\cos(2t))\sin(t)\\ &z(t=r\sin(2t)) \end{aligned} x(t)=(R+rcos(2t))cos(t)y(t)=(R+rcos(2t))sin(t)z(t=rsin(2t))代码如下:
# 步骤1:曲线设置
N = 100 # 采样点的数量
R = 4 # 大环半径
r = 1 # 小环半径
X = np.zeros((N, 3))
t = np.linspace(0, 2*np.pi, N)
X[:, 0] = (R + r*np.cos(2*t))*np.cos(t)
X[:, 1] = (R + r*np.cos(2*t))*np.sin(t)
X[:, 2] = r*np.sin(2*t)
接着绘制持续图和数据图:
尽管该环很弯曲,
H
1
H_1
H1上只有一个类,且
Z
/
2
\mathbb{Z}/2
Z/2和
Z
/
3
\mathbb{Z}/3
Z/3的持续同伦图是一样,即只有一个类在0处初始。
对此,数据的生成公式修改为:
x
(
t
)
=
(
R
+
r
cos
(
t
)
)
cos
(
2
t
)
y
(
t
)
=
(
R
+
r
cos
(
t
)
)
sin
(
2
t
)
z
(
t
=
r
sin
(
2
t
)
)
\begin{aligned} &x(t)=(R+r\cos(t))\cos(2t)\\ &y(t)=(R+r\cos(t))\sin(2t)\\ &z(t=r\sin(2t)) \end{aligned}
x(t)=(R+rcos(t))cos(2t)y(t)=(R+rcos(t))sin(2t)z(t=rsin(2t))代码如下:
X[:, 0] = (R + r*np.cos(t))*np.cos(2*t)
X[:, 1] = (R + r*np.cos(t))*np.sin(2*t)
X[:, 2] = r*np.sin(t)
输出如下: