Skip to content

Add ITP (Interpolate–Truncate–Project) bracketing root finder #269

Description

@dyreby

Add an ITP (Interpolate–Truncate–Project) bracketing root finder to twine-solvers.

Why ITP

ITP is a bracketing method that combines the reliability of bisection with superlinear convergence on smooth functions. Like bisection, it maintains a bracket that's guaranteed to contain a root — but instead of always evaluating the midpoint, it picks a smarter point through three steps:

  1. Interpolate — regula falsi step toward the root estimate
  2. Truncate — limit how far from the midpoint the step can go
  3. Project — ensure the point stays within a minmax-optimal region

The result: worst-case performance matches bisection (log₂ convergence), but typical performance is significantly faster.

Why it fits Twine

ITP is a natural complement to bisection in the bracketing solver family. The observer pattern is particularly interesting here — the same error recovery that bisection supports (assuming residual signs for failed evaluations, stopping early) applies directly. An observer watching ITP iterations could also monitor whether the interpolation is helping or whether the solver is falling back to bisection-like behavior.

Prerequisites

Depends on the shared bracketing types extracted in #250.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions