DOM_SET
Наборы объектов
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
Набор типа DOM_SET
может сохранить произвольное конечное число произвольных объектов MuPAD®, за исключением последовательностей и несуществующего объекта.
В MuPAD конечные множества реализованы с типом данных DOM_SET
. Наборам не упорядочивают наборы произвольных объектов с одинаковыми объектами, появляющимися только однажды. Последовательности (объекты, разделенные запятыми), “сглажены”, когда помещено в набор, т.е. вместо последовательности, ее элементы помещаются в набор. Несуществующий объект обработан как пустая последовательность, т.е. это не приводит к элементу в наборе.
Наборы могут быть пустыми. Пустое множество отображено как ∅.
Используя набор, когда функциональный символ создает набор, полученный при помощи каждого элемента как функциональный символ для операндов, используемых, т.е. результаты {f, g}(x, y)
в {f(x, y), g(x, y)}
.
Предположение, что S является набором, число элементов в S может быть получено путем вызова nops(S)
.
Отдельные элементы набора могут быть получены двумя тонко различными способами:
Используя индексный доступ, как в S[2]
, возвращает n-th элемент набора, считаемого в порядке, когда набор появляется на экране. Это - потенциально медленная операция, поскольку она требует определения что порядок для каждого доступа, т.е. сортировка набора.
Отрицательные индексы приняты, рассчитав от конца последовательности элементов. Попытка получить доступ к элементу “вне” набора или S[0]
повышает ошибку.
Используя op
, как в op(S, 2)
, возвращает n-th элемент набора, считаемого во внутреннем порядке. Это - быстрая операция (O (n), чтобы получить n-th элемент, независимо от размера S), но внутренний порядок двух математически идентичных наборов может полностью отличаться, и почти любая операция, изменяющая набор, может полностью изменить свой внутренний порядок, таким образом, никакие предположения не должны быть сделаны.
Оба из этих путей также принимают области значений как индексы. S[2..4]
возвращает набор {S[2], S[3], S[4]}
, в то время как op(S, 2..4)
возвращает последовательность op(S, 2), op(S, 3), op(S, 4)
.
Выполнить итерации по всем элементам набора без определенного порядка, с помощью map
или оператора $
высоко превосходит использование for
- цикл с любым из вышеупомянутых методов доступа элемента. Если for
- цикл требуется, необходимо использовать форму for s in S
, который имеет линейную сложность также.
Обычные операции присвоения обеспечиваются как инфиксные операции: union
, minus
, intersect
.
Чтобы изменить элемент набора, предпочтительный метод состоит в том, чтобы удалить его с помощью minus
и добавив новый с помощью union
. Также возможно заменить элемент на subsop
; заменение элемента с null()
удаляет его из набора. (Обратите внимание на то, что subsop
не делает присвоения побочного эффекта.)
Функциональный contains
проверяет на вхождение данного объекта MuPAD в наборе; см. также оператор in
для той же цели, но с различной семантикой оценки. select
и split
могут использоваться, чтобы извлечь те элементы от набора, выполняющего произвольный предикат.
Чтобы получить список элементов набора, используйте coerce
. Чтобы получить такой список с элементами, упорядоченными таким же образом, как распечатано на экране, используйте DOM_SET::sort(S)
.
Операнды набора являются его элементами во внутреннем порядке. (См. выше для деталей.)
Наборы упорядочены для вывода.
Самый прямой способ создать набор состоит в том, чтобы поместить последовательность объектов MuPAD (разделенный запятыми) между фигурными скобками, как в {1, 2, 3}.