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