梯形法则 Matlab

Trapezodial Rule Matlab

我正在完成 class 的作业。我们要按照流程图来查找陷阱规则代码的值。我相信问题出在我的主要代码上。

我不确定我的函数代码或我的主要代码是否有问题,任何帮助将不胜感激。

当我 运行 部分时,它显示函数作为答案

下面是我的主脚本代码:

f = @(x)  (4*sin (x)) / (exp(2*x)) ;

trap_haskell(f , 0 , 3 , 7)

剩下的就是我的梯形规则代码

function [f] = trap_haskell(f, a, b, n)


x = a ;
h = (b - a) / n ;
s = f (a) ;

for k=1:1:n-1 
    x = x + h ;
    s = s + 2 * f(x) ;
end

s = s + f(b) ;
I = (b - a) * s / (2 * n) ;

end

您正在 returning f 作为 trap_haskell 的输出参数,它是 trap_haskell 本身的输入函数。代码中的变量 I 实际上存储了积分,因此只需将函数定义的输出变量更改为 return 积分即可:

%//       ------ Change here
%//       |
%//       V
function [I] = trap_haskell(f, a, b, n)