Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 971a3706a7676677c8b7bbdffc0c4b9b > files > 243

sagemath-doc-ru-5.9-9.fc18.noarch.rpm

.. _section-rings:

Основные кольца
===============

При объявлении матриц, векторов или полиномов для них иногда полезно, 
а иногда и необходимо определять "кольца", на которых они определены. 
*Кольцо* - это математическая конструкция, в которой существуют 
определенные понятия суммы и произведения. Если вы никогда о них не 
слышали, то вам, вероятно, достаточно знать об этих четырех часто 
используемых кольцах:

* целые числа `\{..., -1, 0, 1, 2, ...\}`, называемые ``ZZ`` в Sage.
* рациональные числа -- например, дроби или отношения целых чисел –-, 
  называемые ``QQ`` в Sage.
* вещественные числа, называемые ``RR`` в Sage.
* комплексные числа, называемые ``CC`` в Sage.

Знание различий между данными кольцами очень важно, так как один и 
тот же полином, определенный в разных кольцах, может вести себя 
по-разному. Например, полином `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)

Символ ``I`` обозначает квадратный корень из :math:`-1`; ``i`` — это 
то же самое, что ``I``. Конечно, это не рациональное число:

::

    sage: i  # квадратный корень из -1
    I     
    sage: i in QQ
    False

Заметка: Вышеописанный код может работать не так, как задумывалось, 
если переменной ``i`` было задано другое значение, например, если 
оно было использовано, как счетчик для цикла. В таком случае введите

::

    sage: reset('i')

для того, чтобы получить изначальное комплексное значение ``i``.

Есть одна тонкость в задании комплексных чисел: как описано выше, 
символ ``i`` представляет квадратный корень из `-1`, но это *формальный* 
или *символичный* квадратный корень из `-1`. Вызов ``CC(i)`` или 
``CC.0`` вернет *комплексный* квадратный корень из `-1`.

::

    sage: i = CC(i)       # комплексное число с плавающей запятой
    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()        # мнимая часть
    0.666666666666667
    sage: z.real() == a   # автоматическое приведение типов перед сравнением
    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       # автоматическое приведение типов перед сложением
    0.766666666666667
    sage: 0.1 + 2/3       # приведение типов в Sage симметрично
    0.766666666666667

Далее следуют примеры базовых колец в Sage. Как отмечено выше, 
кольцо рациональных чисел обозначается как ``QQ``, а также как 
``RationalField()`` (*поле* - это кольцо, в котором произведение 
является коммутативным и в котором каждый ненулевой элемент имеет 
обратную величину в этом кольце (рациональные числа являются полем, 
а целые - нет):

::

    sage: RationalField()
    Rational Field
    sage: QQ
    Rational Field
    sage: 1/2 in QQ
    True

Десятичное число ``1.2`` рассматривается как ``QQ``: десятичные числа, 
которые также являются рациональными, могут быть "приведены" к 
рациональным числам. Числа `\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`-адические числа, кольцо 
алгебраических чисел, полиномиальные кольца и матричные кольца. Далее 
показаны некоторые из них:
::

    sage: GF(3)
    Finite Field of size 3
    sage: GF(27, 'a')  # если поле не простое, нужно задать имя генератора
    Finite Field in a of size 3^3
    sage: Zp(5)
    5-adic Ring with capped relative precision 20
    sage: sqrt(3) in QQbar # алгебраическое замыкакие QQ
    True