SageMath 初学者指南 | 安装及基本使用

唠唠闲话

在数学研究领域,计算和推导是不可或缺的环节。从上世纪 60 年代开始,数学家就开始使用计算机辅助发现数学模式和猜想。如今,专业的数学编程语言如 Mathematica,Maple,SageMath,GAP4 等应运而生,极大地拓展了人类的计算能力。这些工具不仅加快了数学计算的速度,也使得一些传统手算无法完成的任务成为可能。

数学编程语言众多,如果感兴趣,可以在共享文档 AI for Math Resources 中找到一个整理过的列表:

20241101135342

本文我们将重点关注 SageMath,介绍其安装方法和基本用法。

SageMath 是一个基于 Python 的免费开源数学软件系统,它建立在多个现有的开源软件包之上,比如 NumPy、SciPy、Matplotlib、Sympy、Maxima、GAP、FLINT、R 等。SageMath 提供了一系列统一的接口,旨在整合并扩展现有的数学编程工具,为用户提供一体化的解决方案。

一个简单的例子

举个例子,打印李代数 A3 的正根系:

1
2
3
4
5
6
7
8
9
A3 = RootSystem("A3")

# 获取正根系
positive_roots = A3.root_lattice().positive_roots()

# 打印正根系
print("正根系 of A3:")
for root in positive_roots:
print(root)

命令行的执行结果:

20241101161901

现阶段,模型在专业数学编程能力上,已经具备了相当程度的训练,能够有效调用这些数学对象。上面的示例是由模型 glm-4-plus 生成的,同样的任务,deepseek/gpt-4o 也能够轻松理解和生成。

也就是说,模型对于相关工具,语法,以及可调用的对象已经有了一定的认知。进一步的挑战在于模型如何利用这些工具去解决实际的数学问题。

当然,本篇作为介绍,将先从 SageMath 的安装和配置讲起。

安装教程

Windows 用户可以直接从 SageMath 官网 下载并安装。

本文将介绍如何在 Ubuntu 上通过源码安装 SageMath,以启用最新功能。内容参考官方文档 Install from Source Code

环境准备

测试环境 Ubuntu22:

1
2
3
4
5
6
❯ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy

先安装基础环境的依赖项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo apt-get install -y bc binutils bzip2 ca-certificates cliquer cmake curl \
ecl eclib-tools fflas-ffpack g++ gap gcc gengetopt gfan gfortran \
glpk-utils gmp-ecm lcalc libatomic-ops-dev libboost-dev \
libbraiding-dev libbrial-dev libbrial-groebner-dev libbz2-dev \
libcdd-dev libcdd-tools libcliquer-dev libcurl4-openssl-dev libec-dev \
libecm-dev libffi-dev libflint-dev libfplll-dev libfreetype-dev \
libgap-dev libgc-dev libgd-dev libgf2x-dev libgiac-dev libgivaro-dev \
libglpk-dev libgmp-dev libgsl-dev libhomfly-dev libiml-dev \
liblfunction-dev liblinbox-dev liblrcalc-dev liblzma-dev libm4ri-dev \
libm4rie-dev libmpc-dev libmpfi-dev libmpfr-dev libncurses5-dev \
libntl-dev libopenblas-dev libpari-dev libplanarity-dev libppl-dev \
libprimecount-dev libprimesieve-dev libpython3-dev libqhull-dev \
libreadline-dev librw-dev libsingular4-dev libsqlite3-dev libssl-dev \
libsuitesparse-dev libsymmetrica2-dev libz-dev libzmq3-dev m4 make \
maxima maxima-sage meson nauty ninja-build openssl palp pari-doc \
pari-elldata pari-galdata pari-galpol pari-gp2c pari-seadata patch \
patchelf perl pkg-config planarity ppl-dev python3 python3-setuptools \
python3-venv qhull-bin singular singular-doc sqlite3 sympow tachyon \
tar texinfo tox xcas xz-utils

接下来是用于 SageMath 开发的工具:

1
2
sudo apt-get install -y autoconf automake gh git gpgconf libtool \
openssh-client pkg-config

此外,安装 LaTeX 相关工具的依赖,以支持 SageMath 的 Tex 功能:

1
2
3
4
5
6
7
sudo apt-get install -y default-jdk dvipng ffmpeg fonts-freefont-otf \
imagemagick latexmk libavdevice-dev libjpeg-dev pandoc tex-gyre \
texlive-fonts-recommended texlive-lang-cyrillic texlive-lang-english \
texlive-lang-european texlive-lang-french texlive-lang-german \
texlive-lang-italian texlive-lang-japanese texlive-lang-polish \
texlive-lang-portuguese texlive-lang-spanish texlive-latex-extra \
texlive-luatex texlive-xetex xindy

还有一些可选依赖,如果未安装,SageMath 会在构建过程中自行尝试安装:

1
2
3
4
5
6
sudo apt-get install -y 4ti2 clang coinor-cbc coinor-libcbc-dev fricas \
graphviz libfile-slurp-perl libgraphviz-dev libigraph-dev libisl-dev \
libjson-perl libmongodb-perl libnauty-dev libperl-dev libpolymake-dev \
libsvg-perl libtbb-dev libterm-readkey-perl libterm-readline-gnu-perl \
libxml-libxslt-perl libxml-writer-perl libxml2-dev lrslib pari-gp2c \
pdf2svg polymake r-base-dev r-cran-lattice sbcl

源码安装

环境准备完毕后,我们开始安装 SageMath。

注意:如果使用 conda,请确保退出 conda 环境后再执行以下命令。

将 SageMath 的源码库克隆到目标安装目录:

1
git clone https://github.com/sagemath/sage.git

生成编译配置,默认将构建到 SAGE_ROOT/local 目录:

1
2
3
4
# export SAGE_ROOT=$(pwd) # 默认为当前目录
cd sage
make -j$(nproc) configure
./configure # --prefix=$SAGE_ROOT/local

执行后可能会提示缺少某些可选依赖,可以忽略。

配置完成后,开始编译和构建,这需要较长的时间。建议使用 tmux 或其他方法在后台运行:

1
make -j$(nproc)

安装完成后,创建快捷方式:

1
ln -sf `pwd`/sage $HOME/.local/bin

如果希望为所有用户提供可用性,可以全局安装,并将软链接放在 /usr/local/bin 下。

最后,通过运行 sage -v 来测试安装是否成功。使用 sage 命令进入 SageMath 的交互环境。

配置 Jupyter

内容参考官方文档:Launching SageMath with Jupyter

查看 SageMath 内核描述的位置:

1
sage -sh -c 'ls -d $SAGE_VENV/share/jupyter/kernels/sagemath'

激活 Jupyter 所在的 Python 环境,例如 Conda,查看系统内的所有内核:

1
jupyter kernelspec list

将 SageMath 添加为 Jupyter 内核:

1
jupyter kernelspec install --user $(sage -sh -c 'ls -d $SAGE_VENV/share/jupyter/kernels/sagemath') --name sagemath-dev

小结

以上,我们简单介绍了数学编程语言 SageMath,以及其安装和初步使用方法。