Herget IOD - #502
Conversation
|
Four things before merge. Line numbers are in
Smaller: live |
|
Correction to item 1 above. I asserted the fit afterwards is corrupted; I had The mutation is real: 61 of 61 epochs shifted by -5.44 h (-0.2266 d, the light But it does not degrade the fit. Against the JPL state in your own
Herget lands 64x closer than the Gauss-seeded fit, so nothing is being spoiled So item 1 stands only as a side effect on caller-owned state: anything reusing Incidentally the gauss error above exceeds the |
|
Ran this on 84 real Rubin-only arcs (MPC obscode X05, median 15 d, ~12 obs). The initial range is the main issue. Where both converge, herget and gauss agree on a to a median |da/a| of 1.7e-6. The remaining ~23% is a degeneracy, not a bug. One more: |
|
Where this matters most: the arcs the current default cannot fit at all. I took the 55 Rubin-only arcs (X05) whose
Fitted semimajor axis: median 2.75 au, range 1.37-3.23 -- main belt.
So this is not a redundant third IOD -- it covers the regime where the default Caveat: this used |
|
On the degeneracy above -- a concrete suggestion. Two lines would convert the runaway into an honest non-convergence:
Worth knowing the shape of it: since Damping plus the cap is the minimal fix and does not change what the method |
|
@matthewholman maybe this is your text in the comments here and not copy and pasting output from Claude but I can't fully parse what the content of all the comments here. What are the 55/84 Rubin orbits referred to in these comments @awilson110 can replicate and learn? |
|
@matthewholman I've made a fix for points 1-3 (and the smaller points too), but I'm stuck on both point 4 and the degeneracy suggestion. For point 4: the code only calculates one eigenstate (hence cov being singular is no problem), should I change this? How would I calculate for multiple eigenstates? The only way I could see is to run the code for a range of different initial guesses and see if they converge differently, is that what I should do? For the degeneracy: I'm not familiar with the notation, what are |
|
Adam — drop point 4 and the damping suggestion. Neither is where Herget earns its place. (I can explain the notation another time.) It turns out that gauss actually covers a much larger fraction of the cases, but Herget is much faster in some cases when gauss leads to a very slow result. So the thing to work on is the initial range. rho_1 = rho_n = 40 is hardcoded, and the 2 au that works on other objects was tuned on the main belt. Can you make it geometry-derived, or a short ladder, and test on a near-Earth and a main-belt object as well as the TNO? |
Fixes #311
Implemented the Herget IOD method, using assist variational particles for calculating partial differentials.
Review Checklist for Source Code Changes