Sage入门教程¶
这 Sage 该文件是为MAA预备讲习班“SAGE:在本科生中使用开源数学软件”开发的一系列教程中的第一个(由国家科学基金会提供,截止日期为0817071)。它是在知识共享署名-Share Alike 3.0许可证下授权的 (CC BY-SA )。
如果您不确定如何登录到Sage服务器、开始使用本地安装或创建新工作表,您可能会找到 prelude on logging in 很有帮助。
否则,您可以继续学习本教程,该教程包含以下各节:
本教程仅介绍最基本级别的功能。后面的教程介绍诸如微积分、高级绘图和各种特定数学主题等主题。
评估SAGE命令¶
或者,我如何让Sage做一些数学计算?
看见 在Jupyter笔记本中进行评估 Jupyter笔记本电脑
在Jupyter笔记本中进行评估¶
在木星工作表中,有一些叫做 input cells 或 code cells 。它们应该和你的浏览器一样宽。
要在木星单元格中进行数学运算,必须做两件事。
首先,单击单元格内部,使单元格处于活动状态(即具有亮绿色边框)。在上面的第一个单元格中已经出现了这种情况。(如果是蓝色,则表示Jupyter笔记本处于“命令模式”)。在里面输入一些数学知识。
那么,有两个选择。可以点击录音设备上看起来像“播放”符号的不太明显的图标:
或者可以使用按住键盘快捷键 Shift 按键的同时按下 Enter 钥匙。我们把这叫做 Shift + Enter 。
Sage在单元格的正下方打印出其响应(即 4
下面,所以Sage证实 \(2+2=4\) )。还要注意,在您评估第一个单元格之后,Sage已经自动创建了一个新单元格,并使其处于活动状态。
要做更多的数学计算,只需对更多的单元格做同样的事情!
用户必须学习各种键盘快捷键或单击各种菜单项来操作单元格。有一个帮助菜单可以帮助您开始;Jupyter开发人员还维护 an example notebook 这可能会对你有所帮助。
在Sage中的函数¶
首先,让我们探索如何在Sage中定义和使用函数。
对于一个典型的数学函数,定义它非常简单。下面,我们定义一个函数。
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))
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”。
现在你可以输入任何你想要的东西,包括使用LaTeX的数学。
然后计算单元格(例如,使用“Shift-Enter”):
Markdown支持相当多的基本格式,如粗体、下划线、基本列表等。
输入相当复杂的数学可能很有趣,如下所示:
一个人只需输入如下内容:
$$\zeta(s)=\sum_{n=1}^{\infty}\frac{1}{n^s}=\prod_p \left(\frac{1}{1-p^{-s}}\right)$$
在降价单元格中。
当然,我们可以做得更多,因为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 。