0

(我已经看到了类似问题的一些答案,但他们并没有真正回答所问的问题,所以我试图比其他问题更好地解释它)

标题信息量不大,但我几乎正在尝试编写一个 matlab 脚本,以完成二分法的各种重复,(对我的问题并不重要,但它是一种找到数学函数根的方法。)

我遇到的问题是,目前我不知道如何为不同的功能调用我的脚本。目前,我必须将每个函数写入脚本,并且对于每个新函数,我都必须更改脚本。

我想像bisection(f(x),a,b,N)(不要担心a,b,N)那样调用我的函数,以便我可以在调用它时选择函数,而不是在脚本本身中。但是当我把 myf(x)写成类似的东西时x^2 +x,它会尝试对不存在的 ax 进行评估并返回错误。无论如何要调用 x 的函数并将其保留为函数,以便以后我可以以不同的值对其进行评估。

   e.g. f(2)=6, f(a)=a^2 +a, f(b)=b^2 +b.
4

2 回答 2

3

您应该使用函数句柄

让我们举个例子:

%Here f is the function you want to call
function M = testfun(f,x)
    M = f(x);
end

然后,要调用它,您将函数句柄作为参数

f = @(x) magic(x);
M = testfun(f,3)
M =

     8     1     6
     3     5     7
     4     9     2
于 2015-07-20T09:19:11.230 回答
1

如果你的函数f是一个“简单”的函数,这似乎是使用匿名函数的地方

如果您确保它们始终具有相同的输入(f(x) 始终),那么您可以将函数创建为:

f=@(x)(x.^2+x+2);

或者 ...

f=@(x)(argtg(x)+log10(x.^2));

然后调用你的函数f作为参数传递。在里面bisection你可以f通过f(3),或任何数字调用,它会返回结果。

于 2015-07-20T09:22:28.670 回答