Skip to content

LSMR's normal-equation stop is measured in the preconditioner's metric #389

Description

@schroedk

Motivation

LSMR's normal-equation stop is Paige & Saunders' S2, ‖Âᵀr‖ / (‖Â‖ ‖r‖) ≤ tol, and under
preconditioning every quantity in it is measured through M. Scott & Tůma state the consequence
directly for preconditioned LSQR (arXiv:2504.07580, §3.2): the
test ends up based on ‖(A S M_R⁻¹)ᵀ(b − A x)‖, "which depends on S and M_R", and "in some
cases this can lead to early termination".

within's Schwarz metric has dynamic range κ(M⁻¹) ~ 1e8–1e11, so the stop can be met in a metric
that has deflated the direction still carrying the gradient. The true-residual check added in #388
does not see this: it audits the recurrence against ‖b − A x‖, which confirms the Golub-Kahan
relation but says nothing about which directions the metric left reachable. Fong & Saunders derive
‖r_k‖ from orthogonality of U_{k+1} and ‖Aᵀr_k‖ = |ζ̄_{k+1}| from V_{k+1}, and the paper
carries no preconditioner at all.

The audit legs deleted in #388 were reaching for this and were repeatedly wrong because they kept
the metric's scale (#361, #362). The preconditioner-independent form is Gould & Scott's ratio,

ratioGS = (‖Aᵀr⁽ⁱ⁾‖ / ‖r⁽ⁱ⁾‖) / (‖Aᵀr⁽⁰⁾‖ / ‖r⁽⁰⁾‖)

which carries neither A's scale nor M's, and costs one Aᵀ apply when evaluated at the exit
rather than per iteration.

Goal

A tolerance stop's verdict does not depend on the preconditioner: a solve that M has deflated
into meeting S2, while the unpreconditioned normal-equation residual has not moved, is refused.
Cold-start behaviour and the per-iteration cost are unchanged.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions