我想用梯形积分法将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
那个错误的根源是什么?
您必须使用功能柄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)
来评估该功能。