.. _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