using CalculusWithJulia
using Plots
plotly()
using Roots
using QuadGK
using SymPy
43 Area between two curves
This section uses these add-on packages:
The definite integral gives the “signed” area between the function \(f(x)\) and the \(x\)-axis over \([a,b]\). Conceptually, this is the area between two curves, \(f(x)\) and \(g(x)=0\). More generally, this integral:
\[ \int_a^b (f(x) - g(x)) dx \]
can be interpreted as the “signed” area between \(f(x)\) and \(g(x)\) over \([a,b]\). If on this interval \([a,b]\) it is true that \(f(x) \geq g(x)\), then this would just be the area, as seen in this figure. The rectangle in the figure has area: \((f(a)-g(a)) \cdot (b-a)\) which could be a term in a left Riemann sum of the integral of \(f(x) - g(x)\):
For the figure, we have \(f(x) = \sqrt{x}\), \(g(x)= x^2\) and \([a,b] = [1/4, 3/4]\). The shaded area is then found by:
\[ \int_{1/4}^{3/4} (x^{1/2} - x^2) dx = (\frac{x^{3/2}}{3/2} - \frac{x^3}{3})\big|_{1/4}^{3/4} = \frac{\sqrt{3}}{4} -\frac{7}{32}. \]
Examples
Find the area bounded by the line \(y=2x\) and the curve \(y=2 - x^2\).
We can plot to see the area in question:
f(x) = 2 - x^2
g(x) = 2x
plot(f, -3,3)
plot!(g)
For this problem we need to identify \(a\) and \(b\). These are found numerically through:
h(x) = f(x) - g(x)
= find_zeros(h, -3, 3) a,b
2-element Vector{Float64}:
-2.732050807568877
0.7320508075688773
The answer then can be found numerically:
first(quadgk(h, a, b))
6.928203230275509
Example
Find the integral between \(f(x) = \sin(x)\) and \(g(x)=\cos(x)\) over \([0,2\pi]\) where \(f(x) \geq g(x)\).
A plot shows the areas:
f(x) = sin(x)
g(x) = cos(x)
plot(f, 0, 2pi)
plot!(g)
There is a single interval when \(f \geq g\) and this can be found algebraically using basic trigonometry, or numerically:
= find_zeros(x -> f(x) - g(x), 0, 2pi) # pi/4, 5pi/4
a, b quadgk(x -> f(x) - g(x), a, b)[1]
2.8284271247461903
Example
Find the area between \(x^n\) and \(x^{n+1}\) over \([0,1]\) for \(n=1,2,\dots\).
We have on this interval \(x^n \geq x^{n+1}\), so the integral can be found symbolically through:
@syms x::positive n::positive
= integrate(x^n - x^(n+1), (x, 0, 1))
ex together(ex)
\(\frac{1}{\left(n + 1\right) \left(n + 2\right)}\)
Based on this answer, what is the value of this
\[ \frac{1}{2\cdot 3} + \frac{1}{3\cdot 4} + \frac{1}{4\cdot 5} + \cdots? \]
This should be no surprise, given how the areas computed carve up the area under the line \(y=x^1\) over \([0,1]\), so the answer should be \(1/2\).
= plot(x, 0, 1, legend=false)
p plot!(p, x^n, 0, 1) for n in 2:20]
[ p
We can check using the summation
function of SymPy
which is similar in usage to integrate
:
summation(1/(n+1)/(n+2), (n, 1, oo))
\(\frac{1}{2}\)
Example
Verify Archimedes’ finding that the area of the parabolic segment is \(4/3\)rds that of the triangle joining \(a\), \((a+b)/2\) and \(b\).
For concreteness, let \(f(x) = 2-x^2\) and \([a,b] = [-1, 1/2]\), as in the figure. Then the area of the triangle can be computed through:
f(x) = 2 - x^2
= -1, 1/2
a, b = (a + b)/2
𝐜
= secant(f, a, 𝐜), secant(f, a, b), secant(f, 𝐜, b)
sac, sab, scb f1(x) = min(sac(x), scb(x))
f2(x) = sab(x)
= quadgk(x -> f1(x) - f2(x), a, b)[1] A1
0.421875
As we needed three secant lines, we used the secant
function from CalculusWithJulia
to create functions representing each. Once that was done, we used the min
function to facilitate integrating over the top bounding curve, alternatively, we could break the integral over \([a,c]\) and \([c,b]\).
The area of the parabolic segment is more straightforward.
= quadgk(x -> f(x) - f2(x), a, b)[1] A2
0.5625000000000001
Finally, if Archimedes was right, this relationship should bring about \(0\) (or something within round-off error):
* 4/3 - A2 A1
-1.1102230246251565e-16
Example
Find the area bounded by \(y=x^4\) and \(y=e^x\) when \(x^4 \geq e^x\) and \(x > 0\).
A graph over \([0,10]\) shows clearly the largest zero, for afterwards the exponential dominates the power.
h1(x) = x^4
h2(x) = exp(x)
plot(h1, 0, 10)
plot!(h2)
There must be another zero, though it is hard to see from the graph over \([0,10]\), as \(0^4=0\) and \(e^0=1\), so the polynomial must cross below the exponential to the left of \(5\). (Otherwise, plotting over \([0,2]\) will clearly reveal the other zero.) We now find these intersection points numerically and then integrate:
= find_zeros(x -> h1(x) - h2(x), 0, 10)
a,b quadgk(x -> h1(x) - h2(x), a, b)[1]
3980.1173881924947
Examples
The area between \(y=\sin(x)\) and \(y=m\cdot x\) between \(0\) and the first positive intersection depends on \(m\) (where \(0 \leq m \leq 1\). The extremes are when \(m=0\), the area is \(2\) and when \(m=1\) (the line is tangent at \(x=0\)), the area is \(0\). What is it for other values of \(m\)? The picture for \(m=1/2\) is:
= 1/2
m plot(sin, 0, pi)
plot!(x -> m*x)
For a given \(m\), the area is found after computing \(b\), the intersection point. We express this as a function of \(m\) for later reuse:
intersection_point(m) = maximum(find_zeros(x -> sin(x) - m*x, 0, pi))
= 0
a1 = intersection_point(m)
b1 quadgk(x -> sin(x) - m*x, a1, b1)[1]
0.4207978950529467
In general, the area then as a function of m
is found by substituting intersection_point(m)
for b
:
area(m) = quadgk(x -> sin(x) - m*x, 0, intersection_point(m))[1]
area (generic function with 1 method)
A plot shows the relationship:
plot(area, 0, 1)
While here, let’s also answer the question of which \(m\) gives an area of \(1\), or one-half the total? This can be done as follows:
find_zero(m -> area(m) - 1, (0, 1))
0.2566498569701879
(Which is a nice combination of using find_zeros
, quadgk
and find_zero
to answer a problem.)
Example
In an early 2023 article appearing in the New York Times a discussion on excess deaths was presented. Figure 43.1 shows two curves from which the number of excess deaths can be computed.
Consider the curve marked Actual deaths. The number of deaths per year is the sum over each day of the number of deaths per each day. Approximating this number with a curve and setting 1 day equal to 1 unit, the number of deaths is basically \(\int_0^{365} d(t) dt\). This curve is usually, say, \(u(t)\), so the expected number of deaths would be \(\int_0^{365} u(t) dt\). The difference, \(\int_0^{365} (d(t) - u(t))dt\) is interpreted as the number of excess deaths. This methodology has been used to estimate the true number of deaths attributable to the COVID-19 pandemic.
Example
Find the area bounded by the \(x\) axis, the line \(x-1\) and the function \(\log(x+1)\).
A plot shows us the basic area:
j1(x) = log(x+1)
j2(x) = x - 1
plot(j1, 0, 3)
plot!(j2)
plot!(zero)
The value for “\(b\)” is found from the intersection point of \(\log(x+1)\) and \(x-1\), which is near \(2\):
= 0
ja = find_zero(x -> j1(x) - j2(x), 2) jb
2.1461932206205825
We see that the lower part of the area has a condition: if \(x < 1\) then use \(0\), otherwise use \(g(x)\). We can handle this many different ways:
- break the integral into two pieces and add:
quadgk(x -> j1(x) - zero(x), ja, 1)[1] + quadgk(x -> j1(x) - j2(x), 1, jb)[1]
0.8030726701188743
- make a new function for the bottom bound:
j3(x) = x < 1 ? 0.0 : j2(x)
quadgk(x -> j1(x) - j3(x), ja, jb)[1]
0.8030726629434394
- Turn the picture on its side and integrate in the \(y\) variable. To do this, we need to solve for inverse functions:
=j1(ja)
a1=j1(jb)
b1f1(y)=y+1 # y=x-1, so x=y+1
g1(y)=exp(y)-1 # y=log(x+1) so e^y = x + 1, x = e^y - 1
quadgk(y -> f1(y) - g1(y), a1, b1)[1]
0.8030726701188743
When doing problems by hand this latter style can often reduce the complications, but when approaching the task numerically, the first two styles are generally easier, though computationally more expensive.
Example
Consider two overlapping circles, one with smaller radius. How much area is in the larger circle that is not in the smaller? The question came up on the Julia
discourse discussion board. A solution, modified from an answer of @rocco_sprmnt21
, follows.
Without losing too-much generality, we can consider the smaller circle to have radius \(a\), the larger circle to have radius \(b\) and centered at \((0,c)\). We assume some overlap – \(a \ge c-b\), but not too much – \(c-b \ge 0\) or \(0 \le c-b \le a\).
@syms x::real y::real a::positive b::positive c::positive
= x^2 + y^2 - a^2
c₁ = x^2 + (y-c)^2 - b^2
c₂ = first(solve(c₁ ~ c₂ , y))
y₀ = sqrt(a - y₀^2) # point of intersection x₀
\(\sqrt{a - \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}}\)
Plotting with \(a=1, b=3/2, c=2\) we have:
let 𝑎 = 1, 𝑏=3/2, 𝑐=2
@assert 0 ≤ 𝑐 - 𝑏 ≤ 𝑎
= N(y₀(a => 𝑎, b => 𝑏, c => 𝑐))
y = sqrt(𝑎^2 - y^2)
x
= plot(; legend=false, aspect_ratio=:equal)
p
plot!(x -> 𝑐 + sqrt(𝑏^2 - x^2), -𝑏, 𝑏; color=:black)
plot!(x -> 𝑐 - sqrt(𝑏^2 - x^2), -𝑏, -x; color=:black)
plot!(x -> 𝑐 - sqrt(𝑏^2 - x^2), x, 𝑏; color=:black)
plot!(x -> sqrt(𝑎^2 - x^2), -x, x; color=:black)
plot!(x -> sqrt(𝑎^2 - x^2), -𝑎, -x; color=:blue)
plot!(x -> sqrt(𝑎^2 - x^2), x, 𝑎; color=:blue)
plot!(x -> -sqrt(𝑎^2 - x^2), -𝑎, 𝑎; color=:blue)
scatter!([-x, x], [y, y])
plot!([0, 𝑏], [𝑐, 𝑐]; linestyle=:dash)
annotate!([(0, 𝑐, text("(0, c)", 8, :left)),
text("(b, c)", 8, :left)),
(𝑏, 𝑐, text("(x₀, y₀)", 8, :left))])
(x, y,
plot!([0, 0], [𝑎, 𝑐 + 𝑏]; color=:green)
plot!([x, x], [y, 𝑐 + sqrt(𝑏^2 - x^2)]; color=:green)
pend
With this orientation, we can see by symmetry that the area is twice the integral from \([0,x_0]\) and from \([x_0, b]\) provided \(0 \le c- b \le a\):
= integrate(c + sqrt(b^2 - x^2) - (sqrt(a^2 - x^2)), (x, 0, x₀))
a1 = integrate(c + sqrt(b^2 - x^2) - (c - sqrt(b^2 - x^2)), (x, x₀, b))
a2 = 2(a1 + a2) A
\(- a^{2} \operatorname{asin}{\left(\frac{\sqrt{a - \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}}}{a} \right)} - b^{2} \operatorname{asin}{\left(\frac{\sqrt{a - \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}}}{b} \right)} + \pi b^{2} + 2 c \sqrt{a - \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}} - \sqrt{a - \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}} \sqrt{- a + b^{2} + \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}} - \sqrt{a - \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}} \sqrt{a^{2} - a + \frac{\left(a^{2} - b^{2} + c^{2}\right)^{2}}{4 c^{2}}}\)
And for the \(a=1, b=3/2, c=2\):
A(a => 1, b => 3//2, c => 2)
\(- \frac{9 \operatorname{asin}{\left(\frac{\sqrt{15}}{8} \right)}}{4} - \operatorname{asin}{\left(\frac{3 \sqrt{15}}{16} \right)} + \frac{3 \sqrt{15}}{8} + \frac{9 \pi}{4}\)
As a check, when the two circles just touch, or \(a = c-b\), we should get the same as the area of a circle with radius \(b\) or \(b^2 \cdot \pi\):
A(c=>3, a=>1, b=>2)
\(4 \pi\)
Integrating in different directions
The last example suggested integrating in the \(y\) variable. This could have more explanation.
It has been noted that different symmetries can aid in computing integrals through their interpretation as areas. For example, if \(f(x)\) is odd, then \(\int_{-b}^b f(x)dx=0\) and if \(f(x)\) is even, \(\int_{-b}^b f(x) dx = 2\int_0^b f(x) dx\).
Another symmetry of the \(x-y\) plane is the reflection through the line \(y=x\). This has the effect of taking the graph of \(f(x)\) to the graph of \(f^{-1}(x)\) and vice versa. Here is an example with \(f(x) = x^3\) over \([-1,1]\).
f(x) = x^3
= range(-1, stop=1, length=50)
xs = f.(xs)
ys plot(ys, xs)
By switching the order of the xs
and ys
we “flip” the graph through the line \(x=y\).
We can use this symmetry to our advantage. Suppose instead of being given an equation \(y=f(x)\), we are given it in “inverse” style: \(x = f(y)\), for example suppose we have \(x = y^3\). We can plot this as above via:
= range(-1, stop=1, length=50)
ys = [y^3 for y in ys]
xs plot(xs, ys)
Suppose we wanted the area in the first quadrant between this graph, the \(y\) axis and the line \(y=1\). What to do? With the problem “flipped” through the \(y=x\) line, this would just be \(\int_0^1 x^3dx\). Rather than mentally flipping the picture to integrate, instead we can just integrate in the \(y\) variable. That is, the area is \(\int_0^1 y^3 dy\). The mental picture for Riemann sums would be have the approximating rectangles laying flat and as a function of \(y\), are given a length of \(y^3\) and height of “\(dy\)”.
The figure above suggests that the area under \(f(x)\) over \([a,b]\) could be represented as the area between the curves \(f^{-1}(y)\) and \(y=b\) from \([f(a), f(b)]\).
For a less trivial problem, consider the area between \(x = y^2\) and \(x = 2-y\) in the first quadrant.
= range(0, stop=2, length=50)
ys = [y^2 for y in ys]
xs plot(xs, ys)
= [2-y for y in ys]
xs plot!(xs, ys)
plot!(zero)
We see the bounded area could be described in the “\(x\)” variable in terms of two integrals, but in the \(y\) variable in terms of the difference of two functions with the limits of integration running from \(y=0\) to \(y=1\). So, this area may be found as follows:
f(y) = 2-y
g(y) = y^2
= 0, 1
a, b quadgk(y -> f(y) - g(y), a, b)[1]
1.1666666666666667
43.1 Questions
Question
Find the area enclosed by the curves \(y=2-x^2\) and \(y=x^2 - 3\).
Question
Find the area between \(f(x) = \cos(x)\), \(g(x) = x\) and the \(y\) axis.
Question
Find the area between the line \(y=1/2(x+1)\) and half circle \(y=\sqrt{1 - x^2}\).
Question
Find the area in the first quadrant between the lines \(y=x\), \(y=1\), and the curve \(y=x^2 / 4\).
Question
Find the area between \(y=x^2\) and \(y=-x^4\) for \(\lvert x \rvert \leq 1\).
Question
Let f(x) = 1/(sqrt(pi)*gamma(1/2)) * (1 + x^2)^(-1)
and g(x) = 1/sqrt(2*pi) * exp(-x^2/2)
. These graphs intersect in two points. Find the area bounded by them.
(Where gamma(1/2)
is a call to the gamma function.)
Question
Find the area in the first quadrant bounded by the graph of \(x = (y-1)^2\), \(x=3-y\) and \(x=2\sqrt{y}\). (Hint: integrate in the \(y\) variable.)
Question
Find the total area bounded by the lines \(x=0\), \(x=2\) and the curves \(y=x^2\) and \(y=x\). This would be \(\int_a^b \lvert f(x) - g(x) \rvert dx\).
Question
Look at the sculpture Le Tamanoir by Calder. A large scale work. How much does it weigh? Approximately?
Let’s try to answer that with an educated guess. The right most figure looks to be about 1/5th the total amount. So if we estimate that piece and multiply by 5 we get a good guess. That part looks like an area of metal bounded by two quadratic polynomials. If we compute that area in square inches, then multiply by an assumed thickness of one inch, we have the cubic volume. The density of galvanized steel is 7850 kg/\(m^3\) which we convert into pounds/in\(^3\) via:
7850 * 2.2 * (1/39.3)^3
0.28452123585283234
The two parabolas, after rotating, might look like the following (with \(x\) in inches):
\[ f(x) = x^2/70, \quad g(x) = 35 + x^2/140 \]
Put this altogether to give an estimated weight in pounds.
Is the guess that the entire sculpture is more than two tons?
We used area to estimate weight in this example, but Galileo used weight to estimate area. It is mentioned by Martin that in order to estimate the area enclosed by one arch of a cycloid, Galileo cut the arch from some material and compared the weight to the weight of the generating circle. He concluded the area is close to \(3\) times that of the circle, a conjecture proved by Roberval in 1634.
Question
Formulas from the business world say that revenue is the integral of marginal revenue or the additional money from selling 1 more unit. (This is basically the derivative of profit). Cost is the integral of marginal cost, or the cost to produce 1 more. Suppose we have
\[ \text{mr}(x) = 2 + \frac{e^{-x/10}}{1 + e^{-x/10}}, \quad \text{mc}(x) = 1 + \frac{1}{2} \cdot \frac{e^{-x/5}}{1 + e^{-x/5}}. \]
Find the profit to produce 100 units: \(P = \int_0^{100} (\text{mr}(x) - \text{mc}(x)) dx\).
Question
Can SymPy
do what Archimedes did?
Consider the following code which sets up the area of an inscribed triangle, A1
, and the area of a parabolic segment, A2
for a general parabola:
@syms x::real A::real B::real C::real a::real b::real
= (a + b) / 2
c f(x) = A*x^2 + B*x + C
Secant(f, a, b) = f(a) + (f(b)-f(a))/(b-a) * (x - a)
= integrate(Secant(f, a, c) - Secant(f,a,b), (x,a,c)) + integrate(Secant(f,c,b)-Secant(f,a,b), (x, c, b))
A1 = integrate(f(x) - Secant(f,a,b), (x, a, b))
A2 = 4//3 * A1 - A2 out
\(\frac{A a^{3}}{3} + A a^{2} b - A a b^{2} - \frac{A b^{3}}{3} + a^{2} \left(- \frac{A a}{2} - \frac{A b}{2}\right) - \frac{4 a^{2} \left(\frac{A a}{4} - \frac{A b}{4}\right)}{3} - \frac{4 a \left(- \frac{A a^{2}}{2} + \frac{A a b}{2}\right)}{3} - b^{2} \left(- \frac{A a}{2} - \frac{A b}{2}\right) + \frac{4 b^{2} \left(- \frac{A a}{4} + \frac{A b}{4}\right)}{3} + \frac{4 b \left(\frac{A a b}{2} - \frac{A b^{2}}{2}\right)}{3} - \frac{4 \left(\frac{a}{2} + \frac{b}{2}\right)^{2} \left(- \frac{A a}{4} + \frac{A b}{4}\right)}{3} + \frac{4 \left(\frac{a}{2} + \frac{b}{2}\right)^{2} \left(\frac{A a}{4} - \frac{A b}{4}\right)}{3} + \frac{4 \left(\frac{a}{2} + \frac{b}{2}\right) \left(- \frac{A a^{2}}{2} + \frac{A a b}{2}\right)}{3} - \frac{4 \left(\frac{a}{2} + \frac{b}{2}\right) \left(\frac{A a b}{2} - \frac{A b^{2}}{2}\right)}{3}\)
Does SymPy
get the correct output, \(0\), after calling simplify
?
Question
In Martin a fascinating history of the cycloid can be read.
A
to C
, the original point of contact, D
, traces out an arch of the cycloid. The companion curve is that found by congruent line segments. In the figure, when D
was at point P
the line segment PQ
is congruent to EF
(on the original position of the generating circle).In particular, it can be read that Roberval proved that the area between the cycloid and its companion curve is half the area of the generating circle. Roberval didn’t know integration, so finding the area between two curves required other tricks. One is called “Cavalieri’s principle.” From the figure above, which of the following would you guess this principle to be:
Suppose the generating circle has radius \(1\), so the area shown is \(\pi/2\). The companion curve is then \(1-\cos(\theta)\) (a fact not used by Roberval). The area under this curve is then
@syms theta
integrate(1 - cos(theta), (theta, 0, SymPy.PI))
\(\pi\)
That means the area under one-half arch of the cycloid is
Doubling the answer above gives a value that Galileo had struggled with for many years.