Theorem 8.7.4 — the smallest enclosing ball from a convex quadratic program
ProvedMatousekLP.SmallestBall.smallest_ball_qpLet be points in with , let , and let be the matrix whose th column is formed by the coordinates of . Consider the optimization problem
in the variables . Then the objective function is convex on , and:
- Problem (8.15) has an optimal solution .
- There exists a point such that for every optimal solution . Moreover, for every optimal solution , , and the ball with center and squared radius (radius ) is the unique ball of smallest radius containing .
In particular the smallest enclosing ball of a finite point set exists and is unique, and it is computed by a convex quadratic program.
Formalization Note Points live in EuclideanSpace ℝ (Fin d) and is Fin n → ℝ (0-based indices). The hypothesis is the book's "points "; for the feasible set is empty and (i) fails. "Unique ball of smallest radius" is the definition IsUniqueSmallestEnclosingBall: the ball contains , no ball containing is smaller, and any ball containing of radius at most the optimum has center . The equation is stated coordinatewise. Convexity is stated on all of .
import Mathlib import Definitions.Def_MatousekLP_SmallestBall_Basic open Matrix
namespace MatousekLP.SmallestBall
/-- Theorem 8.7.4 (Matoušek & Gärtner, p. 190). Let `p₁, …, pₙ ∈ ℝ^d` with `n ≥ 1`, `Q` the
`d × n` matrix with columns `pⱼ`, and `f(x) = xᵀQᵀQx − ∑ⱼ xⱼ pⱼᵀpⱼ`. Then `f` is convex, and
(i) problem (8.15) "minimize `f(x)` subject to `∑ⱼ xⱼ = 1`, `x ≥ 0`" has an optimal solution;
(ii) there is a point `p*` with `p* = Qx*` for every optimal solution `x*`, and for every optimal
`x*` we have `−f(x*) ≥ 0` and the ball with center `p*` and radius `√(−f(x*))` (squared radius
`−f(x*)`) is the unique ball of smallest radius containing `P = {p₁, …, pₙ}`. -/
theorem smallest_ball_qp {d n : ℕ} (hn : 1 ≤ n) (p : Fin n → EuclideanSpace ℝ (Fin d)) :
ConvexOn ℝ Set.univ (ballObjective p) ∧
(∃ x : Fin n → ℝ, IsOptimalBallQP p x) ∧
∃ pstar : EuclideanSpace ℝ (Fin d),
(∀ x : Fin n → ℝ, IsOptimalBallQP p x → ∀ i, pstar i = (pointMatrix p *ᵥ x) i) ∧
∀ x : Fin n → ℝ, IsOptimalBallQP p x →
0 ≤ -ballObjective p x ∧
IsUniqueSmallestEnclosingBall (Set.range p) pstar (Real.sqrt (-ballObjective p x)) := by sorry
end MatousekLP.SmallestBall
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.