Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sage
Path: blob/develop/src/doc/zh/tutorial/tour_rings.rst
4086 views
.. _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