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

问题描述 投票:0回答:2

我正在学习数值方法课程,并且制作了一个小型 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 numeric numerical-integration
2个回答
2
投票

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

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

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 循环方面不再缓慢

© www.soinside.com 2019 - 2024. All rights reserved.