# How to calculate the area between two curves

5 views (last 30 days)
Paolo Rosettani on 7 Jan 2021
Commented: Paolo Rosettani on 8 Jan 2021
Hi,
How can I calculate the erea between this two curves? (I need the yellow coloured area)
where:
x1 = [0 1 1.5608 2.4538 2.7360];
y1 = [0 0 -0.8278 -0.3777 -1.5954];
and
x2 = {vector 14494x1}
y2 = {vector 14494x1}
All the datas are in the attached Curve.mat file.
Rik on 7 Jan 2021
Paolo Rosettani on 7 Jan 2021
I've tried this:
I used
trapz
for each curve and then subtract them...
but with this way I cannot find the yellow area (in the prevoius figure)

David Wilson on 8 Jan 2021
Edited: David Wilson on 8 Jan 2021
Try the following : I've used one of the many interpolation routines, but I notice that you have not sorted your (x2, y2) data, and that you must extrapolate to get the full range.
x1 = [0 1 1.5608 2.4538 2.7360];
y1 = [0 0 -0.8278 -0.3777 -1.5954];
plot(x1, y1, x2, y2)
grid on
%% Now interpolate x1 to x2
% sort first (for some strange reason)
[x2s, idx] = sort(x2, 'ascend');
y2s = y2(idx);
[y1i] = interp1(x1, y1, x2s, 'pchip', 'extrap'); % Assume extrapolation
subplot(2,1,1);
plot(x2s, [y1i], '-', x2s, y2s)
ylim([-2, 0.5])
dy = abs([y1i-y2s]);
A = trapz(x2s,dy)
subplot(2,1,2);
plot(x2s, abs([y1i-y2s]))
ylabel('|y_1-y_2|')
title(sprintf('Area = %2.3f', A))
Paolo Rosettani on 8 Jan 2021
Thank you so much!
This solution is perfect :-)