如何解决 MATLAB trapz 函数错误?
How to resolve MATLAB trapz function error?
我正在做一项作业,要求我使用 MATLAB 中的 trapz
函数来计算积分。我相信我已经正确地编写了代码,但是程序 returns 的回答非常不正确。我试图找到 e^(-x^2)
从 0
到 1
的积分。
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。
我正在做一项作业,要求我使用 MATLAB 中的 trapz
函数来计算积分。我相信我已经正确地编写了代码,但是程序 returns 的回答非常不正确。我试图找到 e^(-x^2)
从 0
到 1
的积分。
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。