Ti-基本传递函数作为另一个函数的参数

问题描述 投票:0回答:3

在 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=”编辑器中输入我的函数,然后在函数内访问它们,但我真的希望能够直接输入数学函数作为参数。 我该怎么做?

function ti-basic
3个回答
3
投票

TI-BASIC 中内置的

expr
函数可用于将字符串转换为表达式。以下是如何以这种方式实现您的功能:

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
的定义括在双引号中,以便将其视为字符串。


1
投票

“TI-89 BASIC 没有一流函数;虽然存储在变量中的函数定义是完全动态的,但不可能从变量中提取函数值而不是调用它。在这种情况下,我们使用间接寻址运算符 #,它接受一个字符串并返回指定变量的值,以使用函数的名称作为要传递的内容。”

http://rosettacode.org/wiki/Higher-order_functions#TI-89_BASIC


0
投票

完全可以使用巧妙的技巧将值传递给函数(至少在我的 cas 版本上)。 只要您知道变量的名称,就可以使用给定的 that 运算符将值替换到函数中。你可以用 f|x=1 代替 f(1),因为它将是函数,但考虑到 x 是 1,将其替换。

myfunction(f,xl,xu)
Func
local a,b
a:=f|x=xl
b:=f|x=xu
Return [a,b]
EndFunc

但是,如果您希望变量能够是 x 之外的其他内容,您可以将其传入:

myfunction(f,var,xl,xu)
Func
local a,b
a:=f|var=xl
b:=f|var=xu
Return [a,b]
EndFunc
© www.soinside.com 2019 - 2024. All rights reserved.