has
Проверяйте, происходит ли объект в другом объекте
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
has(object1
,object2
) has(object1
,l
)
has(object1, object2)
проверки, ли object2
происходит синтаксически в object1
.
has
быстрый тест для существования подобъектов или подвыражений. Это работает синтаксически, т.е. математически эквивалентные объекты считаются равными, только если они синтаксически идентичны. Смотрите Пример 2.
Если object1
выражение, затем has(object1, object2)
тесты, ли object1
содержит object2
как подвыражение. Только полные подвыражения и объекты, происходящие в 0th операнде подвыражения, найдены (см. Пример 1).
Если object1
контейнер, затем has
проверки, ли object2
происходит в записи object1
. Смотрите пример 5.
В этом контексте интервал с плавающей точкой рассматривается контейнером для (бесконечное число) комплексные числа и has
проверки, является ли данный номер в интервале. Смотрите Пример 4.
Если второй аргумент является списком или набором l
, затем has
возвращает TRUE
если по крайней мере один из элементов в l
происходит в object1
(см. Пример 3). В частности, если l
пустой список или пустое множество, затем возвращаемым значением является FALSE
.
Если object1
элемент области с "has"
паз, затем стандартная программа паза вызвана теми же аргументами, и ее результат возвращен. Если область не имеет такого паза, то FALSE
будет возвращен. Смотрите Пример 7.
Если has
вызван списком или установлен в качестве второго аргумента, затем "has"
паз области object1
называется для каждого объекта списка или набора. Когда первый объект найден, что это происходит в object1
, оценка отключена и TRUE
возвращен. Если ни один из объектов не происходит в object1
ложь
будет возвращен.
Данное выражение имеет x
как операнд:
has(x + y + z, x)
Обратите внимание на то, что x + y
не полное подвыражение. Только x
Y
Z
и x + y + z
полные подвыражения:
has(x + y + z, x + y)
Однако has
также находит объекты в 0th операнде подвыражения:
has(x + sin(x), sin)
Каждый объект происходит сам по себе:
has(x, x)
has
работает чисто синтаксическим способом. Несмотря на то, что эти два выражения y*(x + 1)
и y*x + y
математически эквивалентны, они отличаются синтаксически:
has(sin(y*(x + 1)), y*x + y), has(sin(y*(x + 1)), y*(x + 1))
Комплексные числа не рассматриваются как атомарные объекты:
has(2 + 5*I, 2), has(2 + 5*I, 5), has(2 + 5*I, I)
В отличие от этого рациональные числа считаются атомарными:
has(2/3*x, 2), has(2/3*x, 3), has(2/3*x, 2/3)
Если второй аргумент является списком или набором, has
проверки, происходит ли одна из записей в первом аргументе:
has((x + y)*z, [x, t])
Операнды 0th подвыражений проверяются также:
has((a + b)*c, {_plus, _mult})
На интервалах с плавающей точкой, has
выполняет проверку включения, не только тестируя границы:
has(1...3, 1)
has(1...3, 2.7182), has(1...3, exp(1)), has(1...3, PI)
has(1...(3+I), [2, ln(3)])
has
работает на списки, наборы, таблицы, массивы и hfarrays:
has([sin(f(a) + 2), cos(x), 3], {f, g})
has({a, b, c, d, e}, {a, z})
has(array(1..2, 1..2, [[1, 2], [3, 4]]), 2)
Для массива A
, команда has(A,NIL)
проверки, имеет ли массив какие-либо неинициализированные записи:
has(array(1..2, 1 = x), NIL), has(array(1..2, [2, 3]), NIL)
Для таблиц, has
индексы проверок, записи, а также внутренние операнды таблицы, данной уравнениями формы index=entry
:
T := table(a = 1, b = 2, c = 3): has(T, a), has(T, 2), has(T, b = 2)
has
работает синтаксически. Несмотря на то, что переменная x
не происходит математически в постоянном полиномиальном p
в следующем примере, идентификатор x
происходит синтаксически в p
, а именно, во втором операнде:
delete x: p := poly(1, [x]): has(p, x)
Второй аргумент может быть произвольным объектом MuPAD®, даже от пользовательской области:
T := newDomain("T"): e := new(T, 1, 2); f := [e, 3];
has(f, e), has(f, new(T, 1))
Если первый аргумент has
принадлежит области без "has"
паз, затем has
всегда возвращает FALSE
:
has(e, 1)
Пользователи могут overloadhas
для их собственных областей. Для рисунка мы предоставляем доменный T
с "has"
паз, который помещает внутренние операнды его первого аргумента в списке и вызывает has
для списка:
T::has := (object1, object2) -> has([extop(object1)], object2):
Если мы теперь вызываем has
с объектом e
из доменного типа T
, стандартная программа паза T::has
вызывается:
has(e, 1), has(e, 3)
Стандартная программа паза также называется если объект доменного типа T
происходит синтаксически в первом аргументе:
has(f, 1), has(f, 3)
object1