x(mu) only approaches the centre as |mu| -> inf, so the sampling in
[mean(poles) - 3, mean(poles) + 3] left a gap around it. The outer
branches now continue geometrically up to |mu| ~ 1e4 / lambda_min; the
extra samples lie outside the mu axes and only show in the trajectory.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Replace the single A/B/C constants and --x0 option with a CASES table;
each case writes <name>.png and <name>.pdf. Add the A = diag(2, 0.75),
x0 = (0, -0.6) case.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cleaned-up extraction of test_mu_ellipse from proj_ellipsoid:
- quadric.py: minimal Ellipsoid class (standardization, KKT trajectory,
extreme roots by exact bracketing, degenerate points, asymptotes).
- plot_mu_trajectories.py: the 4-panel figure, typeset with LaTeX.
- test_quadric.py: checks against brute-force sampling of the ellipse.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>