lauziepi
lauziepi

Reputation: 1

Trapezoidal Numerical Integration in MATLAB without using a FOR loop?

I'm following a Numerical Methods course and I made a small MATLAB script to compute integrals using the trapezoidal method. However my script uses a FOR loop and my friend told me I'm doing something wrong if I use a FOR loop in Matlab. Is there a way to convert this script to a Matlab-friendly one?

%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

Upvotes: 0

Views: 18609

Answers (2)

Kyler Brown
Kyler Brown

Reputation: 1126

Vectorization is important speed and clarity, but so is using built-in functions whenever possible. Matlab has a built in function for trapezoidal numerical integration called trapz. Here is an example.

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

Upvotes: 2

LorenzoR
LorenzoR

Reputation: 421

It is recommended to vectorize your code.

%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));

However, I've read that Matlab is no longer slow at for loops.

Upvotes: 0

Related Questions