接口问题

后台作业

可以,Sage作业可以在UNIX系统的后台运行。要做的规范事情是键入

$ nohup sage < command_file  > output_file &

Nohup的优势在于,在您注销后,Sage将继续运行。

目前,Sage将在(Unix)的输出中显示为“sage-IPython”或“python”。 top 命令,但在未来的Sage版本中,它将显示为 sage

引用Sage

看见 citing Sage

记录您的Sage会话

是的,您可以记录您的会话。

(A)您可以通过在后台运行Sage将输出写入文件( 后台作业 )。

(B)从KDE konsole机开始(这只适用于Linux)。去 Settings \(\rightarrow\) History ... 然后选择无限制。开始您的会话。准备好后,请转到 edit \(\rightarrow\) save history as ...

某些接口(如Single接口或Gap接口)允许您创建日志文件。对于单数,有一个日志文件选项(在 singular.py )。在GAP中,使用命令 LogTo

胶乳转化

是的,您可以将部分结果输出到LaTeX中。

sage: M = MatrixSpace(RealField(),3,3)
sage: A = M([1,2,3, 4,5,6, 7,8,9])
sage: print(latex(A))
\left(\begin{array}{rrr}
    1.00000000000000 & 2.00000000000000 & 3.00000000000000 \\
    4.00000000000000 & 5.00000000000000 & 6.00000000000000 \\
    7.00000000000000 & 8.00000000000000 & 9.00000000000000
    \end{array}\right)
sage: view(A)

此时,应自动调用DVI预览,以在单独的窗口中显示所生成的LaTeX输出。

还提供了多元多项式和有理函数的LaTeX预览:

sage: x = PolynomialRing(QQ,3, 'x').gens()
sage: f = x[0] + x[1] - 2*x[1]*x[2]
sage: h = f /(x[1] + x[2])
sage: print(latex(h))
\frac{-2 x_{1} x_{2} + x_{0} + x_{1}}{x_{1} + x_{2}}

Sage和其他计算机代数系统

如果 foo 是Pari、Gap(不带分号结尾)、单数、Maxima命令,分别为Enter gp("foo") 对于帕里来说, gap.eval("foo")} singular.eval("foo")maxima("foo") ,分别为.这些程序只是将命令字符串发送到外部程序,执行它,然后将结果读回Sage。因此,如果外部程序未安装并且位于您的路径中,则这些操作将不起作用。

命令行Sage帮助

如果您只知道Sage命令名称的一部分,并且想知道它在Sage中出现的位置,只需输入 sage -grep <string> 查找所有匹配项 <string> 在Sage源代码中。例如,

$ sage -grep berlekamp_massey
matrix/all.py:from berlekamp_massey import berlekamp_massey
matrix/berlekamp_massey.py:def berlekamp_massey(a):
matrix/matrix.py:import berlekamp_massey
matrix/matrix.py:            g =
berlekamp_massey.berlekamp_massey(cols[i].list())

类型 help(foo)foo?? 寻求帮助和帮助 foo.[tab] 用于搜索Sage命令。类型 help() 用于Python命令。

例如

help(Matrix)

退货

Help on function Matrix in module sage.matrix.constructor:

Matrix(R, nrows, ncols, entries = 0, sparse = False)
    Create a matrix.

    INPUT:
        R -- ring
        nrows -- int; number of rows
        ncols -- int; number of columns
        entries -- list; entries of the matrix
        sparse -- bool (default: False); whether or not to store matrices as sparse
    OUTPUT:
        a matrix

    EXAMPLES:
        sage: Matrix(RationalField(), 2, 2, [1,2,3,4])
        [1 2]
        [3 4]

        sage: Matrix(FiniteField(5), 2, 3, range(6))
        [0 1 2]
        [3 4 0]

        sage: Matrix(IntegerRing(), 10, 10, range(100)).parent()
        Full MatrixSpace of 10 by 10 dense matrices over Integer Ring

        sage: Matrix(IntegerRing(), 10, 10, range(100), sparse = True).parent()
        Full MatrixSpace of 10 by 10 sparse matrices over Integer Ring

在一个新的屏幕上。键入q以返回至Sage屏幕。

读取文件并将其导入Sage

导入到Sage的文件必须以 .py ,例如, foo.py 并包含合法的Python语法。有关简单的示例,请参见 置换群 以上面的魔方组为例。

读入文件的另一种方法是使用 loadattach 指挥部。创建名为的文件 example.sage (位于Sage的主目录中),包含以下内容:

print("Hello World")
print(2^3)

读入并执行 example.sage 文件中使用 load 指挥部。

sage: load("example.sage")
Hello World
8

你也可以 attach 正在运行的会话的Sage文件:

sage: attach("example.sage")
Hello World
8

现在如果你改变了 example.sage 并在Sage中输入一个空行,然后将 example.sage 将自动重新加载到Sage:

sage: !emacs example.sage&     #change 2^3 to 2^4
sage:                          #hit return
***************************************************
                Reloading 'example.sage'
***************************************************
Hello World
16

用于Sage命令的Python语言程序代码

假设您想知道Sage命令用来计算置换群中心的Python程序是什么。使用Sage的帮助界面查找文件名:

sage: PermutationGroup.center?
Type:           instancemethod
Base Class:     <class 'instancemethod'>
String Form:    <unbound method PermutationGroup.center>
Namespace:      Interactive
File:           /home/wdj/sage/local/lib/python2.4/site-packages/sage/groups/permgroup.py
Definition:     PermutationGroup.center(self)

现在您知道该命令位于 permgroup.py 文件,并且您知道要查找该Python模块的目录。您可以使用编辑器来读取代码本身。

“Sage”中的“特殊功能”

SAGE有许多特殊的功能(请参阅http://doc.sagemath.org/html/en/reference/functions/),的参考手册,其中大多数功能都可以象征性地进行操作。在未实现此功能的情况下,其他符号包可能具有此功能。

通过Maxima,允许进行一些符号操作:

sage: maxima.eval("f:bessel_y (v, w)")
'bessel_y(v,w)'
sage: maxima.eval("diff(f,w)")
'(bessel_y(v-1,w)-bessel_y(v+1,w))/2'
sage: maxima.eval("diff (jacobi_sn (u, m), u)")
'jacobi_cn(u,m)*jacobi_dn(u,m)'
sage: jsn = lambda x: jacobi("sn",x,1)
sage: P = plot(jsn,0,1, plot_points=20); Q = plot(lambda x:bessel_Y( 1, x), 1/2,1)
sage: show(P)
sage: show(Q)

除了……之外 maximaparioctave 也有特殊的功能(事实上,一些 pari 的特殊功能包装在Sage中)。

下面是一个使用Sage的接口(位于sage/interages/octave.py中)的示例 octave (https://www.gnu.org/software/octave/doc/latest).

sage: octave("atanh(1.1)")   ## optional - octave
(1.52226,1.5708)

以下是使用Sage的接口执行以下操作的示例 pari 的特殊功能。

sage: pari('2+I').besselk(3)
0.0455907718407551 + 0.0289192946582081*I
sage: pari('2').besselk(3)
0.0615104584717420

Sage是什么?

SAGE是数论、代数和几何计算的框架,最初是为使用椭圆曲线和模形式进行计算而设计的。其长期目标是使其在代数、几何和数论中更普遍地有用。它是开源的,并且在GPL的条款下可以免费获得。参考手册中的章节标题大致介绍了Sage中所涵盖的主题。

《Sage史》

SAGE由William Stein于2004年秋季在哈佛大学创立,其0.1版于2005年1月发布。该版本包括Pari,但不包括Gap或Single。0.2版于3月发布,0.3版于4月发布,0.4版于7月发布。在此期间,增加了对Cremona数据库、多元多项式和大型有限域的支持。此外,还编写了更多的文档。0.5测试版于8月发布,0.6测试版于9月发布,0.7版于当月晚些时候发布。在此期间,添加了对向量空间、环、模符号和Windows用户的更多支持。在2005年10月发布的0.8版中,Sage包含了GAP的完整分发,尽管一些GAP数据库必须单独添加和单独添加。添加单数词并不容易,因为从来源编译单数词很困难。0.9版于11月发布。这个版本已经发布了34个版本!从0.9.34版(肯定是0.10.0版)开始,MAXIMA和CLISP包含在Sage中。版本0.10.0于2006年1月12日发布。Sage 1.0的发布是在2006年2月初。截至2008年2月,最新版本为2.10.2。

许多人贡献了重要的代码和其他专业知识,例如帮助在各种操作系统上编译。通常,代码作者在他们文件的Python文档字符串的Author部分和Sage网站的Credit部分得到认可。