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.
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)
Этот пример показывает, что expr
работает рекурсивно над выражениями. Все подвыражения, которые являются доменными элементами, преобразованы в выражения. Конструкция с hold(_plus)(..)
необходима, поскольку x + i(1)
оценил бы к FAIL
:
i := Dom::IntegerMod(7): hold(_plus)(x, i(1)); expr(%)
Функциональный series
возвращает элемент доменного Series::Puiseux
, который не является основной областью:
s := series(sin(x), x); domtype(s)
Используйте expr
, чтобы преобразовать результат в элемент доменного типа DOM_EXPR
:
e := expr(s); domtype(e)
Обратите внимание на то, что информация о термине порядка потеряна после преобразования.
expr
не оценивает свой результат. В этом примере полиномиальный p
имеет параметр a
и глобальная переменная, a
имеет значение. expr
, примененный на полиномиальный p
, возвращает выражение, содержащее a
. Если вы хотите вставить значение использования a
функциональный eval
:
p := poly(a*x, [x]): a := 2: expr(p); eval(%)
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)
Если подобъект принадлежит области без слота "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