.. _section-rings:
基本环
======
在定义矩阵、向量或多项式时,指定它们所定义的“环”非常有用,有时甚至是必须的。
*环* 是一种数学结构,具有良好的加法和乘法概念;如果你以前从未听说过它们,你可能只需要了解以下四种常用的环:
* 整数 `\{..., -1, 0, 1, 2, ...\}`,在 Sage 中称为 ``ZZ``。
* 有理数 -- 即分数或整数的比率 -- 在 Sage 中称为 ``QQ``。
* 实数,在 Sage 中称为 ``RR``。
* 复数,在 Sage 中称为 ``CC``。
了解这些区别是必要的,因为同一个多项式可能会根据它所定义的环而有所不同。
例如,多项式 `x^2-2` 有两个根,`\pm \sqrt{2}`。
这些根不是有理数,所以如果你处理的是具有有理系数的多项式,那么这个多项式无法因式分解。
但使用实系数,它便可以因式分解。
因此,你可能需要指定环以确保获得预期的信息。
以下两个命令分别定义了具有有理系数和实系数的多项式集。
集合被命名为 "ratpoly" 和 "realpoly",但这里并不重要;
然而,请注意字符串 ".<t>" 和 ".<z>" 分别命名了两种情况下使用的 *变量*。::
sage: ratpoly.<t> = PolynomialRing(QQ)
sage: realpoly.<z> = PolynomialRing(RR)
现在我们来演示 `x^2-2` 的因式分解:
.. link
::
sage: factor(t^2-2)
t^2 - 2
sage: factor(z^2-2)
(z - 1.41421356237310) * (z + 1.41421356237310)
类似的情况也适用于矩阵:矩阵的行简化形式可能取决于它所定义的环,以及它的特征值和特征向量。
有关构造多项式的更多信息,请参见 :ref:`section-poly`,
有关矩阵的更多信息,请参见 :ref:`section-linalg`。
符号 ``I`` 表示 `-1` 的平方根;``i`` 是 ``I`` 的同义词。显然,它不是一个有理数::
sage: i # square root of -1
I
sage: i in QQ
False
注意:如果变量 ``i`` 已被赋予其他值,例如,如果它被用作循环变量,则上述代码可能无法按预期工作。如果是这种情况,请输入::
sage: reset('i')
以获得 ``i`` 的原始复数值。
定义复数时有一个需要注意的地方:如上所述,符号 ``i`` 表示 `-1` 的平方根,
但是它是 `-1` 的*形式*平方根,是一个代数数。
调用 ``CC(i)`` 或 ``CC.0`` 或 ``CC.gen(0)`` 返回 `-1` 的*复数*平方根。
通过所谓的强制转换,可以进行涉及不同类型数字的算术运算,请参见 :ref:`section-coercion`。
::
sage: i = CC(i) # floating point complex number
sage: i == CC.0
True
sage: a, b = 4/3, 2/3
sage: z = a + b*i
sage: z
1.33333333333333 + 0.666666666666667*I
sage: z.imag() # imaginary part
0.666666666666667
sage: z.real() == a # automatic coercion before comparison
True
sage: a + b
2
sage: 2*b == a
True
sage: parent(2/3)
Rational Field
sage: parent(4/2)
Rational Field
sage: 2/3 + 0.1 # automatic coercion before addition
0.766666666666667
sage: 0.1 + 2/3 # coercion rules are symmetric in Sage
0.766666666666667
以下是 Sage 中一些基本环的更多示例。
如上所述,有理数环可以使用 ``QQ`` 或 ``RationalField()`` 来引用
(*域* 是满足乘法交换律的环,且每个非零元素在该环中都有一个倒数,因此有理数构成一个域,但整数不构成)::
sage: RationalField()
Rational Field
sage: QQ
Rational Field
sage: 1/2 in QQ
True
十进制数 ``1.2`` 被认为是 `QQ`` 中的数:
也可以“强制转换”成有理数的十进制数被认为是有理数(参见 :ref:`section-coercion`)。
数字 `\pi` 和 `\sqrt{2}` 不是有理数::
sage: 1.2 in QQ
True
sage: pi in QQ
False
sage: pi in RR
True
sage: sqrt(2) in QQ
False
sage: sqrt(2) in CC
True
为了在高等数学中使用,Sage 还具备其他环,例如有限域,`p`-adic 整数,代数数环,多项式环和矩阵环。
以下是其中一些的构造::
sage: GF(3)
Finite Field of size 3
sage: GF(27, 'a') # need to name the generator if not a prime field
Finite Field in a of size 3^3
sage: Zp(5)
5-adic Ring with capped relative precision 20
sage: sqrt(3) in QQbar # algebraic closure of QQ
True