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