我正在学习数值方法课程,并且制作了一个小型 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
矢量化对于速度和清晰度很重要,但尽可能使用内置函数也很重要。 Matlab 有一个内置的梯形数值积分函数,称为 trapz。这是一个例子。
x = 0:.125:.5
y = exp(x)
F = trapz(x,y)
建议对代码进行矢量化。
%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 循环方面不再缓慢。