MATLAB中的梯形数值积分不使用FOR循环?

时间:2013-05-19 04:45:57

标签: matlab integration numerical

我正在学习数值方法课程,我制作了一个小型MATLAB脚本,使用梯形方法计算积分。但是我的脚本使用FOR循环,我的朋友告诉我,如果我在Matlab中使用FOR循环,我做错了。有没有办法将此脚本转换为Matlab友好的脚本?

%Number of points to use
N = 4;

%Integration interval
a = 0;
b = 0.5;

%Width of the integration segments
h = (b-a) / N;


F = exp(a);
for i = 1:N-1
    F = F + 2*exp(a+i*h);
end
F = F + exp(b);
F = h/2*F

2 个答案:

答案 0 :(得分:2)

矢量化是重要的速度和清晰度,但是尽可能使用内置函数。 Matlab具有用于梯形数值积分的内置函数,称为trapz。这是一个例子。

x = 0:.125:.5
y = exp(x)
F = trapz(x,y)

答案 1 :(得分:0)

建议对代码进行矢量化。

%Number of points to use
N = 4;

%Integration interval
a = 0;
b = 0.5;

%Width of the integration segments
h = (b-a) / N;

x = 1:1:N-1;

F = h/2*(exp(a) + sum(2*exp(a+x*h)) + exp(b));

但是,我读过Matlab is no longer slow at for loops