使用具有另一个函数作为参数的函数:

时间:2020-02-13 17:44:31

标签: matlab

我想用梯形积分法将x ^ 2从2积分到4。为此,我定义了一个带有四个参数的函数trap

function y = trap( fn, a, b, h )
    n = (b-a)/h;
    x = a + [1:n-1]*h;
    y = h/2*(feval(fn, a) + feval(fn, b) + 2*sum(feval(fn,x)));

和函数f

function y= f(x)
    y=x^2
end

现在,通过执行trap(f,2,4,0.1),我得到以下错误:

Not enough input arguments.

Error in f (line 2)
    y=x^2

该错误的根源是什么?

1 个答案:

答案 0 :(得分:2)

您必须使用函数句柄trap而不是@f来调用f

trap(@f,2,4,0.1)

function y = trap( fn, a, b, h )
  n = (b-a)/h;
  x = a + [1:n-1]*h;
  y = h/2*(fn(a) + fn(b) + 2*sum(fn(x)));
end

function y= f(x)
  y = x.^2;
end

如预期的那样

ans =
    18.67

此外,您还需要在f(x)中进行逐元素乘法来计算y = x.^2

不需要feval。您可以直接调用fn(a)来评估函数。

相关问题