Sage入门教程

Sage 该文件是为MAA预备讲习班“SAGE:在本科生中使用开源数学软件”开发的一系列教程中的第一个(由国家科学基金会提供,截止日期为0817071)。它是在知识共享署名-Share Alike 3.0许可证下授权的 (CC BY-SA )。

如果您不确定如何登录到Sage服务器、开始使用本地安装或创建新工作表,您可能会找到 prelude on logging in 很有帮助。

否则,您可以继续学习本教程,该教程包含以下各节:

本教程仅介绍最基本级别的功能。后面的教程介绍诸如微积分、高级绘图和各种特定数学主题等主题。

评估SAGE命令

或者,我如何让Sage做一些数学计算?

在Jupyter笔记本中进行评估

在木星工作表中,有一些叫做 input cellscode cells 。它们应该和你的浏览器一样宽。

_images/BlankJupyter.png

要在木星单元格中进行数学运算,必须做两件事。

  • 首先,单击单元格内部,使单元格处于活动状态(即具有亮绿色边框)。在上面的第一个单元格中已经出现了这种情况。(如果是蓝色,则表示Jupyter笔记本处于“命令模式”)。在里面输入一些数学知识。

_images/InputJupyter.png
  • 那么,有两个选择。可以点击录音设备上看起来像“播放”符号的不太明显的图标:

    _images/RunCellIcon.png

    或者可以使用按住键盘快捷键 Shift 按键的同时按下 Enter 钥匙。我们把这叫做 Shift + Enter

Sage在单元格的正下方打印出其响应(即 4 下面,所以Sage证实 \(2+2=4\) )。还要注意,在您评估第一个单元格之后,Sage已经自动创建了一个新单元格,并使其处于活动状态。

_images/OutputJupyter.png

要做更多的数学计算,只需对更多的单元格做同样的事情!

_images/MoreCells.png

用户必须学习各种键盘快捷键或单击各种菜单项来操作单元格。有一个帮助菜单可以帮助您开始;Jupyter开发人员还维护 an example notebook 这可能会对你有所帮助。

_images/JupyterHelpMenu.png

在Sage中的函数

首先,让我们探索如何在Sage中定义和使用函数。

对于一个典型的数学函数,定义它非常简单。下面,我们定义一个函数。

\[F(X)=x^2\]
sage: f(x)=x^2

因为我们所需要的只是创建函数 \(f(x)\) ,Sage就是这样做的,不会打印任何内容给我们。

我们可以通过问Sage什么来检查定义 f(x) 是:

sage: f(x)
x^2

如果我们只问塞奇 f 是(相对于 f(x) ),Sage打印出映射变量的函数的标准数学表示法 \(x\) 到了价值 \(x^2\) (带有“Maps to”箭头 \(\mapsto\) AS |--> )。

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) )告诉Sage你是认真的 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)

Notice that there is no reason to numerically evaluate \(\log(3)\), so Sage keeps it symbolic. The same is true in the next cell - \(2\log(3)=\log(9)\), but there isn't any reason to do that; after all, depending on what you want, \(\log(9)\) may be simpler or less simple than you need.

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))
\[\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 这些东西。

制表符完成

笔记本中最有用的帮助是“制表符补全”。这个想法是,即使您不是百分之百地确定命令的名称,前几个字母应该仍然足以帮助您找到它。这里有一个例子。

  • 假设您想要做一种特定类型的地块--可能是坡地地块--但不太确定具体要做什么。

  • 尽管如此,命令的开头似乎是合理的 pl

  • 然后你就可以打字了 pl 在输入单元格中,然后按 Tab 键以查看所有以字母开头的命令 pl

尝试在Tab键之后 pl 以查看所有以字母开头的命令 pl 。你应该看到这一点 plot_slope_field 就是其中之一。

sage: pl

要选择一个,只需单击它;要停止查看它们,请按 Escape 钥匙。

您还可以使用它来查看可以对表达式或数学对象执行的操作。

  • 假设您的表达式有一个名称,请键入它;

  • 然后在它之后键入一个句点,

  • 然后按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 键,就像完成选项一样。

如果希望文件长期可见,可以 evaluate 使用带有问号的命令(如下图所示)访问文档,而不仅仅是按Tab键。然后,它将一直保留在那里,直到您删除输入单元格。

sage: binomial?

用另一种功能试试吧!

寻找源头

从长远来看,你可能会发现另一个有用的帮助来源,尽管可能不是立即有用。

  • 一个人可以使用 two 在函数名后加问号以调出文档 and 该函数的源代码。

  • 同样,要查看此帮助,您可以评估如下所示的单元格,或者只需将光标移动到问号后面并按Tab键。

能够看到代码(对计算机的底层指令)是Sage的一大强项。你可以看到 all 的代码 everything

这意味着:

  • You 可以看到赛奇在做什么。

  • 你的好奇心很强的学生可以看到发生了什么。

  • 如果你找到了一种更好的方法去做某事,那么你就可以看到如何改变它!

sage: binomial??

用Sage注解

无论是在课堂上还是在研究中使用Sage,向读者描述正在做的事情通常都是有帮助的,比如在你正在阅读的描述中。

Jupyter注解

多亏了一种名为 Markdown 而Tex呈现引擎称为 MathJax ,您可以在Sage中键入更多内容,而不仅仅是Sage命令。这种具有数学意识的设置使Sage非常适合对计算进行注释。

Jupyter笔记本可以作为文字处理器使用。为了使用此功能,我们创建了一个 Markdown cell (而不是 input cell 其中包含Sage评估的Sage命令)。

要在没有键盘快捷键的情况下执行此操作,每个单元格都有一个菜单;选择“Markdown”。

_images/MarkDownMenu.png

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

_images/MDInput.png

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

_images/MDOutput.png

Markdown支持相当多的基本格式,如粗体、下划线、基本列表等。

输入相当复杂的数学可能很有趣,如下所示:

\[\zeta(s)=\sum_{n=1}^{\infty}\frac{1}{n^s}=\prod_p \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)$$

在降价单元格中。

_images/Riemann.png

当然,我们可以做得更多,因为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