48  A dozen minima for a parabola

This section uses these packages:

using SymPy
using Plots
plotly()
Plots.PlotlyBackend()

In the March 2003 issue of the College Mathematics Journal, Leon M Hall posed 12 questions related to the following figure:

The figure shows f(x)=x2, the tangent line at (a,f(a)) (for a>0), and the normal line at (a,f(a)). The questions all involve finding the value a which minimizes a related quantity.

We set up some variables to work symbolically:

@syms a::positive x::real
f(x) = x^2
fp(x) = 2x
m = fp(a)
mᴵ = - 1/m
tl = f(a) + m * (x - a)
nl = f(a) + mᴵ * (x - a)
zs = solve(f(x) ~ nl, x)
q = only(filter(!=(a), zs))

a12a


The first question is simply:

1a. The y coordinate of Q

The value is f(q)

yvalue = f(q)

(a12a)2

To minimize we solve for critical points:

cps = solve(diff(yvalue, a), a)

[22]

The lone critical point must be at a minimum. (Given the geometry of the problem, as a goes to the height does too, and as a goes to 0 the height will also go to . This can also be seen analytically, as q=a1/(2a) which goes to when a heads to 0 or .)

We hide the code

In the remaining examples we don’t show the code by default.


1b. The length of the line segment PQ

Show the code
lseg = sqrt((f(a) - f(q))^2 + (a - q)^2);

2a. The horizontal distance between P and Q

Show the code
hd = a - q;

2b. The area of the parabolic segment

Show the code
A = simplify(integrate(nl - f(x), (x, q, a)));

2c. The volume of the rotated solid formed by revolving the parabolic segment around the vertical line k units to the right of P or to the left of Q where k>0.

Show the code
@syms k::nonnegative
V = simplify(integrate(PI * (nl - f(x) - k)^2, (x, q, a)));

  1. The y coordinate of the centroid of the parabolic segment

We warm up with the x coordinate, given by:

xₘ = integrate(x * (nl - f(x)), (x, q, a)) / A
simplify(xₘ)

14a

a fact noted by the author.

Show the code
yₘ = integrate( (1//2) * (nl^2 - f(x)^2), (x, q, a)) / A
yₘ = simplify(yₘ);

  1. The length of the arc of the parabola between P and Q
Show the code
L = integrate(sqrt(1 + fp(x)^2), (x, q, a));

  1. The y coordinate of the midpoint ofthe line segment PQ
Show the code
mp = nl(x => (a + q)/2);

  1. The area of the trapezoid bound by the normal line, the x-axis, and the vertical lines through P and Q.
Show the code
trap = 1//2 * (f(q) + f(a)) * (a - q);

  1. The area bounded by the parabola and the x axis and the vertical lines through P and Q
Show the code
pa = integrate(x^2, (x, q, a));

  1. The area of the surface formed by revolving the arc of the parabola between P and Q around the vertical line through P
Show the code
# use parametric and  2π ∫ u(t) √(u'(t)^2 + v'(t)^2) dt
uu(x) = a - x
vv(x) = f(uu(x))
SA = 2PI * integrate(uu(x) * sqrt(diff(uu(x),x)^2 + diff(vv(x),x)^2), (x, q, a));

  1. The height of the parabolic segment (i.e. the distance between the normal line and the tangent line to the parabola that is parallel to the normal line)
Show the code
# find b through mean value theorem,
# then solve for point of intersection
b = only(solve(diff(f(x),x) ~ -1/fp(a), x))
b′ = only(solve(f(b) + fp(a)*(x-b) ~ nl, x))
segment_height = sqrt((b-b′)^2 + (f(b) - nl(x=>b′))^2);

  1. The volume of the solid formed by revolving the parabolic segment around the x-axis
Show the code
Vₓ = integrate(pi * (nl^2 - f(x)^2), (x, q, a));

  1. The area of the triangle bound by the normal line, the vertical line through Q and the x-axis
Show the code
triangle = 1/2 * f(q) * (a - f(a)/(-1/fp(a)) - q);

  1. The area of the quadrilateral bound by the normal line, the tangent line, the vertical line through Q and the x-axis
Show the code
# @syms x[1:4], y[1:4]
# v1, v2, v3 = [[x[i]-x[1],y[i]-y[1], 0] for i in 2:4]
# area = 1//2 * last(cross(v3,v2) + cross(v2, v1)) # 1/2 area of parallelogram
# print(simplify(area))
# -(x₁ - x₂)*(y₁ - y₃)/2 + (x₁ - x₃)*(y₁ - y₂)/2 - (x₁ - x₃)*(y₁ - y₄)/2 + (x₁ - x₄)*(y₁ - y₃)/2
tl₀ = a - f(a) / fp(a)
x₁,x₂,x₃,x₄ = (a,q,q,tl₀)
y₁, y₂, y₃, y₄ = (f(a), f(q), 0, 0)
quadrilateral = -(x₁ - x₂)*(y₁ - y₃)/2 + (x₁ - x₃)*(y₁ - y₂)/2 - (x₁ - x₃)*(y₁ - y₄)/2 + (x₁ - x₄)*(y₁ - y₃)/2;

The answers appear here in sorted order, some given as approximate floating point values:

article_answers = (1/(2sqrt(2)), 1/2, sqrt(3/10), 0.558480, 0.564641,
                   0.569723, 0.574646,
                   1/sqrt(3), 1/8^(1/4), 1/6^(1/4), .644004, 1/sqrt(2))
(0.35355339059327373, 0.5, 0.5477225575051661, 0.55848, 0.564641, 0.569723, 0.574646, 0.5773502691896258, 0.5946035575013605, 0.6389431042462724, 0.644004, 0.7071067811865475)