Ti-базовая функция передачи в качестве аргумента другой функции
В Matlab вы можете объявить анонимную функцию и передать ее другой функции.
[y] = someFunction(@(x) x.^2 , [a bunch of numbers]);
Я хотел бы сделать что-то подобное на моем калькуляторе TI-89. У меня есть функция, которая принимает "математическую функцию" в качестве одного из аргументов, и я пытаюсь сделать это так:
myfunction(3/x,1,2)
и моя функция выглядит примерно так:
myfunction(f,xl,xu)
Func
local a,b
f(xl)→a
f(xu)→b
Return [a,b]
EndFunc
Я знаю, что могу ввести свои функции в редакторе "y=", а затем получить к ним доступ внутри функции, но мне бы очень хотелось иметь возможность вводить математическую функцию непосредственно в качестве аргумента. Как я могу это сделать?
2 ответа
Встроенный expr
Функция в TI-BASIC может быть использована для превращения строки в выражение. Вот как реализовать вашу функцию таким образом:
myfunction(f,xl,xu)
Func
Local a,b,x
xl→x
expr(f)→a
xu→x
expr(f)→b
Return [a,b]
EndFunc
Вызов вашей функции будет myfunction("3/x",1,2)
, Обязательно приложите определение f
в двойных кавычках, поэтому он рассматривается как строка.
"TI-89 BASIC не имеет первоклассных функций; хотя определения функций, хранящиеся в переменных, являются полностью динамическими, невозможно извлечь значение функции из переменной, а не вызывать ее. В этом случае мы используем оператор косвенного обращения #, который принимает строку и возвращает значение именованной переменной, чтобы использовать имя функции как нечто, что должно быть передано. "