主要内容

高等代数: 多项式与线性代数

附录 D 计算软件系统Sage介绍

线性代数成为现代科技的主要工具部分原因要归功于计算机的普遍应用。很多实际问题在解决时,最后都是转化为大规模线性方程组求解的相关问题。没有计算机的帮助,手动求解一百个变量、一百个方程的线性方程组是不可想象的。而现在很多实际问题转化过来的线性方程组含有的变量个数和方程个数都远超这个数目。因此,有必要了解如何利用计算机求解线性代数的相关问题。
Sage 是一个免费、开源的数学软件系统,采用Python语言开发,同时整合了许多开源Python包,如 NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R 等。它的目标是创造一个能独立生存的免费、开源软件,作为付费软件Magma、Maple、Mathematica和Matlab之外的可替代选择。Sage的官方网站是https://www.sagemath.org,网站上可以免费下载到最新版本的sage软件,也有很全面的文档资料。遗憾的是这个软件的汉化不好,中文资料相对缺乏。
Sage提供了多种方式使用它的计算资源,您可以在sage的官方网站上下载sage的安装包,然后安装到本地来使用sage软件;也可以使用其提供的云计算服务SageMathCell或CoCalc。本书嵌入了sage的云计算单元,您可以在本书网页的相应模块直接使用sage资源。与本地安装的sage软件相比,受网络带宽和云端响应时间的影响,云端计算会相对较慢。
下面我们介绍一些sage的基本操作。
首先,sage提供了最基本的计算功能。例如,当我们想利用sage计算\(3\times 5\)时,只需在下面的计算单元中输入“3*5”,然后点击下方的按钮即可获得答案。您可以尝试输入其它命令。
和LaTex的语法相同,sage中使用^来表示幂运算。
除基本的算术运算外,sage也支持逻辑判断和集合运算。 Sage中用NN表示非负整数(也可以认为是从0开始的自然数集),ZZ表示整数集,QQ表示有理数集,RR表示实数集,CC表示复数集。例如
上面的例子中sqrt是开方函数,sqrt(2)表示的就是 \(\sqrt{2}\)。在sage中遇到不熟悉的命令时,可以使用单问号(?)和双问号(??)来查询命令的含义。单问号只显示命令定义的注释部分;双问号是详细解释,会显示命令的原始定义,包括源代码。注意,这里的问号是英文标点中的问号。
Sage中也可以定义函数,如:
可以在下面的计算单元中分别尝试is_even?和is_even??,从而看到其中的区别。
Sage中有的有些命令是函数(function),如上面出现的sqrt就是一个函数命令。如果我们只记住了函数命令的前几个字母,在本地安装的sage命令框中,可以用tab键实现命令补全。如输入sq,然后按tab,此时会弹出以sq为开头的所有函数命令。
除函数命令外,另一种常见的命令是方法(method)。方法与函数的一个主要区别是方法需要依附于一些特定的对象。举例来说,inverse是sage提供的标准求矩阵逆的方法,使用和查询这个函数都需要先有一个矩阵对象。如下例所示。
如果想进一步了解函数(function)和方法(method)的区别,需要先了解面向对象程序设计的相关知识。这部分知识可以通过学习python程序设计(或其它面向对象的编程语言)来获得。
这里介绍的只是sage的最基础操作。针对本书作者所知的所有主要数学分支,Sage都有专门的模块支持,详细内容请参考官方文档网站 https://doc.sagemath.org
 1 
doc.sagemath.org