The ticket-sales matrix is a clean way into this. One thing I would flag for anyone taking it to larger matrices: forming AᵀA explicitly squares the condition number, so for anything ill-conditioned, running Eigen's JacobiSVD or BDCSVD on A directly is more numerically stable than going through the eigen-decomposition of AᵀA. Did you stay with the AᵀA route mainly for the clarity of the derivation?