在倍频程/Matlab函数中声明数值函数
问题如下: 在八度音阶中实施regula-falsi方法的伊利诺伊版本。 函数的签名是在倍频程/Matlab函数中声明数值函数,matlab,math,octave,Matlab,Math,Octave,问题如下: 在八度音阶中实施regula-falsi方法的伊利诺伊版本。 函数的签名是 illinois( f, % a real numeric function a, % left bound of search interval b, % right bound of search interval yAcc, % accuracy in the y-dimsension
illinois(
f, % a real numeric function
a, % left bound of search interval
b, % right bound of search interval
yAcc, % accuracy in the y-dimsension
nIter % maximum number of iterations
)
提示:
我想问:
对于这个问题,如何在Matlab函数中输入一个实数值函数
例如,假设我在x^2-4中搜索1到3之间的根,那么GUI上的函数应该是
illinois(x^2-4, 1, 3, 0.1, 1000)
我如何告诉matlab/octave这个“数值函数”x^2-4,或者我错误地解释了这个问题 看看函数句柄:
您可以使用
f=@(x)(x.^2-2)
定义函数,使用g(f,1,2,3,4)
将其传递给另一个函数,并像其他函数一样对其求值f(1)
,谢谢!工作起来很有魅力!这是唯一可行的解决方案吗?这是我唯一可以推荐的解决方案。另一种方法是将函数作为字符串传递并使用“eval”,但只总结一些缺点:奇怪的错误消息、难以调试、代码难以阅读、不支持私有函数、相同的变量名冲突以及有限的语法,因为您必须在一行中创建完整的函数。