expr

Преобразуйте в элемент основной области

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

expr(object)

Описание

expr(object) преобразовывает object в элемент основной области, такой, что все подобъекты являются элементами основных областей также.

expr является функцией преобразования типов, для преобразования элемента более комплексной области библиотеки, такой как полином или матрица, в элемент области простого ядра.

expr продолжает рекурсивно, такой, что все подобъекты возвращенного объекта являются элементами основных областей, или бесконечностями или undefined. Смотрите Пример 1 и Пример 2.

Эти два специальных объекта infinity и complexInfinity переводятся в идентификаторы с тем же именем expr. Оценка этих идентификаторов приводит к исходным объектам. Смотрите Пример 1.

Если object уже принадлежит основной области кроме DOM_POLY, то expr только применяется рекурсивно к операндам object, если таковые имеются.

Если object является полиномом доменный типDOM_POLY, то expr применяется рекурсивно к коэффициентам object, и впоследствии результат преобразован в идентификатор, номер или выражение. Смотрите Пример 1.

Если object принадлежит области библиотеки T со слотом "expr", то соответствующая стандартная программа слота, которой T::expr вызван object в качестве аргумента и результата, возвращена.

Это может использоваться, чтобы расширить функциональность expr к элементам пользовательских областей. Если стандартная программа слота не может выполнить преобразование, она должна возвратить FAIL. Смотрите Пример 6.

Если доменный T не имеет слота "expr", то expr возвращает FAIL.

Результат expr не оценен далее. Используйте eval, чтобы оценить его. Смотрите Пример 4.

Примеры

Пример 1

expr преобразовывает полином в выражение, идентификатор или номер:

expr(poly(x^2 + y, [x])), expr(poly(x)), expr(poly(2, [x]));
map(%, domtype)

expr также работает с объектами infinity, complexInfinity и undefined:

expr(infinity), expr(complexInfinity), expr(undefined);
map(%, domtype)

Пример 2

Этот пример показывает, что expr работает рекурсивно над выражениями. Все подвыражения, которые являются доменными элементами, преобразованы в выражения. Конструкция с hold(_plus)(..) необходима, поскольку x + i(1) оценил бы к FAIL:

i := Dom::IntegerMod(7):
hold(_plus)(x, i(1));  expr(%)

Пример 3

Функциональный series возвращает элемент доменного Series::Puiseux, который не является основной областью:

s := series(sin(x), x);
domtype(s)

Используйте expr, чтобы преобразовать результат в элемент доменного типа DOM_EXPR:

e := expr(s); domtype(e)

Обратите внимание на то, что информация о термине порядка потеряна после преобразования.

Пример 4

expr не оценивает свой результат. В этом примере полиномиальный p имеет параметр a и глобальная переменная, a имеет значение. expr, примененный на полиномиальный p, возвращает выражение, содержащее a. Если вы хотите вставить значение использования a функциональный eval:

p := poly(a*x, [x]):  a := 2:  expr(p);  eval(%)

Пример 5

A является элементом типа Dom::Matrix(Dom::Integer):

A := Dom::Matrix(Dom::Integer)([[1, 2], [3, 2]]);  
domtype(A)

В этом случае expr преобразовывает A в элемент типа DOM_ARRAY:

a := expr(A); domtype(a)

Однако не гарантируется, что результат имеет тип DOM_ARRAY в будущих версиях MuPAD® также. Например, внутреннее представление матриц может измениться в будущем. Используйте coerce, чтобы запросить преобразование в конкретный тип данных:

coerce(A, DOM_ARRAY)

Вложенный list является альтернативным представлением для матрицы:

coerce(A, DOM_LIST)

Пример 6

Если подобъект принадлежит области без слота "expr", то expr возвращает FAIL:

T := newDomain("T"):
d := new(T, 1, 2);
expr(d)

Можно расширить функциональность expr к собственным областям. Мы демонстрируем это для доменного T путем реализации слота "expr", который возвращает список с внутренними операндами его аргумента:

T::expr := x -> [extop(x)]:

Если теперь expr сталкивается с подобъектом типа T во время рекурсивного процесса, это вызывает стандартную программу слота T::expr с подобъектом в качестве аргумента:

expr(d), expr([d, 3])

Параметры

object

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

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

Элемент основной области.

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

object

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

Функции MuPAD