基本的环
当定义矩阵、向量或者多项式时,有时候需要,有时候是必须要指定其所在的”环”。 环是一个数学结构,在其上定义的加法和乘法有很好的性质。如果你从来没有听说过这些概念,至少要了解以下这四个常用的环:
- 整数环 {…, -1, 0, 1, 2, …},Sage中叫
ZZ; - 有理数环,即能够由整数构成的分数,Sage中叫
QQ; - 实数环,Sage中叫
RR; - 复数环,Sage中叫
CC.
你需要了解它们之间的区别,因为对于同一个多项式,处理方式完全取决于它定义在哪个环上。比如说,多项式$x^2-2$有两个根,$\pm \sqrt{2}$. 这些根不是有理数,所以如果在讨论有理系数多项式,那么该多项式不能进行因式分解,如果是实系数,就可以。所以你可能要指定环以保证得到的结果是你所期望的。下面两个命令定义有理系数多项式和实系数多项式集合。集合的名字分别是”ratpoly”和”realpoly”, 这两个名字并不重要,但是要注意变量的名字”.\
sage: ratpoly.<t> = PolynomialRing(QQ)sage: realpoly.<z> = PolynomialRing(RR)
现在我们展示$x^2-2$的因式分解。
sage: factor(t^2-2)t^2 - 2sage: factor(z^2-2)(z - 1.41421356237310) * (z + 1.41421356237310)
矩阵中存在同样的问题:矩阵的行消去形式取决于其所定义的环,还有它的特征值和特征向量的计算。更多关于多项式构造的内容请参见多项式, 更多关于矩阵的内容请参见线性代数.
符号I代表$-1$的平方根;i等同于I. 当然这不是一个有理数 :
sage: i # -1的平方根Isage: i in QQFalse
注意:如果i已经被赋了其他的值,比如循环变量,那么上面的代码不会给出预期的结果。出现这种情况,请输入 :
sage: reset('i')
来得到i的原始复数值。
定义复数的时候还有一个细节:如上所述i代表 -1 的平方根, 但是它是 -1的形式上的或符号的平方根。 调用CC(i)或CC.0返回 -1 的复的平方根。 :
sage: i = CC(i) # floating point complex numbersage: i == CC.0Truesage: a, b = 4/3, 2/3sage: z = a + b*isage: z1.33333333333333 + 0.666666666666667*Isage: z.imag() # 复部0.666666666666667sage: z.real() == a # 比较前自动进行强制类型转换Truesage: a + b2sage: 2*b == aTruesage: parent(2/3)Rational Fieldsage: parent(4/2)Rational Fieldsage: 2/3 + 0.1 # 加法运算前自动进行强制类型转换0.766666666666667sage: 0.1 + 2/3 # coercion rules are symmetric in SAGE0.766666666666667
下面是关于Sage中基本环的几个例子。上面已经提到有理数环可以用QQ,也可以用RationalField()(域是环的一种,乘法是可交换的,且所有非零元素均有乘法逆元。所有有理数可以构成一个域,但是整数不行) :
sage: RationalField()Rational Fieldsage: QQRational Fieldsage: 1/2 in QQTrue
十进制数1.2属于QQ: 正好是有理数的十进制数可以被强制转换为有理数。$\pi$和$\sqrt{2}$都不是有理数:
sage: 1.2 in QQTruesage: pi in QQFalsesage: pi in RRTruesage: sqrt(2) in QQFalsesage: sqrt(2) in CCTrue
为用于高等数学,Sage包含了其他的环,比如有限域, $p$-adic整数,代数环,多项式环和矩阵环。下面是其中一些环的构造:
sage: GF(3)Finite Field of size 3sage: GF(27, 'a') # need to name the generator if not a prime fieldFinite Field in a of size 3^3sage: Zp(5)5-adic Ring with capped relative precision 20sage: sqrt(3) in QQbar # algebraic closure of QQTrue
