教程:使用Sage笔记本,导航帮助系统,第一个练习¶
这张工作表是威廉·斯坦因的 JPL09__intro_to_sage.sws 工作表和 Sage days 20.5_demo 工作表,旨在通过练习成为对Sage的交互式介绍。你将学习如何使用笔记本和呼叫帮助。
将此帮助页制作为工作表¶
如果您以静态网页的形式浏览此文档,则可以看到所有示例;但是,您需要逐个复制并粘贴它们才能进行实验。使用 Upload worksheet
按钮并复制粘贴此页面的URL,以获得笔记本中的可编辑副本。
如果您是作为Sage的live文档的一部分浏览此文档,您可以在这里直接使用示例;但是关闭此页面时,您所做的更改将丢失。使用 Copy worksheet
from the File...
此页顶部的菜单可在笔记本中获取可编辑副本。
在实时教程和笔记本中,可以通过选择清除所有输出 Delete All Output
from the Action...
菜单旁边 File...
工作表顶部的菜单。
输入、输入和编辑¶
到 评估代码 在Sage笔记本中,将代码键入输入单元格,然后按 shift-enter
或单击 evaluate
链接。现在用一个简单的表达式(例如。, 2+3 ). 自新的Sage进程启动以来,第一次计算单元格所需的时间比后续时间长:
sage: 2 + 3
5
sage: # edit here
sage: # edit here
创造 新输入单元格 ,单击移动鼠标时显示在单元格之间的蓝线。现在试试看:
sage: 1 + 1
2
sage: # edit here
你可以 回去 并通过单击任何单元格(或使用键盘上的箭头键上下移动)来编辑它。回去把你的 2+3 以上至 3+3 重新评估。空单元格可以是 删除 用退格键。
你也可以 编辑此文本 在这里双击它,这将打开tinymcejavascript文本编辑器。你甚至可以使用美元符号,像TeX或LaTeX那样,把嵌入的数学放入$sin(x)-y^3$。
完成和上下文文档¶
开始键入内容并按 tab
钥匙。接口尝试用命令名完成它。如果有一个以上的完成,那么它们都会呈现给你。记住Sage是区分大小写的,即区分大小写。因此 tab
完成 klein
不会给你看 KleinFourGroup
生成组的命令 ZZ/2 times ZZ/2 作为一个置换群。在下一个单元格中尝试:
sage: klein<tab>
sage: Klein<tab>
要查看命令的文档和示例,请键入问号 ?
在命令名的末尾,按 tab
密钥如下:
sage: KleinFourGroup?<tab>
sage: # edit here
练习A
最大的要素是什么 600851475143 是吗?
sage: factor?<tab>
sage: # edit here
在上面的操作中,我们没有存储任何数据供以后使用。这可以在Sage中用 =
符号如下:
sage: a = 3
sage: b = 2
sage: a+b
5
这可以理解为Sage评价表达的权利 =
签名并创建适当的对象,然后将该对象与左侧给出的标签相关联(参见 教程:Python和Sage中的对象和类 了解详情)。可以一次完成多个分配:
sage: a,b = 2,3
sage: a
2
sage: b
3
这允许我们直接交换两个变量的值:
sage: a,b = 2,3
sage: a,b = b,a
sage: a,b
(3, 2)
我们还可以同时为多个变量指定一个公共值:
sage: c = d = 1
sage: c, d
(1, 1)
sage: d = 2
sage: c, d
(1, 2)
注意当我们使用这个词时 变量 在计算机科学的意义上,我们指的是“一个附加在Sage存储的数据上的标签”。一旦一个对象被创建,一些 方法 应用它。这意味着 功能 而不是写作 f(my_object) 你写的 my_object.f() ::
sage: p = 17
sage: p.is_prime()
True
见 教程:Python和Sage中的对象和类 了解详情。要知道对象的所有方法,可以再次使用制表符完成。输入对象的名称,后跟一个点,然后按 tab
:
sage: a.<tab>
sage: # edit here
练习B
创建置换51324并将其分配给变量 p
.
sage: Permutation?<tab>
sage: # edit here
什么是 inverse
属于 p
是吗?
sage: p.inv<tab>
sage: # edit here
做 p
有 pattern
123个?1234呢?还有312?(即使您不知道什么是模式,也应该能够找到一个执行此操作的命令)。
sage: p.pat<tab>
sage: # edit here
一些线性代数¶
练习C
使用 matrix()
命令创建以下矩阵。
sage: matrix?<tab>
sage: # edit here
然后,利用矩阵的方法,
计算矩阵的行列式。
计算矩阵的梯形形式。
计算矩阵的特征值。
计算矩阵的核。
计算矩阵的LLL分解(如果需要,可以查阅文档了解LLL是什么!)
sage: # edit here
sage: # edit here
既然你知道了如何使用矩阵的不同方法,
创建向量 v = (1,-1,-1,1) .
计算两个乘积: Mcdot v 和 vcdot M . 塞奇暗地里在做什么数学上的边界运算?
sage: vector?<tab>
sage: # edit here
注解
Sage中的向量是行向量。一种方法,如 eigenspaces
可能不会返回您期望的值,因此最好指定 eigenspaces_left
或 eigenspaces_right
相反。内核也是一样 (left_kernel
或 right_kernel
),以此类推。
一些阴谋¶
这个 plot()
命令允许您绘制函数图。回想一下,您可以通过按 tab
写入后的密钥 plot?
在单元格中:
sage: plot?<tab>
sage: # edit here
下面是一个简单的例子:
sage: var('x') # make sure x is a symbolic variable
x
sage: plot(sin(x^2), (x,0,10))
Graphics object consisting of 1 graphics primitive
这是一个更复杂的情节。尝试以某种方式更改plot命令的每一个输入,并评估会发生什么:
sage: P = plot(sin(x^2), (x,-2,2), rgbcolor=(0.8,0,0.2), thickness=3, linestyle='--', fill='axis')
sage: show(P, gridlines=True)
上面我们用了 show()
命令显示创建后的绘图。你也可以使用 P.show
取而代之的是:
sage: P.show(gridlines=True)
试着把光标放在后面 P.show(
然后按tab键可获得一个选项列表,其中列出了如何更改给定输入的值。
sage: P.show(
一次绘制多个函数就像将它们相加一样简单:
sage: P1 = plot(sin(x), (x,0,2*pi))
sage: P2 = plot(cos(x), (x,0,2*pi), rgbcolor='red')
sage: P1 + P2
Graphics object consisting of 2 graphics primitives
符号表达式¶
下面是一个符号函数的示例:
sage: f(x) = x^4 - 8*x^2 - 3*x + 2
sage: f(x)
x^4 - 8*x^2 - 3*x + 2
sage: f(-3)
20
这是 数学的 变量 x . 当Sage开始时,它定义了符号 x 成为一个数学变量。如果要对变量使用其他符号,必须先定义它们:
sage: x^2
x^2
sage: u + v
Traceback (most recent call last):
...
NameError: name 'u' is not defined
sage: var('u v')
(u, v)
sage: u + v
u + v
不过,在不首先定义符号函数变量的情况下,也可以定义符号函数:
sage: f(w) = w^2
sage: f(3)
9
在这种情况下,这些变量是隐式定义的:
sage: w
w
练习D
定义符号函数 f(x) = x sin(x^2) . 情节 f 在域上 [-3,3] 把它涂成红色。使用 find_root()
数值逼近根的方法 f 在中场休息时 [1,2] ::
sage: # edit here
计算切线 f 在 x=1 ::
sage: # edit here
情节 f 相切线 f 在 x=1 在一幅图像中:
sage: # edit here
练习E(高级)
求解下列方程 y :
有两种解决方案,以其中一种为例 lim_{{xto0}}y(x)=1 . (别忘了创建变量 x 和 y !).
sage: # edit here
展开 y 作为一个截断的泰勒级数 0 包含 n=10 条款。
sage: # edit here
你知道泰勒级数展开的系数吗?您可能需要使用 On-Line Encyclopedia of Integer Sequences 或者更好的是,萨奇的课 OEIS
其中查询百科全书:
sage: oeis?<tab>
sage: # edit here
恭喜你完成了第一个Sage教程!