Dom
::Product
Гомогенные прямые продукты
Синтаксис
Доменное создание
Dom::Product(Set
, <n
>)
Dom::ProductSetn(e1, e2, …
, en
)
Dom::ProductSetn(List
)
Описание
Dom::Product(Set, n)
n
- сверните прямой продукт доменного Set.
Dom::Product(Set, n)(e1, e2, ..., en)
создает n
- кортеж (e 1, e 2, …, e n).
Объекты e1
, e2
..., en
должно быть конвертируемо в элементы доменного Set
, в противном случае сообщение об ошибке выпущено.
Dom::Product(Set, n)(List)
создает n
- кортеж (l 1, l 2, …, l n).
Затем
элементы l i List
должно быть конвертируемо в элементы доменного Set
, в противном случае сообщение об ошибке выпущено.
Список должен состоять из точно n
элементы, в противном случае сообщение об ошибке выпущено.
Следующее к определению прямого продукта многие методы, такие как "D"
и "_negate"
только сопоставьте операцию со всеми компонентами кортежа.
Большая часть n
- методы ary как "_plus"
и "_mult"
примените операцию покомпонентно к кортежам.
Примеры
Пример 1
Задайте 3-кратный прямой продукт рациональных чисел:
и создайте элементы:
Мы используем стандартные арифметические операторы, чтобы вычислить с такими кортежами:
Некоторые системные функции были перегружены для таких элементов, таких как diff
, map
или zip
(см. описание соответствующих методов "diff"
, "map"
и "zip"
выше).
Например, чтобы разделить каждый компонент a
2 мы входим:
Заключенный в кавычки символьный `/`
другое обозначение для функционального _divide
, функциональная форма оператора деления /
.
Будьте осторожны, что функция отображения возвращает элементы области, продукт задан. Это не проверяется функциональным map
(по причинам КПД), и может привести к “недопустимым” кортежам. Например:
Но компоненты b
более не рациональные числа!
Записи
"dimen" | размерность Dom::Product(Set, n) , который равен n . |
"coeffRing" | доменный S . |
"один" | n - кортеж (Set::one, Set::one, ..., Set::one) . Эта запись только существует если Set моноид, т.е. область категории Cat::Monoid .
|
"нуль" | n - кортеж (Set::zero, Set::zero, ..., Set::zero) . Эта запись только существует если Set Абелева группа, т.е. область категории Cat::AbelianGroup .
|
Методы
развернуть все
Математические методы
_divide
— Разделите кортежи
_divide(x
, y
)
Этот метод только существует если Set
(мультипликативная) группа, т.е. область категории Cat::Group
.
Этот метод перегружает функциональный _divide
для n
- кортежи, т.е. можно использовать его в форме x / y
, или в функциональном обозначении: _divide(x, y)
.
_invert
— Вычислите инверсию кортежа
_invert(x
)
Этот метод только существует если Set
(мультипликативная) группа, т.е. область категории Cat::Group
.
Этот метод перегружает функциональный _invert
для n
- кортежи, т.е. можно использовать его в форме 1/x
или x^(-1)
, или в функциональном обозначении: _inverse(x)
.
_less
— Меньше отношение
_less(x
, y
)
Реализация обеспечивается только если Set
упорядоченное множество, т.е. область категории Cat::OrderedSet
.
Этот метод перегружает функциональный _less
для n
- кортежи, т.е. можно использовать его в форме x < y
, или в функциональном обозначении: _less(x, y)
.
_mult
— Кортежи мультиплие кортежами и скалярами
_mult(x
, y, …
)
Если x
не имеет типа Dom::Product(Set,n)
, это рассматривается как скаляр, который умножается к каждому компоненту n
- кортеж y
(и наоборот).
Этот метод только существует если Set
полугруппа, т.е. область категории Cat::SemiGroup
.
Этот метод также обрабатывает больше чем два аргумента. В этом случае список аргументов разделен в две части той же длины, которая оба умножаются с функциональным _mult
. Эти два заканчиваются, умножаются снова с _mult
чей результат затем возвращен.
Этот метод перегружает функциональный _mult
для n
- кортежи, т.е. можно использовать его в форме x * y
, или в функциональном обозначении: _mult(x, y)
.
_negate
— Инвертируйте n
- кортеж
_negate(x
)
Этот метод перегружает функциональный _negate
для n
- кортежи, т.е. можно использовать его в форме -x
, или в функциональном обозначении: _negate(x)
.
_power
i
степень th кортежа
_power(x
, i
)
Реализация обеспечивается только если Set
полугруппа, т.е. область категории Cat::SemiGroup
.
Этот метод перегружает функциональный _power
для n
- кортежи, т.е. можно использовать его в форме x^i
, или в функциональном обозначении: _power(x, i)
.
_plus
— Добавьте кортежи
_plus(x
, y, …
)
Сумма двух n
- кортежи x и y заданы покомпонентно как (x 1 + y 1, …, x n + y n).
Этот метод перегружает функциональный _plus
для n
- кортежи, т.е. можно использовать его в форме x + y
, или в функциональном обозначении: _plus(x, y)
.
D
— Дифференциальный оператор
D(x
)
Реализация обеспечивается только если Set
звонок частного дифференциала, т.е. область категории Cat::PartialDifferentialRing
.
Этот метод перегружает оператор D
для n
- кортежи, т.е. можно использовать его в форме D(x)
.
diff
— Дифференцирование n
- кортежи
diff(a
, x
)
Этот метод перегружает функциональный diff
для n
- кортежи, т.е. можно использовать его в форме diff(a, x)
.
Реализация обеспечивается только если Set
звонок частного дифференциала, т.е. область категории Cat::PartialDifferentialRing
.
equal
— Протестируйте на равенстве n
- кортежи
intmult
— Кратное кортеж
intmult(x
, k
)
Реализация обеспечивается только если Set
Абелева полугруппа, т.е. область категории Cat::AbelianSemiGroup
.
iszero
— Протестируйте на нуле
iszero(x
)
Обратите внимание на то, что может быть больше чем одно представление нулевого n
- кортеж, если R
не имеет Ax::canonicalRep
.
Этот метод перегружает функциональный iszero
для n
- кортежи, т.е. можно использовать его в форме iszero(x)
.
random
— Случайная генерация кортежа
Методы доступа
_index
— Индексация кортежа
_index(x
, i
)
См. также метод "op"
.
Этот метод перегружает функциональный _index
для n
- кортежи, т.е. можно использовать его в форме x[i]
, или в функциональном обозначении: _index(x, i)
.
map
— Примените функцию к компонентам кортежа
map(x
, func
,
<expr, …
>)
Примечание
Обратите внимание на то, что значения функции не будут неявно преобразованы в элементы доменного Set
. Нужно заботиться, что вызовы функции возвращают элементы доменного типа Set
.
Этот метод перегружает функциональный map
для n
- кортежи, т.е. можно использовать его в форме map(x, func, ...)
.
mapCanFail
— Примените функцию к компонентам кортежа
mapCanFail(x
, func
,
<expr, …
>)
op
— Компонент кортежа
op(x
, i
)
op(x
)
См. также метод "_index"
.
Этот метод перегружает функциональный op
для n
- кортежи, т.е. можно использовать его в форме op(x, i)
.
Возвращает последовательность всех компонентов x
.
set_index
— Присвоение компонентов кортежа
set_index(x
, i
, e
)
См. также метод "subsop"
.
Примечание
Этот метод не проверяет ли e
имеет правильный тип.
Этот метод перегружает индексируемое присвоение _assign
для n
- кортежи, т.е. можно использовать его в форме x[i] := e
, или в функциональном обозначении: _assign(x[i], e)
.
sort
— Сортировка компонентов кортежа
sort(x
)
Этот метод перегрузки функционирует sort
для кортежей, т.е. можно использовать его в форме sort(x)
.
subs
— Замена компонентов кортежа
subs(x, …
)
Примечание
Объекты, полученные заменами, не будут неявно преобразованы в элементы доменного Set
. Нужно заботиться, что замены возвращают элементы доменного Set
.
Этот метод перегружает функциональный subs
для n
- кортежи, т.е. можно использовать его в форме subs(x, ...)
. Смотрите subs
для деталей и вызывающих последовательностей.
testEach
— Проверяйте каждый компонент на определенное условие
testEach(x
, func
,
<expr, …
>)
func
должен возвратить любой TRUE
или FALSE
, в противном случае ошибка периода выполнения повышена.
testOne
— Проверяйте компонент на определенное условие
testOne(x
, func
,
<expr, …
>)
func
должен возвратить любой TRUE
или FALSE
, в противном случае ошибка периода выполнения повышена.
zip
— Объедините кортежи покомпонентно
zip(x
, y
, func
,
<expr, …
>)
Примечание
Значения функции не будут неявно преобразованы в элементы доменного Set
. Нужно заботиться, что вызовы функции возвращают элементы доменного Set
.
Этот метод перегружает функциональный zip
для n
- кортежи, т.е. можно использовать его в форме zip(x, y, func, ...)
.
zipCanFail
— Объедините кортежи покомпонентно
zipCanFail(x
, y
, func
,
<expr, …
>)
Методы преобразования
convert
— Преобразование в n
- кортеж
convert(List
)
convert(e1
, <e2,
…
>)
FAIL
возвращен, если это преобразование перестало работать.
Попытки преобразовать аргументы в элемент доменного Dom::Product(Set, n)
. Это может быть сделано если точно n
аргументы даны, где каждый аргумент может быть преобразован в элемент доменного Set
.
FAIL
возвращен, если это преобразование перестало работать.
expr
— Преобразование в объект области ядра
expr(x
)
Этот метод перегружает функциональный expr
для n
- кортежи, т.е. можно использовать его в форме expr(x)
.