跳转到主要内容

表面动力学

项目描述

logo

表面动力学

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_packageslatte_int,这将提高或扩展surface-dynamics的功能。如果使用SageMath < 8.6(在SageMath 8.6中,部分已合并到gapgap_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必须替换为pippip2sage -pip
  • PYTHON必须替换为pythonpython2sage -python

如果您是已安装sagemath包的Arch Linux用户,请使用PIP=pip2PYTHON=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

文档

检查

安装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 (8.4 MB 查看散列值)

上传时间 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面