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).
Элементы 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(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(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)
.