Files
plot_mu_trajectories/README.md
T
loicvhandClaude Opus 5 72c19852d8 Plot several parameter cases in one run
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>
2026-09-15 20:54:21 +02:00

30 lines
1.2 KiB
Markdown

# mu-trajectories
Visualize the KKT trajectory of the Euclidean projection of a point `x0` onto an ellipse
`x'Ax + b'x + c = 0`:
x(mu) = (I + mu A)^{-1} (x0 - mu b / 2)
The figure shows the trajectory in the plane, `f(mu) = psi(x(mu))`, the distance
`||x0 - x(mu)||` and `f'(mu)`, together with the nearest/farthest KKT points `x(mu*)`,
`x(mu**)` and, when `x0` has a zero standardized coordinate, the degenerate point `x^d`.
## Usage
pip install -r requirements.txt
python plot_mu_trajectories.py # every case, into figures/
python plot_mu_trajectories.py x_trajectories_mu_2 # a single case
pytest
Cases (`A`, `x0`, and optionally `b` and `c`) are listed in `CASES` at the top of
`plot_mu_trajectories.py`; each one produces `<name>.png` and `<name>.pdf`.
Text is typeset with LaTeX (`text.usetex`) when `latex` is on the `PATH`, with the `cm-super` and
`type1cm` packages; otherwise matplotlib's Computer Modern math font is used.
## Files
- `quadric.py`: the `Ellipsoid` class (standardization, trajectory, extreme roots, degenerate points).
- `plot_mu_trajectories.py`: the figure.
- `test_quadric.py`: checks against brute-force sampling of the ellipse.