节 1.1 一元多项式的定义和基本性质
和其它很多数学课程一样,《高等代数》是建立在数字系统之上的。在接下来的课程中,我们将反复使用下面一些基本的数字集合。
名称 | 记号 | 定义 | 可能记号来源 |
---|---|---|---|
自然数集 | 英文名称Natural number首字母。 | ||
整数集 | 德文单词Zahl首字母。 | ||
有理数集 | 英文单词Quotient(商)首字母。 | ||
实数集 | 全体有理数数列极限点构成的集合 | 英文名称Real number首字母。 | |
复数集 | 英文名称Complex number首字母。 |
数的集合(简称数集)相对于其他一般集合的优势在于数集上有自然定义的运算。下面讨论一种有良好运算性质的数集,即数域。
子节 1.1.1 数域
我们知道:任意两个自然数的和仍然是自然数,但差未必;任意两个整数的和、差、积都是整数,但商可能不是(除数不为0)。上述的两个事实也可描述为:自然数集 关于加法封闭,但关于减法不封闭;整数集 关于加、减、乘三种运算都封闭,但关于除法不封闭。
备注 1.1.3.
也有很多书中选择用 表示一个数域,其可能原因是“域”在德文中对应的单词为Körper。
有理数域 是最早为人类认识的数域。历史上,在第一次数学危机之前,很多古代先贤认为 已经足够描述这个世界,不需要再有其它数域。第一次数学危机的爆发就与无理数的发现有关。事实上,有理数域仅是“最小”的数域。
命题 1.1.4.
证明.
因为 是一个数域,所以 ,根据加法封闭性则有
又由于
因此 。对任意 ,存在 (其中 ),使得 。由 可得
即 。从而, 。
例 1.1.5. 新数域 .
证明: 是一个数域。
提示.
要证明此结论,需要按定义验证 对于加、减、乘、除四种运算封闭,其中主要难点在于除运算封闭性的验证。验证除法封闭性时,可以使用分母有理化的方式来进行验证。
解答.
因为
所以 。
对任意 ,存在 ,使得 ,则
; ;- 当
时, 不全为 ,则 。(否则, 。若 ,则 ,矛盾。故 ,由此推出 ,左边是有理数,而右边是无理数,矛盾。)因此,
综上可知, 是一个数域。
数域这个概念在后续课程《抽象代数》中会进一步展开。《高等代数》中有些结论是与所选数域无关,有些结论有关。例如本章后续内容中两个多项式的最大公因式与所选数域无关,而多项式的因式分解与所选数域密切相关,请大家在学习过程中要注意区分。
子节 1.1.2 一元多项式的定义
定义 1.1.6.
特别地,只有一项系数不为0的多项式也称为单项式。
备注 1.1.7.
关于一元多项式的定义,有如下一些说明和相关常用术语:
- 类似于函数,多项式经常被简记为
或 等。约定:两个多项式 相等 当且仅当 的同次项系数均相等,并记为 。 -
习惯上,当
表示某一个已知非0多项式时,通常约定最高次项系数 。此时 称为多项式的首项, 称为首项系数。特别的,首项系数为1的多项式称为首一多项式。最高次项的次数 称为多项式 的次数,记作 ,有时也简记为 。当 表示一个未知多项式时,这样的表示方式相当于限定 是一个次数不超过 的多项式,此时的 可能等于0。 - 所有项系数均为0的多项式称为0多项式。特别约定:0多项式的次数记为
。在后面讨论多项式的运算性质时会看到这样约定的好处。 - 次数为0的多项式指的是只有非0常数项的多项式。0多项式不是0次多项式。
-
本质上,一元多项式的系数决定了这个多项式。一元多项式
可以一一对应于其系数按次数降序排列而成的序列这种表示多项式的方式称为多项式的系数表示。一些数学软件(如Matlab)就是按系数表示的方式表示和存储多项式。这种表示方式和整数的表示方式是类似的。一个整数,例如314159,也可以表示为类似于多项式的形式:由于这种结构上的相似性,多项式和整数有很多类似的性质,请大家比较记忆。备注 1.1.8.
程序设计中,也常用按次数升序排列的系数序列,即 , 来表示多项式。两者没有本质差别。
定义 1.1.9.
在多项式函数中,多项式相当于函数的映射法则表达式。
备注 1.1.10.
子节 1.1.3 一元多项式的运算和基本性质
下面来介绍一元多项式的基本运算。这些运算的定义都很自然。
多项式加法
多项式乘法
命题 1.1.11.
提示.
(1.1.2)中严格不等号成立的充要条件是: 且两个多项式的首项系数互为相反数。
下面两个常用的推论,请读者自己验证。
推论 1.1.12.
推论 1.1.13. 消去律.
例 1.1.14.
设 ,证明: 的充分必要条件是 。
解答.
充分性显然,下面用反证法来证明必要性。
假设 或 ,则 均不为 。(否则, 中一个为 ,另一个不为 。不妨设 ,则 ,与已知条件矛盾。)不妨设
其中 且 ,则 的首项系数为 或 ,均非零。由此推出 ,与题设矛盾。因此 。
- 思考:上述结论在复数域
上是否成立?
子节 1.1.4 相关Sage命令
Sage内部已经定义好了自然数集、整数集、有理数域、实数域和复数域,分别用NN、ZZ、QQ、RR、CC来表示。
xxxxxxxxxx
a_1 = (-5 in NN)
a_2 = (2/3 in ZZ)
a_3 = (sqrt(2) in QQ);
a_4 = (sqrt(2) in RR);
a_5 = (3 +2 *i in RR);
a_6 = (3 +2 *i in CC);
[a_1,a_2,a_3,a_4,a_5,a_6]
xxxxxxxxxx
F = QQ[sqrt(2)];
(3 + 2* sqrt(2)) in F, F
Sage 中声明多项式常见的有以下几种方式。
xxxxxxxxxx
P.<x> = PolynomialRing(QQ)
2*x in P, sqrt(2)*x in P
第一行命令告诉sage系统:P 是变量名为x的有理系数多项式全体所构成的集合。后续程序中出现的以x为变量的有理系数多项式表达式都将被系统识别为有理系数多项式集合P中的元素。下面的例子可以说明指定系数数域后的区别。
备注 1.1.15.
对加、减、乘三种运算封闭的集合称之为 环 ,英文名称为 ring,因此sage中声明多项式集合的命令名为 PolynomialRing。
xxxxxxxxxx
pretty_print_default(True); #美化输出
P.<x> = PolynomialRing(QQ)
Q.<y> = PolynomialRing(RR)
#factor为因式分解命令
(x^2-2).factor(),(y^2-2).factor()
Sage中也可以直接使用[]的记号来定义多项式。
xxxxxxxxxx
pretty_print_default(false);
R.<x> = RR[]; R
Sage中多项式的加、减、乘、除的运算和数字的运算相同,只是两个多项式的除法可能不再是多项式。
xxxxxxxxxx
pretty_print_default(True);
S.<z>= PolynomialRing(QQ);
p1 = 1 + 2*z + 3*z^2;
p2 = 5 + z^5;
p1 + p2, p1-p2, p1*p2, p1/p2, (p1*p2) in S,(p1/p2)in S
作为计算机程序设计的入门实践,这里我们以多项式的加法为例,用较原始的方法给出其实现代码。为了进一步降低编写程序的难度,我们选择以次数升序排列的多项式系数序列来表示一个多项式,即用序列 来表示多项式 。在python/sage中使用 表示这样的序列。这种数据结构称为 列表(list)。
xxxxxxxxxx
def add_poly(p1,p2): #多项式加法,p1、p2为输入的多项式系数列表(升序排列)
p=[]; #初始化输出
if len(p1) < len(p2): #len是python提供的函数,用来返回列表长度。非0多项式系数列表长度就是它的次数+1。
p1,p2 = p2,p1 #若p1的次数低于p2的次数,交换p1和p2。此步操作保证p1的列表更长。
for i in range(len(p2)):
p.append( p1[i] +p2[i] );#次数低于p2次数的项系数等于两多项式系数的和
p = p + p1[len(p2):len(p1)] #次数大于p2次数的项系数直接复制。
#两个列表的加法(+)就是把这两个列表按先后次序拼接起来,构成一个更长的新列表。
return p #函数的输出为p
#算例
add_poly([1,2,3], [5,0,0,0,0,1])
请同学们自行尝试用类似的方式实现多项式的其它运算。
练习 1.1.5 练习
基础题.
1.
2.
求包含 的最小数域,并证明。
3.
4.
5.
6.
7.
提高题.
8.
9.
设 是数域,
- 证明:
是一个数域; - 举例说明
不一定是数域; - 试证:
是数域的充要条件是 或 。
10.
11.
12.
用多项式的系数序列来表示多项式(不限定升序或降序排列),写一个函数实现多项式的乘法,并验证 练习 1.1.5.3 手算获得的结论是否正确。