triqs.experimental.utility.utility.bisection

triqs.experimental.utility.utility.bisection()

Dispatched C++ function(s).

[1] (f: (float) -> float,
     x_low: float,
     x_high: float,
     y_target: float,
     precision: float,
     max_loops: int,
     x_name: str,
     y_name: str,
     verbosity: bool)
  -> tuple[float, float]

Solve \(f(x) = y\) on a bracketing interval using the bisection method.

Given an interval \([x_\mathrm{low}, x_\mathrm{high}]\) that brackets the target value, this method repeatedly halves the interval, keeping the half in which the target value remains bracketed, until the residual drops below the requested precision.

It raises an error if convergence is not reached within max_loops iterations.

Parameters:
f(float) -> float

Function \(f(x) : \mathbb{R} \to \mathbb{R}\) whose root is sought.

x_lowfloat

Lower bound of the bracketing interval.

x_highfloat

Upper bound of the bracketing interval.

y_targetfloat

Target value \(y\) for \(f(x)\).

precisionfloat

Absolute precision \(|f(x) - y|\) at which the iteration stops.

max_loopsint

Maximum number of iterations.

x_namestr

Name of the \(x\) variable, used in the progress log.

y_namestr

Name of the \(y\) variable, used in the progress log.

verbositybool

Whether to print the convergence progress.

Returns:
tuple[float, float]

Pair \((x, f(x))\) with \(f(x) = y\) within the requested precision.