Quadrilateral formed by connecting the vertices of a convex quadrilateral to midpoints of non-adjacent sides

865 Views Asked by At

In the diagram below, $ABCD$ is a convex quadrilateral, and $E, F, G, H$ are the midpoints of the sides. The line segments $\overline{AF}$, $\overline{BG}$, $\overline{CH}$, and $\overline{DE}$ bound a convex quadrilateral $PQRS$ inside $ABCD$. What is the ratio of the areas of the two quadrilaterals? Figure - quadrilateral in a quadrilateral

I know that if $ABCD$ is a parallelogram then the area of $PQRS$ is $1/5$ of the area of $ABCD$. However, the ratio approaches $1/6$ in the limit as $C$ approaches $D$, so the ratio cannot always be $1/5$.

Degenerate quadrilateral

Experiments suggest that $1/5$ is the maximum value and $1/6$ is the minimum value. Is this true?

Edit June 2018

A proof of this theorem was published in 2011.

Rick Mabry. “Crosscut Convex Quadrilaterals.” Mathematics Magazine, vol. 84, no. 1, 2011, pp. 16–25. JSTOR, JSTOR, www.jstor.org/stable/10.4169/math.mag.84.1.016.

1

There are 1 best solutions below

0
On BEST ANSWER

It is true that 1/5 is the maximum value and 1/6 is the minimum value. The ratio of areas is preserved by non-singular affine transformations, i.e. transformations of the form $$T(x,y) = (ax + by + e, cx + dy + f)$$ where $ad - bc \ne 0$. By applying an appropriate affine transformation, we can arrange that $A = (0,0)$, $B = (2, 0)$, and $D = (0, 2)$.

Suppose that $C = (x, y)$. The quadrilateral $ABCD$ is convex if and only if $x > 0$, $y > 0$, and $x + y > 2$. Assuming that it is convex, the area of the quadrilateral is $x + y$, since the area of triangle $ADC$ is $x$ and the area of triangle $ABC$ is $y$.

The coordinates of the interior intersection points $P$, $Q$, $R$, and $S$ can be obtained by solving pairs of linear equations.

$$\begin{align*} P_x &= 2(x + 2)/(2x + y + 4)\\ P_y &= 2y/(2x + y + 4)\\ Q_x &= (x+2)(y+2)/(x + 3y + 2)\\ Q_y &= y(y + 2)/(x + 3y + 2)\\ R_x &= x(x + 2y)/(3x + 4y - 4)\\ R_y &= (y + 2)(x + 2y - 2)/(3x+4y-4)\\ S_x &= x/(2x + y - 1)\\ S_y &= 2(x + y - 1)/(2x + y - 1)\\ \end{align*} $$

Consequently, the area of $PQRS$ is a rational function of $x$ and $y$.

As Jack D'Aurizio observed, it is enough to prove that $$\Delta_1 := \text{Area}(ABCD) - 5\text{Area}(PQRS) \ge 0$$ and $$\Delta_2 := 6\text{Area}(PQRS) - \text{Area}(ABCD) \ge 0.$$ Although $\Delta_1$ and $\Delta_2$ are complicated rational expressions, they can be factored with the assistance of a computer algebra system. We obtain $$\Delta_1 = (x + y)(x - 2y + 2)^2(2x + y - 6)^2 / (2\Pi)$$ and $$\Delta_2 = 5(x + y)(2x^2 + xy + 8y - 8)(2xy + x + y^2 - 3y + 2) / \Pi,$$ where $$\Pi = (x + 3y + 2)(2x + y - 1)(2x + y + 4)(3x + 4y - 4).$$

It is not difficult to verify that each factor is nonnegative given that $x, y > 0$ and $x+y > 2$. This completes the proof that $$\frac16 < \frac{\text{Area}(PQRS)}{\text{Area}(ABCD)} \le \frac15.$$

My Python code is included below.

import sympy

x, y, X, Y = sympy.symbols('x y X Y')

def line(p, q):
    """Equation in X and Y of the line through two points.
    The right side of the equation is assumed to be zero."""
    equation = (X-p[0])*(Y-q[1]) - (X-q[0])*(Y-p[1])
    return equation

def intersect(line1, line2):
    """Find the point of intersection of two lines, given their equations."""
    solution = sympy.solve([line1, line2], [X, Y])
    return (solution[X], solution[Y])

def midpoint(p, q):
    """Find the midpoint of the line segment joining two points."""
    m0 = (p[0] + q[0]) / 2
    m1 = (p[1] + q[1]) / 2
    return (m0, m1)

def simplify(expr):
    """Simplify an expression and return it as a nicely formatted string. """
    expr = sympy.factor(sympy.simplify(expr))
    return str(expr).replace('**', '^').replace('*', '')

zero = sympy.sympify(0)
two = sympy.sympify(2)

# Vertices of the convex quadrilateral ABCD
vertices = [
    (zero, zero),
    (two, zero),
    (x, y),
    (zero, two)
]

# Midpoints H,E,F,G of the sides DA, AB, BC, CD.
midpoints = [
    midpoint(vertices[i-1], vertices[i])
    for i in range(4)
]

# Equations of the lines CH, DE, AF, BG.
midlines = [
    line(vertices[i-2], midpoints[i])
    for i in range(4)
]

# Interior intersection points R, S, P, Q.
interior_crossings = [
    intersect(midlines[i-1], midlines[i])
    for i in range(4)
]

for label, (x,y) in zip('RSPQ', interior_crossings):
    print ("%sx = %s" % (label, simplify(x)))
    print ("%sy = %s" % (label, simplify(y)))

# Area of a polygon given by a list of vertices, ordered counter-clockwise.
def area(v):
    return sum(v[i-1][0]*v[i][1] - v[i-1][1]*v[i][0] for i in range(len(v))) / 2

# Area of the outer polygon ABCD
outer_area = sympy.simplify(area(vertices))

# Area of the inner polygon PQRS
inner_area = sympy.simplify(area(interior_crossings))

print ("\nouter area = %s" % outer_area)
print ("inner area:")
print (simplify(inner_area))

# Verify that Area(ABCD) > 5 * Area(PQRS)
print ("\nouter area - 5 * inner area = ")
print (simplify(outer_area - 5 * inner_area))

# Verify that Area(ABCD) < 6 * Area(PQRS)
print ("\n6 * inner area - outer area = ")
print (simplify(6 * inner_area - outer_area))