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ложь будет возвращен.

Примеры

Пример 1

Данное выражение имеет x как операнд:

has(x + y + z, x)

Обратите внимание на то, что x + y не полное подвыражение. Только xYZ и x + y + z полные подвыражения:

has(x + y + z, x + y)

Однако has также находит объекты в 0th операнде подвыражения:

has(x + sin(x), sin)

Каждый объект происходит сам по себе:

has(x, x)

Пример 2

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)

Пример 3

Если второй аргумент является списком или набором, has проверки, происходит ли одна из записей в первом аргументе:

has((x + y)*z, [x, t])

Операнды 0th подвыражений проверяются также:

has((a + b)*c, {_plus, _mult})

Пример 4

На интервалах с плавающей точкой, 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)])

Пример 5

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)

Пример 6

has работает синтаксически. Несмотря на то, что переменная x не происходит математически в постоянном полиномиальном p в следующем примере, идентификатор x происходит синтаксически в p, а именно, во втором операнде:

delete x: p := poly(1, [x]):
has(p, x)

Пример 7

Второй аргумент может быть произвольным объектом 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, object2

Произвольные объекты MuPAD

l

Список или набор

Возвращаемые значения

Любой TRUE или FALSE

Перегруженный

object1

Смотрите также

Функции MuPAD