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