sagemath安装

0x01 参考攻略

给出部分参考到的攻略,如果下面写的不清楚或者帮助有限可以去看看。

0x02 安装sage

1. 源码准备

我使用的是 Linux Mint22,其实是可以直接找ubuntu的安装包的,不过源码构建也不难,所以我选择了后者。

首先在官网下载sage压缩包, 不开发的话选择stable版本准没错,选择有阿里云、中科大和南大的仓库。Anyway, 将源码下载到本地并解压到某个目录下,不妨命名为sage。

或者是通过git进行,如下:

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

2. 必需依赖项的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo apt update && sudo apt upgrade -y
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

3. 构建安装

  • 生成编译配置
1
2
3
4
export SAGE_ROOT=$(pwd)
cd sage
make -j$(nproc) configure
./configure --prefix=$SAGE_ROOT/local
  • 最大进程数并发编译
1
make -j$(nproc)
  • 查看版本确定是否安装成功
1
sage -v
  • 创建快捷方式
1
sudo ln -sf `pwd`/sage /usr/local/bin

info

Linux创建快捷方式一般用软链接到下面的目录中

  • /usr/bin 一般是通过包管理器安装的标准程序,不建议乱放
  • /usr/local/bin 存放系统管理员或用户手动编译、安装或脚本创建的本地程序,作用于所有用户
  • $HOME/.local/bin 存放用户个人的本地程序,作用于该用户

0x03 配合jupyter

这个我选择最简单的方式,直接在sage里面安装(不用和apt斗智斗勇)

1
sage -pip install jupyterlab notebook

然后直接执行下面的命令就好了

1
sage -n jupyter # 指定端口用 --port <port>

最后在jupyter notebook中设置内核是sage就好了。

运行下面的代码展示成果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 1. 定义符号变量 x
x = var('x')

# 2. 定义一个函数 f(x)
f(x) = sin(x) * exp(-x/2)

# 3. 计算导数
df_dx = diff(f(x), x)

# 4. 计算不定积分(使用 integrate())
# 注意: 积分结果可能比较复杂,但 SageMath 会给出精确的符号结果
F_x = integrate(f(x), x)

# 5. 打印结果
print("Original Function: f(x) = ", f(x))
print("First Derivative: f'(x) = ", df_dx)
print("Indefinite Integral: ∫f(x)dx = ", F_x)

# 6. 绘图 (plot)
# 同时绘制原函数 f(x) 和它的导数 f'(x)
plot_f = plot(f(x), (x, -2*pi, 4*pi), legend_label='f(x)', color='blue')
plot_df = plot(df_dx, (x, -2*pi, 4*pi), legend_label="f'(x)", color='red')

# 7. 合并并显示图形
show(plot_f + plot_df)
sage画图