Sage入门教程¶
这个 Sage 该文件是为MAA预习班“Sage:对本科生使用开源数学软件”(NSF提供资金,到期日0817071)的一系列教程中的第一篇。它是根据Creative Commons Attribution -ShareLiked 3.0许可证授权的 (CC BY-SA )
如果您不确定如何登录到Sage服务器、开始使用本地安装或创建新工作表,您可能会找到 prelude on logging in 乐于助人。
否则,您可以继续本教程,该教程包含以下部分:
-
见 在Jupyter笔记本上评估 为了Jupyter笔记本
见 在SageNB笔记本中评估 对于传统的Sage笔记本
本教程只介绍最基本的功能级别。以后的教程将讨论微积分、高级绘图和各种各样的特定数学主题。
评估Sage命令¶
或者,我如何让萨奇做一些数学?
我们这里有两个平行的小节,它们涵盖(大致)相同的内容。
见 在Jupyter笔记本上评估 为了Jupyter笔记本
见 在SageNB笔记本中评估 对于传统的Sage笔记本
在Jupyter笔记本上评估¶
在Jupyter工作表中,有一些小盒子叫做 输入单元格 或 代码单元 . 它们应该和你的浏览器差不多宽。

在Jupyter细胞里做数学,必须做两件事。
首先,在单元格内部单击,使单元格处于活动状态(即,具有亮绿色边框)。上面第一个牢房已经是这样了。(如果是蓝色,则Jupyter笔记本处于“命令模式”)。输入一些数学。

然后,有两种选择。可以单击录制设备上看起来像“播放”符号的不太明显的图标:
也可以使用键盘快捷键,即按住Shift键的同时按Enter键。我们称之为“转换中心”。
Sage在细胞下方打印出它的反应(这是 4
下面,萨奇证实了这一点 \(2+2=4\) ). 还请注意,Sage已经自动创建了一个新的单元格,并在您对第一个单元格进行了评估之后将其激活。

要做更多的数学,就用更多的细胞做同样的事情!

与SageNB不同的是,人们必须学习各种键盘快捷键或单击各种菜单项来操作单元格。有一个帮助菜单可以帮助您开始这项工作;Jupyter开发人员还维护 an example notebook 可能对你有帮助。

在SageNB笔记本中评估¶
在任何一个Sage工作表中,都有一个称为 输入单元格 或 代码单元 . 它们应该和你的浏览器差不多宽。

计算输入单元格的内容非常容易。
首先,单击单元格内部,使该单元格处于活动状态(即,具有亮蓝色边框)。
然后,在左边单元格的正下方,会出现一个“evaluate”链接;单击此链接对单元格求值。
如果您使用的是此文档的实时版本,请尝试评估以下单元格。
sage: 2+2
4
Sage在细胞下方打印出它的反应(这是 4
上面,所以Sage证实了这一点 \(2+2=4\) ). 还请注意,Sage会在您评估第一个单元格后自动激活下一个单元格。
也可以使用键盘快捷键计算单元格。
如果某个单元格未处于活动状态(如下面的live文档中),请单击它。
然后按住Shift键,同时按Enter键。
我们称之为“转换中心”。尝试使用此单元格进行Shift -Enter。
sage: factor(2012)
2^2 * 503
如果一个输入单元格只能做一件事,那么它就没什么用处了,所以你可以编辑一个单元格,然后再对它求值。只需单击内部,然后像往常一样通过键入来进行任何更改。
试着换个号码 2012
以上至 2011
然后评估细胞以找到它的因子分解(惊讶吗?);然后试试你自己喜欢的号码。
为了进行更多的数学运算,我们需要能够创建新的输入单元格。这也很简单。
将光标移到另一个单元格上方或下方的空间上。
一条与浏览器宽度相同的蓝色水平线。
单击该行以插入新单元格。

如果出于某种原因需要删除或删除输入单元格,只需删除其中的所有文本,然后在空单元格中按backspace。
尝试在下面创建几个新的输入单元格,在这些单元格中执行一些运算,然后删除其中一个输入单元格。
'Do some arithmetic in me, and make some other cells after me!'
Sage中的函数¶
首先,让我们探讨如何在Sage中定义和使用函数。
对于一个典型的数学函数,定义它是非常简单的。下面,我们定义一个函数。
sage: f(x)=x^2
因为我们只想创建函数 \(f(x)\) ,Sage只是这样做,不打印任何东西给我们。
我们可以通过询问Sage什么来检查定义 f(x)
是:
sage: f(x)
x^2
如果我们问Sage什么 f
是(相对于 f(x)
),Sage打印出映射变量的函数的标准数学符号 \(x\) 价值观 \(x^2\) (使用“地图到”箭头 \(\mapsto\) 作为 |-->
)
sage: f
x |--> x^2
我们可以评估 \(f\) 以不同的价值。
sage: f(3)
9
sage: f(3.1)
9.61000000000000
sage: f(31/10)
961/100
注意,输出类型的变化取决于输入是否有十进制数;我们将在下面再次看到这一点。
当然,我们不局限于 \(x\) 作为变量。在下一个单元格中,我们定义函数 \(g(y)=2y-1\) .
sage: g(y)=2*y-1
但是,如果我们使用一个新变量,我们需要确保我们确实定义了一个函数。在下一个单元格中,我们将看到如果我们尝试单独使用随机输入会发生什么。
sage: z^2
Traceback (most recent call last):
...
NameError: name 'z' is not defined
下面的教程将对此进行详细说明。在这一点上,知道使用函数表示法就足够了(比如 g(y)
)告诉塞奇你是认真的 y
作为一个变量。
你也可以用 var('z')
符号如下。
sage: var('z')
z
sage: z^2
z^2
这也证明了我们可以在一个单元格中放置多个命令,每个命令都放在单独的行上。最后一个命令的输出(如果有)将作为单元的输出进行打印。
Sage knows various common mathematical constants, like \(\pi\)
(pi
) and \(e\).
sage: f(pi)
pi^2
sage: f(e^-1)
e^(-2)
为了查看表达式的数值近似值,只需在 N()
.
sage: N(f(pi))
9.86960440108936
另一个选项,通常在实践中更有用,是将表达式紧跟在 .n()
(注意点)。
sage: f(pi).n()
9.86960440108936
现在,我们不会深入解释这种语法背后的原因,这对您来说可能是新的。对于那些感兴趣的人,Sage经常使用这种类型的语法(称为“面向对象”),因为。。。
Sage使用Python编程语言,它使用这种语法“在引擎盖下”,并且
因为这样更容易区分
数学对象,
你对它所做的一切
任何辅助论点。
For example, the following numerically evaluates (n
) the constant
\(\pi\) (pi
) to twenty digits (digits=20
).
sage: pi.n(digits=20)
3.1415926535897932385
Sage has lots of common mathematical functions built in, like
\(\sqrt{x}\) (sqrt(x)
) and \(\ln(x)\) (ln(x)
or
log(x)
).
sage: log(3)
log(3)
请注意,没有理由用数值计算 \(\log(3)\) 所以Sage把它当作象征。下一个牢房也是如此- \(2\log(3)=\log(9)\) ,但没有任何理由这么做;毕竟,取决于你想要什么, \(\log(9)\) 可能比你需要的简单或不那么简单。
sage: log(3)+log(3)
2*log(3)
sage: log(3).n()
1.09861228866811
请再次注意,Sage尽量尊重输入的类型;加上小数告诉Sage我们有近似的输入,并且需要一个更近似的答案。(对于本文的介绍,完整的细节有点过于复杂。)
sage: log(3.)
1.09861228866811
sage: sqrt(2)
sqrt(2)
如果我们想让它看起来更好,我们可以使用 show
命令。我们将在下面看到更多类似的事情。
sage: show(sqrt(2))
sage: sqrt(2).n()
1.41421356237310
你还记得什么吗 \(f\) 做?
sage: f(sqrt(2))
2
我们也可以很容易地绘制函数。
sage: plot(f, (x,-3,3))
Graphics object consisting of 1 graphics primitive
在另一个教程中,我们将更深入地研究绘图。这里,请注意,首选语法在圆括号中有绘图域的变量和端点,用逗号分隔。
如果你觉得很大胆,就把 sqrt
在0到100之间的下一个单元格中函数。
内助Sage¶
在Sage中有很多方法可以帮助你做事情。当你在Sage工作表中工作时,以下是几种常见的获得帮助的方法。
文档¶
Sage包括涵盖数千个函数的大量文档,其中包括许多示例、教程和其他帮助。
访问这些文件的一种方法是单击任何工作表右上角的“帮助”链接,然后单击帮助页面顶部的首选选项。
他们也可以随时在线在 Sage website ,其中有许多其他链接,如视频介绍。
这个 Quick Reference cards 是另一个有用的工具,一旦你熟悉了Sage。
不过,我们在本教程中的主要关注点是帮助您可以从工作表中立即访问,而您不必这样做 any 那些东西。
制表符完成¶
笔记本中最有用的帮助是“tab completion”。这个想法是,即使你不能百分之百地确定一个命令的名称,前几个字母也应该足以帮助你找到它。这里有一个例子。
假设你想做一个特定类型的图-也许是一个斜坡场图-但不太确定什么样的图。
不过,从命令开始似乎是合理的
pl
.然后就可以打字了
pl
在输入单元格中,然后按tab键查看以字母开头的所有命令pl
.
尝试在 pl
在下面的单元格中查看以字母开头的所有命令 pl
. 你应该看看 plot_slope_field
是其中之一。
sage: pl
要选择一个,只需单击它;要停止查看它们,请按Escape/esc键。
你也可以用这个来看看你能对一个表达式或数学对象做些什么。
假设您的表达式有一个名称,请键入它;
然后在后面键入句点,
然后按tab键。
您将看到一个列表,其中列出了您可以对表达式执行的所有操作。
若要尝试此操作,请对以下单元格求值,以确保 \(f\) 定义。
sage: f(x)=x^2
现在将光标放在句点之后,然后按tab键。
sage: f.
同样,Escape应该删除列表。
上面列出的其中一件事是 integrate
. 我们试试吧。
sage: f.integrate(x)
x |--> 1/3*x^3
查找文档¶
或者,为什么所有的问号?
在前面的示例中,您可能会想知道为什么我需要 f.integrate(x)
而不仅仅是 f.integrate()
,通过类比 sqrt(2).n()
.
为了找出答案,有另一个帮助工具可以使用从笔记本的权利。Sage中几乎所有的文档都有大量的示例,可以说明如何使用该函数。
与制表符补全一样,键入表达式、句点和函数名。
然后键入一个问号。
按tab键 or 评估以查看文档。
要查看此帮助的工作原理,请将光标移到下面的问号后,然后按tab键。
sage: f.integrate?
示例说明语法需要 f.integrate(x)
不仅如此 f.integrate()
. (毕竟,如果已经定义了几个变量,那么后者可能是模棱两可的)。
要在按tab键后停止查看文档,可以按Escape键,就像完成选项一样。
如果您想让文档长期可见,您可以 评价 一个带有问号(如下所示)的命令,用于访问文档,而不仅仅是制表符。然后它将一直保持在那里,直到您删除输入单元格。
sage: binomial?
用另一个函数试试这个!
寻找源头¶
从长远来看,还有一个帮助的来源可能对你有用,尽管可能不是立即的。
一个人可以用 two 函数名后的问号以提取文档 and 函数的源代码。
同样,要查看此帮助,您可以像下面这样计算单元格,也可以将光标移到问号后按tab键。
能够看到代码(计算机的底层指令)是Sage的一大优势。你可以看到 all 代码 一切 .
这意味着:
You 可以看到Sage在做什么。
你好奇的学生可以看到发生了什么。
如果你找到一个更好的方法去做某件事,那么你就可以看到如何改变它!
sage: binomial??
用Sage注释¶
无论是在课堂上还是在研究中使用Sage,向读者描述正在做的事情通常是有帮助的,比如在你现在阅读的描述中。
朱庇特注释¶
感谢一种叫做 Markdown TeX渲染引擎调用 MathJax ,您可以在Sage中键入比Sage命令更多的内容。这种具有数学意识的设置使Sage非常适合注释计算。
虽然Jupyter笔记本没有SageNB那样功能齐全的文字处理器,但我们仍然可以做相当多的工作。要使用此功能,我们创建一个 标记单元格 (与 输入单元 包含Sage计算的Sage命令)。
要在不使用键盘快捷键的情况下执行此操作,每个单元格都有一个菜单;选择“Markdown”。

现在你可以输入任何你想要的东西,包括使用 Latex 的数学。

然后计算单元格(例如,使用“Shift -Enter”):

Markdown支持大量的基本格式,如粗体、下划线、基本列表等。
输入相当复杂的数学会很有趣,比如:
只需键入以下内容:
$$\zeta(s)=\sum_{n=1}^{\infty}\frac{1}{n^s}=\prod_p \left(\frac{1}{1-p^{-s}}\right)$$
在一个降价的牢房里。

SageNB注释¶
多亏了 the mini-word processor TinyMCE 以及一个名为 MathJax ,您可以在SageNB笔记本工作表中键入比Sage命令更多的内容。这种具有数学意识的设置使Sage非常适合注释计算。
要使用字处理器,我们创建一个 文本单元格 (与 输入单元 包含Sage计算的Sage命令)。
要创建文本单元格,请执行以下操作。
首先,在两个输入单元格之间移动光标,直到出现蓝色细线。
然后按住Shift键并单击蓝色细线。
因此,要创建一个输入单元格,只需单击鼠标,只需按一下Shift键,即可创建文本单元格。以下是您的文本单元格的外观。
在live文档中,尝试在下面的输入单元格之间插入文本单元格。
2+2
2+2
TinyMCE在许多方面使格式化文本变得容易。试着用平常的 bold 按钮、下划线按钮、不同的文本字体和颜色、有序和无序列表、居中等等。根据你所熟悉的文字处理系统的一些快捷键,也可以根据你所熟悉的一些快捷键。
你还可以利用工作表在网上的优势做另外两件事。
很容易链接到其他有用的网站以获取更多信息。
在编辑器中,突出显示一两个单词,然后单击按钮右下角的小链接。
您现在可以键入要链接到的网址。
一定要事先准备好
http://
地址。通常,还应该选择它以在新窗口中显示(这样Sage会话不会因有人单击它而中断)。
你可能已经注意到上面的一些描述有排版数学。事实上,我们可以添加几乎任意 Latex 到我们的文本单元格!
例如,添加类似
\[zeta(s)=sum{n=1}^{infty}frac{1}{n^s}=prod}left(frac{1}{1-p^{-s}right)。\]只需键入以下内容:
$$\zeta(s)=\sum_{n=1}^{\infty}\frac{1}{n^s}=\prod_p \left(\frac{1}{1-p^{-s}}\right)$$在字处理器中。
这是否显示得尽可能好取决于您的浏览器中的字体,但它应该是易读的。
更现实地说,我们可以打字
$f(x)=x^2$
让我们记住这一点 \(f(x)=x^2\) 在此工作表中。
这里有一个简单的例子。
sage: f(x)=x^2
sage: f(9)
81
如果 \(f(x)=x^2\) 然后 \(f(9)=81\) .
编辑文本单元格很简单,只需双击文本即可。
如果您是本教程的实时版本,请尝试双击此文本以编辑此文本单元格(或任何文本单元格),以查看我们如何键入数学!
当然,由于Sage可以在 Python 编程语言,以及输出格式良好的HTML等。如果你有足够的编程经验来做这样的事情,那就去做吧!
sage: html("Sage is <a style='text-decoration:line-through'>somewhat</a> <b>really</b> cool! <p style='color:red'>(It even does HTML.)</p>")
结论¶
介绍性教程到此结束。我们希望现在您可以尝试在Sage中找到并使用简单的命令和函数。记住,帮助就像笔记本一样接近,或者 the Sage website .