0

我正在学习数值方法课程,并制作了一个小的 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
4

2 回答 2

2

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

x = 0:.125:.5
y = exp(x)
F = trapz(x,y)
于 2013-05-19T05:55:43.230 回答
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 在 for loops 不再慢

于 2013-05-19T05:36:53.750 回答