我想用梯形积分方法将 x^2 从 2 积分到 4。为此,我定义了一个函数trap
,它接受 4 个参数:
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
该错误的根源是什么?
你必须使用函数句柄@f
调用trap
,而不是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)
来计算函数。