我想用梯形积分法将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
该错误的根源是什么?
答案 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)
来评估函数。