接口问题¶
后台作业¶
可以,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语法。有关简单的示例,请参见 置换群 以上面的魔方组为例。
读入文件的另一种方法是使用 load
或 attach
指挥部。创建名为的文件 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)
除了……之外 maxima
, pari
和 octave
也有特殊的功能(事实上,一些 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部分得到认可。