本节展示系数域如何影响H1H_1H1同伦。这个例子,与总是使用Z/2\mathbb{Z}/2Z/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
现在创建一个封闭环,可以理解为2D环嵌入到3D空间:
x(t)=(R+rcos(2t))cos(t)y(t)=(R+rcos(2t))sin(t)z(t=rsin(2t))\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)
接着绘制持续图和数据图:
尽管该环很弯曲,H1H_1H1上只有一个类,且Z/2\mathbb{Z}/2Z/2和Z/3\mathbb{Z}/3Z/3的持续同伦图是一样,即只有一个类在0处初始。
对此,数据的生成公式修改为:
x(t)=(R+rcos(t))cos(2t)y(t)=(R+rcos(t))sin(2t)z(t=rsin(2t))\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)
输出如下: