我正在学习数值方法课程,我制作了一个小型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
答案 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));