# 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 `x`and 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.