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 не имеет первоклассных функций; хотя определения функций, хранящиеся в переменных, являются полностью динамическими, невозможно извлечь значение функции из переменной, а не вызывать ее. В этом случае мы используем оператор косвенного обращения #, который принимает строку и возвращает значение именованной переменной, чтобы использовать имя функции как нечто, что должно быть передано. "

http://rosettacode.org/wiki/Higher-order_functions

Другие вопросы по тегам