Integration

Tutorial Video

Finding the Area Under the Curve

Let's visually inspect, how to calculate the area under the curve using a line plot and a bar plot.


Constant Term

x=[1:10]';
[m,n]=size(x);
y=ones(m,n);
figure(1);
bar(x,y);
hold('on');
plot(x,y,'LineWidth',3);
hold('off');
grid('minor');
xlabel('x');
ylabel('y');
ax=gca
ax.YAxisLocation='right';
areaundercurve1=sum(y(2:end-1))+y(1)/2+y(end)/2
areaundercurve2=trapz(y)

y=1

The area under the curve is:

x*y

But

y=1

So the area is

x

You'll see the area under the line is a rectangle and has a dependence on the variable x i.e. the longer we make x, the larger the area under the curve. y has no dependence on xand remains unchanged as x increases.

As x=10 the area under the line is approximately 10

Note that the red line covers the area of half the first and half last bar  (so instead of taking the value for each of these bars we take half the value of these bars). This gives an area of 9 instead of 10. We can calculate the area by counting the sum of y with these corrections i.e.:

areaundercurve1=sum(y(2:end-1))+y(1)/2+y(end)/2

areaundercurve1=9

areaundercurve2=9

As a practical example x may be the time in seconds and y may be your constant speed in m/s. As the time increases the distance you've walked in meters (s*m/s) increases.

Linear Terms

y=x

Calculate the Area under the line:

Area assuming a square = x.*y

but y=x

Therefore area = x.*x=x.^2

For x=10

x.^2=100

However it is not a square, only half the square is taken therefore the area is:

(1/2)*x.^2

(1/2)*x.^2=50

In other words the power is raised by 1 (because y has a dependency on x) and divided by 2 because the area under the curve is a triangle and not a square. If we calculate this properly taking into account that we are summing up only half the last and first bars:

areaundercurve1=sum(y(2:end-1))+y(1)/2+y(end)/2

areaundercurve1=49.5

areaundercurve2=49.5

If it was a square it would be x*x=10*10=100

The results match closely as expected.

As a practical example x may be the time and with this exercise you decide to walk faster the further you go (y will therefore be proportional to x). As the time increases the distance you've walked in increases but as you are walking faster at each point in time, the distance you cover is much larger.


Squared Terms

y=x.^2

Calculate the Area under the curve is:

Area assuming a square = x.*y

but y=x.^2

Therefore

area = x.*x.^2=x.^3

For x=10

x.^3=1000

However it is not a square and visually we can see that less than 1/2 of the square is under the curve.

areaundercurve1=sum(y(2:end-1))+y(1)/2+y(end)/2

areaundercurve1=334.5000

areaundercurve2=334.5000

334.5000/1000=~1/3

Meaning the area under the curve is:

(1/3)*x.^3

In other words the power is raised by 1 (because y has a dependency on x) and divided by 3.

newpower=oldpower+1 because going along the x axis gives an additional x term. We need to normalise by the newpower because the curve we get is not square.


Cubic Terms

y=x.^3

Calculate the Area under the curve:

Area assuming a square = x.*y

but y=x.^3

Therefore

area = x.*x.^3=x.^4

For x=10

x.^4=10000

However it is not a square:

areaundercurve1=sum(y(2:end-1))+y(1)/2+y(end)/2

areaundercurve1=2.5245e+03

areaundercurve2=2.5245e+03

2524.5/10000=~1/4

Meaning the area under the curve is:

(1/4)*x.^4

In other words the power is raised by 1 (because y has a dependency on x) and divided by 4.

newpower=oldpower+1 because going along the x axis gives an additional x term. We need to normalise by the newpower because the curve we get is not square.


Multiplication by a Scalar

y=2*x.^2

Calculate the Area under the curve:

Area assuming a square = x.*y

but y=2*x.^2

Therefore

area = x.*(2*x.^2)=2*x.^3

For x=10

2*x.^3=2000

Calculating the area under the curve:

areaundercurve1=sum(y(2:end-1))+y(1)/2+y(end)/2

areaundercurve1=669

areaundercurve2=669

669/2000=(2*334.5000)/(2*1000)~1/3

Meaning the area under the curve is:

(2)*(1/3)*x.^3

In other words the scalar acts as a constant. The power is still raised by 1 (because y has a dependency on x) and divided by 3.

newpower=oldpower+1 because going along the x axis gives an additional x term. We again need to normalise by the newpower as normal because the curve we get is not square.


Two Terms

y23=x.^2+x.^3

We can see that there is no interdependence on having the two terms y23=x.^2+x.^3 and we can treat both terms separately.

Therefore for finding each term for each term

newpower=oldpower+1 because going along the x axis gives an additional x term.

We again need to normalise by dividing by newpower.

These are the rules of integration.


Symbolic Integration

We can set x to be a symbol and write down our starting equations with respect to x:

syms('x')
y1=1
y2=x
y3=x^2
y4=x^3

Now we can integrate the functions with respect to x:

inty1=int(y1,x)
inty2=int(y2,x)
inty3=int(y3,x)
inty4=int(y4,x)

If we wish to calculate the values between 1 and 10 we can use:

inty1_1_10=int(y1,x,1,10)
inty2_1_10=int(y2,x,1,10)
inty3_1_10=int(y3,x,1,10)
inty4_1_10=int(y4,x,1,10)

To get rid of fractions and display as a double we can use:

inty1_1_10=double(int(y1,x,1,10))
inty2_1_10=double(int(y2,x,1,10))
inty3_1_10=double(int(y3,x,1,10))
inty4_1_10=double(int(y4,x,1,10))

inty1_1_10=double(int(y1,x,1,10))
inty2_1_10=double(int(y2,x,1,10))
inty3_1_10=double(int(y3,x,1,10))
inty4_1_10=double(int(y4,x,1,10))

inty1_1_10=9
inty2_1_10=49.5
inty3_1_10=333
inty4_1_10=2499.8

areaundercurve_y1=9
areaundercurve1_y2=49.5
areaundercurve1_y3=334.5000
areaundercurve1_y4=2524.5


Uncertainty in Results

The first two values match precisely but there is a deviation in the last 2 values. Why is this? If we visually inspect y=x.^2 and look at the bars, we can see that at some points the bar is above the curve and other points the bar is below the curve. In an ideal scenario, this should never happen and these are the source of our error.

As we only have 10 bars… our error is relatively large. If we modify our code to give 20 bars (steps of 0.5 opposed to 1) the error should decrease:

steps=0.5
x=1:steps:10';
y=x.^2;
figure(1);
bar(x,y);
hold on;
plot(x,y,'LineWidth',3);
hold off;
grid('minor');
xlabel('x');
ylabel('y');
ax=gca
ax.YAxisLocation='right';
areaundercurve1=steps*(sum(y(2:end-1))+y(1)/2+y(end)/2)
areaundercurve2=steps*trapz(y)

inty3_1_10=333

areaundercurve1_y3_10bars=334.500

areaundercurve1_y3_20bars=333.375

As expected the value is closer:

If we modify our code to give 100 bars (steps of 0.1):

inty3_1_10=333

areaundercurve1_y3_10bars=334.500

areaundercurve1_y3_20bars=333.375

areaundercurve1_y3_100bars=333.150

If we modify our code to give 1000 bars (steps of 0.01):

inty3_1_10=333

areaundercurve1_y3_10bars=334.500

areaundercurve1_y3_20bars=333.375

areaundercurve1_y3_100bars=333.150

areaundercurve1_y3_1000bars=333.0002

inty3_1_10=333

areaundercurve1_y3_10bars=334.500

areaundercurve1_y3_20bars=333.375

areaundercurve1_y3_100bars=333.150

areaundercurve1_y3_1000bars=333.0002

areaundercurve1_y3_10000bars=333.0000

Integration is this procedure and makes the bars "infinitely small". Of course a computer has its limitations in terms of precision but on a practical basis this precision suffices. The reader is encouraged to continue to repeat the procedure above using y4.


 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.