表面动力学
项目描述
表面动力学
SageMath的surface-dynamics包增加了与区间交换变换、平移曲面、映射类等相关功能。它基于SageMath <https://www.sagemath.org>
,并且大量依赖于
- gmp或mpir进行任意精度算术
- PARI/GP进行数域计算
- GAP进行有限群表示和置换群
- PPL(Parma Polyhedra Library)和LattE(Lattice point Enumeration)进行多面体计算
先决条件
安装surface-dynamics
需要一个可用的Sage安装(包含Cython和gcc)。推荐安装可选的SageMath包gap_packages
和latte_int
,这将提高或扩展surface-dynamics
的功能。如果使用SageMath < 8.6(在SageMath 8.6中,部分已合并到gap
和gap_packages
包中),也推荐安装可选包database_gap
。
安装
该模块在PyPI上分发,可以通过Python包管理器pip
轻松安装。如果您从SageMath网站下载了二进制文件(包括在Windows上运行的Cygwin版本)或从源代码编译,请运行以下命令:
$ sage -pip install surface-dynamics [--user]
--user
选项是可选的,允许在您的用户空间中安装模块(且不需要管理员权限)。
如果您使用Debian或Ubuntu,并且通过操作系统的包管理器安装了Sage(即,sagemath
包),请运行以下两个命令:
$ source /usr/share/sagemath/bin/sage-env
$ pip install surface-dynamics --user
如果您使用Arch Linux,需要从源代码安装(见下一节)。
安装和使用源代码版本
本节提供了如何下载、修改和安装surface-dynamics
开发版本的详细说明。在所有命令中,
PIP
必须替换为pip
、pip2
或sage -pip
PYTHON
必须替换为python
、python2
或sage -python
如果您是已安装sagemath
包的Arch Linux用户,请使用PIP=pip2
和PYTHON=python2
。如果您以tarball形式下载了SageMath或从源代码安装,请使用PIP='sage -pip'
和PYTHON='sage -python'
。
您可以通过一行命令安装最新开发版本:
$ PIP install git+https://github.com/flatsurf/surface-dynamics [--user]
与之前一样,--user
选项是可选的,当指定时,将模块安装到您的用户空间。
您还可以执行两阶段安装,这将允许您修改源代码。第一步是克隆存储库:
$ git clone https://github.com/flatsurf/surface-dynamics
上面的命令创建了一个包含源代码、文档和杂项文件的surface-dynamics
存储库。然后,您可以切换到创建的目录并使用以下命令安装表面动力学模块:
$ cd surface-dynamics
$ PIP install . [--user]
不要忘记.
,它指的是当前目录。
当您不想安装包或正在测试对源代码的某些修改时,更方便使用表面动力学的方法是在本地执行所有操作。为此,您需要通过以下方式编译模块:
$ PYTHON setup.py build_ext --inplace
完成后,您可以导入surface_dynamics
模块。为了检查您实际上使用的是正确的模块(即本地模块),您可以在SageMath会话中这样做:
sage: import surface_dynamics
sage: surface_dynamics.__path__ # random
['/home/you/surface-dynamics/surface_dynamics/']
命令的结果必须与上述git clone
命令创建的存储库路径相匹配。每次您修改C或Cython源文件(即具有.c
、.h
、.pxd
或.pyx
扩展名)时,都必须重新执行编译步骤PYTHON setup.py build_ext
。换句话说,如果您只修改或创建了Python文件(即.py
文件),则不需要。
如果您希望安装自定义版本的surface-dynamics
,请像之前指示的那样使用PIP
。
文档
- 简短教程:https://www.labri.fr/perso/vdelecro/flatsurf.html
- 完整的模块文档:https://flatsurf.github.io/surface-dynamics/
检查
安装surface-dynamics
后,通过启动Sage并输入以下命令来检查它是否正常工作。您应该得到以下相同的输出:
sage: from surface_dynamics.all import *
sage: o = Origami('(1,2)', '(1,3)')
sage: o
(1,2)(3)
(1,3)(2)
sage: o.sum_of_lyapunov_exponents()
4/3
sage: o.lyapunov_exponents_approx() # abs tol 0.05
[0.33441823619678734]
sage: o.veech_group()
Arithmetic subgroup with permutations of right cosets
S2=(2,3)
S3=(1,2,3)
L=(1,2)
R=(1,3)
sage: q = QuadraticStratum(1, 1, 1, 1)
sage: q.orientation_cover()
H_5(2^4)
sage: q.components()
[Q_2(1^4)^hyp]
sage: c = q.components()[0]
sage: c
Q_2(1^4)^hyp
sage: c.orientation_cover_component()
H_5(2^4)^odd
sage: AbelianStrata(genus=3).list()
[H_3(4), H_3(3, 1), H_3(2^2), H_3(2, 1^2), H_3(1^4)]
sage: O = OrigamiDatabase()
sage: q = O.query(("stratum", "=", AbelianStratum(2)), ("nb_squares", "=", 5))
sage: q.number_of()
2
sage: for o in q:
....: print("%s\n- - - - - - - -" % o)
(1)(2)(3)(4,5)
(1,2,3,4)(5)
- - - - - - - -
(1)(2)(3,4,5)
(1,2,3)(4)(5)
- - - - - - - -
sage: Q12_reg = QuadraticStratum(12).regular_component()
sage: Q12_reg.lyapunov_exponents_H_plus(nb_iterations=2**20) # abs tol 0.05
[0.6634, 0.4496, 0.2305, 0.0871]
sage: Q12_reg.lyapunov_exponents_H_minus(nb_iterations=2**20) # abs tol 0.05
[1.0000, 0.3087, 0.1192]
安装开发版本 - 源代码
开发网页是
假设您的电脑上已安装了 git
程序,您可以使用以下命令安装开发版本:
$ sage -pip install git+https://github.com/flatsurf/surface-dynamics [--user]
联系方式
欢迎您的评论和帮助: vincent.delecroix@labri.fr
关于 macOS 的问题: samuel.lelievre@gmail.com
作者
- Vincent Delecroix:维护者
- Samuel Lelièvre:二次层叠的原折纸和置换代表
- Charles Fougeron:层叠覆盖的 Lyapunov 指数
- Luke Jeffreys:阿贝尔微分层的单圆柱代表
- Ivan Yakovlev:阿贝尔微分层最小层连通部分的 Masur-Veech 体积
如何引用此项目
如果您使用了此项目,请按照我们在 zenodo 网站上 描述的方式进行引用。
版本
surface-dynamics
作为 sagemath spkg 的第一个版本发布于 2015 年 7 月 30 日。现在版本在 zenodo 上进行跟踪。
项目详情
surface_dynamics-0.6.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | cc2a9ca4ddddf67d220648380510a180334bc96163c72b6bd7a8bb86e1c40785 |
|
MD5 | 3945da709359eff5f13a61dec4378f22 |
|
BLAKE2b-256 | bc3de3ec5005542046e7b7427b0fcdc7c29ed0ac149440ed3f00965b0cddc221 |