Ripser.py学习 (8):莫比乌斯带与系数域 (Moebius Strip And The Field of Coefficients)

文章目录

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空间:

  1. 围绕大圈每转一圈,让环围绕小圈(“内管”部分)运行两次;
  2. 分别给定大圈和小圈的半径 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)

输出如下:

猜你喜欢

转载自blog.csdn.net/weixin_44575152/article/details/129701859