Skip to content

Carry the retardation denominators in the radar Doppler model - #538

Merged
matthewholman merged 4 commits into
mainfrom
fix/radar-doppler-retardation
Sep 3, 2026
Merged

Carry the retardation denominators in the radar Doppler model#538
matthewholman merged 4 commits into
mainfrom
fix/radar-doppler-retardation

Conversation

@matthewholman

Copy link
Copy Markdown
Collaborator

Closes #537.

On (6489) Golevka, with all 40 radar observations: reduced chi-square 6.53 → 0.79, the delay rows' rms(residual/sigma) 3.39 → 0.54, and the two centre-of-mass Doppler rows go from 63σ to 0.02σ. Aten improves slightly; Nyx is unchanged — as expected for a term that scales with range rate.

Both fixture generators encoded the old model. One lived outside the repository, which is why it went stale; the first commit brings it in under tools/ unchanged, the second corrects it with everything else. Only the Doppler values in radar_synthetic.json move, by 6e-7 to 1.7e-5 fractionally; the delays are untouched. Full suite green (549 passed).

The A2 figures quoted in #536 need that PR too — the non-grav solve cannot move A2 without it.

🤖 Generated with Claude Code

matthewholman and others added 2 commits September 3, 2026 17:19
tests/data/radar_synthetic.json was produced by a script that lived outside the
repository, so the fixture could not be regenerated by anyone else and quietly
went stale whenever the radar model changed. Add it under tools/ as it stood.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Doppler observable is c d(tau)/d(t_receive). Differentiating the two
implicit light-time equations leaves a denominator on each leg:

  dt_bounce  /dt_receive = (c + rho_down.v_receiver)/(c + rho_down.v_asteroid)
  dt_transmit/dt_receive = dt_bounce/dt_receive
                         * (c - rho_up.v_asteroid)/(c - rho_up.v_transmitter)
  range rate             = c (1 - dt_transmit/dt_receive)

To first order that is the instantaneous sum of the two one-way range rates,
which is what the model computed. The omitted term is a fractional error of
order rho.v/c. That is negligible for most targets and not at all negligible
for a fast one: on (6489) Golevka's 1995 apparition the line-of-sight rate
reaches 6 km/s, making it 5 to 7 Hz against stated uncertainties of 0.09 to
0.40 Hz -- a coherent, one-signed bias on every Doppler row.

The same denominator was already being applied to the range partials, as
ltdenom, so the Jacobian and the residual disagreed.

Both fixture generators encoded the old model and are updated with it, and
tests/data/radar_synthetic.json is regenerated: only the Doppler values move,
by 6e-7 to 1.7e-5 fractionally, and the delays are untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
matthewholman and others added 2 commits September 3, 2026 17:24
It was written outside the repository and so never saw the formatter.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@kjnapier kjnapier left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@matthewholman
matthewholman merged commit 6f52cc9 into main Sep 3, 2026
7 checks passed
@matthewholman
matthewholman deleted the fix/radar-doppler-retardation branch September 3, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Radar Doppler model omits the light-time retardation term

2 participants