在倍频程/Matlab函数中声明数值函数

在倍频程/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

问题如下:

在八度音阶中实施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
          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”,但只总结一些缺点:奇怪的错误消息、难以调试、代码难以阅读、不支持私有函数、相同的变量名冲突以及有限的语法,因为您必须在一行中创建完整的函数。