如何解决 MATLAB trapz 函数错误?

How to resolve MATLAB trapz function error?

我正在做一项作业,要求我使用 MATLAB 中的 trapz 函数来计算积分。我相信我已经正确地编写了代码,但是程序 returns 的回答非常不正确。我试图找到 e^(-x^2)01 的积分。

x = linspace(0,1,2000);
y = zeros(1,2000);
for iCnt = 1:2000
    y(iCnt) = e.^(-(x(iCnt)^2));
end

a = trapz(y);
disp(a);

此代码当前 returns

1.4929e+03

我做错了什么?

您还需要指定 x 值:

x = linspace(0,1,2000);
y = exp(-x.^2);
a = trapz(x,y)

a =

    0.7468

更多详情:

  • 首先,在 MATLAB 中,您可以使用向量来避免对数组(向量)执行操作的 for 循环。所以整整四行代码

    y = 零(1,2000); 对于 iCnt = 1:2000 y(iCnt) = exp(-(x(iCnt)^2)); 结束

将翻译成一行:

y = exp(-x.^2)
  • 您定义了x = linspace(0,1,2000),这意味着您需要计算给定函数在[0 1]范围内的积分。因此,您计算 y 的方式有误,其中 returns 在 [1 2000] 范围内,这就是为什么您得到的结果很大。

  • 此外,在MATLAB中你应该使用exp,在MATLAB中没有e的函数。

  • 此外,如果您在范围内绘制函数,您会发现结果是有意义的,因为整个页面的面积为 1x1。