prog
::find
Найдите операнды объектов
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
prog::find(obj
, piece
, <Depth = d
>, <Type>)
prog::find(obj, piece)
возвращает положение объекта piece
в объекте obj
MuPAD® как список. Список представляет “путь” к данному объекту. С этим списком и функциями
op
и subsop
, к объекту можно непосредственно получить доступ.
Путь к объекту piece
список, который содержит целые числа i1, ..., in
.
Значением является тот piece
in
- операнд th (in - 1)
- операнд Св. и т.д. i1
- операнд Св. данного объекта obj
.
Утвержденный по-другому, op(ex, [i1, ..., in]) = opr
.
Если искавший объект содержит несколько раз, последовательность списков возвращена.
Пустой список [ ]
когда путь определяет объект obj
самостоятельно.
Идентификатор a
первый операнд выражения:
prog::find(a + b + c, a)
Номер 1
несколько раз происходит:
prog::find(f(1, 1, 1), 1)
Идентификатор a
первый операнд второго операнда первого операнда выражения:
prog::find(b*(a - 1) + b*(x - 1), a)
Результат prog::find
может использоваться, чтобы получить доступ к элементу с op
или замените его на subsop
:
op(b*(a - 1) + b*(x - 1), [1, 2, 1]); subsop(b*(a - 1) + b*(x - 1), [1, 2, 1] = A)
Сколько вызовов return
делает sin
содержать?
nops([prog::find(sin, return)])
sin
содержит многих return
вызовы! Однако sin
функциональная среда, и пазы исследованы, также. Чтобы исследовать только основную процедуру, возьмите первый операнд функциональной среды:
nops(prog::find(op(sin, 1), return))
prog::find
может также найти все объекты данного типа:
nops(prog::find(sin, DOM_PROC, Type))
Найти только процедуры верхнего уровня, опцию Depth
может использоваться:
nops(prog::find(sin, DOM_PROC, Type, Depth = 1))
prog::find
работает с таблицами, и другой содержит, также:
T := table(1 = sin(x), 2 = cos(x), 3 = tan(x), 4 = tan(y), 5 = sin(y), 6 = cos(y)): prog::find(T, sin)
prog::find(T, "cos", Type)
В этом примере мы показываем, как управлять существующей функцией заменой. Мы используем subsop
для замены и prog::find
получить путь для замены. Здесь мы заменяем ^
- функция функциональным mypower
который дополнительно считает количество его вызовов:
f := x -> `+`(x^j $ j = 1 .. random(10)()): mypower := (b, e) -> (count := count + 1; b^e): map([prog::find(f, `^`)], X -> (f := subsop(f, X = mypower))):
После вызова функционального f
десять раз в цикле, мы видим получившееся количество вызовов ^
в count
:
count := 0: for i from 1 to 10 do f(i); end: count
|
Любой объект MuPAD |
|
Любой объект MuPAD |
|
Опция, заданная как Эта опция позволяет исследовать операнды данного объекта, которые являются областями, процедурами и функциональными средами, только с глубиной рекурсии Опция |
|
Когда опция |
Список чисел, которые определяют положение данного объекта в данном выражении или последовательности списков, если выражение несколько раз содержит объект
prog::find
может использоваться, чтобы исследовать и управлять комплексными объектами MuPAD с subsop
.