Files
sim-numerics/article/sim_numerics.tex
T

2286 lines
113 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
%% GENERATED from article/sim_numerics.md by build_tex.py - do not edit by hand.
%% The .md is the canonical text; every number in it is checked by verify_article.py.
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
11pt,
a4paper]{article}
\usepackage{amsmath,amssymb}
\usepackage{iftex}
\ifPDFTeX
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
\usepackage{unicode-math} % this also loads fontspec
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
\usepackage{lmodern}
\ifPDFTeX\else
% xetex/luatex font selection
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\usepackage{longtable,booktabs,array}
\usepackage{calc} % for calculating minipage widths
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\usepackage{amsmath,amssymb}
\usepackage{textcomp}
\DeclareUnicodeCharacter{2032}{\ensuremath{'}}
\DeclareUnicodeCharacter{2212}{\ensuremath{-}}
\DeclareUnicodeCharacter{00D7}{\ensuremath{\times}}
\DeclareUnicodeCharacter{00B5}{\textmu}
\DeclareUnicodeCharacter{2192}{\ensuremath{\rightarrow}}
\DeclareUnicodeCharacter{0394}{\ensuremath{\Delta}}
\DeclareUnicodeCharacter{2082}{\textsubscript{2}}
\usepackage[margin=2.5cm]{geometry}
\usepackage[htt]{hyphenat}
\setlength{\emergencystretch}{3em}
\usepackage{etoolbox}
\AtBeginEnvironment{longtable}{\small}
\ifLuaTeX
\usepackage{selnolig} % disable illegal ligatures
\fi
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same}
\hypersetup{
pdftitle={Root Finding by Similarity and Analogy: A Bracketing Method with One Declared Constant},
pdfauthor={V. Sitnikov},
hidelinks,
pdfcreator={LaTeX via pandoc}}
\title{Root Finding by Similarity and Analogy: A Bracketing Method with
One Declared Constant}
\author{V. Sitnikov}
\date{}
\begin{document}
\maketitle
\begin{abstract}
Bisection places the next iterate at the midpoint because it uses no
information about the function's value. We replace that rule with a
\emph{similarity} rule: the step is proportional to how
\emph{dissimilar} the current outcome \(f(x)\) is to the expectation
\(0\), measured by a similarity function \(S:\mathbb{R}\to[0,1]\) with
\(S(0)=1\). We derive the contraction factor of the resulting iteration
in closed form; it predicts a linear rate to four digits when \(1-S\)
has a non-zero slope at the origin, and a sublinear \(e_n\sim C/n\) with
a predicted \(C\) when it does not, both confirmed. Three consequences
follow. First, with the \emph{ratio} similarity scaled by the far end
--- and with that combination only, of the five tested --- the rule
reproduces the false-position formula identically; so does the truncated
linear similarity scaled by a divided difference over the \emph{bracket
ends}, which shows that the boundary of novelty runs through which
points the difference is taken over. Second, any similarity fixed in
advance with the scale also fixed yields at best linear convergence at a
rate that is a property of the problem rather than of the method; on the
eight standard problems of §2.2, five to eight of them fail. Third, the
rate vanishes exactly when the scale equals the local scale of the value
axis; reading that scale off the data --- a divided difference, not a
fitted coefficient --- turns the step into \(|f|/|f'|\) and the
convergence superlinear.\\
The derivation fixes a \emph{base rule} before any benchmark is
consulted: a similarity whose approach to 1 is linear, the finest
available data-derived scale, and a safeguard that projects the step
onto the admissible interval rather than replacing it. It is,
explicitly, a Newton step with a three-point divided-difference
derivative, clipped to the bracket and projected onto the bisection
budget. The similarity sets that step, and its form is decisive: with
the tent the step is Newton's, with any of the other eight functions the
same method costs from 12\% to four times more. It carries a proven
worst case of twice bisection plus one step and exactly one free
constant, which we declare rather than argue away: the multiplier of
that budget. On the 154 problems of Alefeld, Potra and Shi it needs 2806
evaluations of \(f\) against 2820 for TOMS 748, 2889 for Brent and 2787
for Chandrupatla's method --- level in total --- and beats Chandrupatla
problem by problem 87 to 42 (exact sign test \(p=9\cdot10^{-5}\)). On
the 45 wide-bracket problems of Chandrupatla it beats Brent and TOMS 748
and loses to ITP and to Chandrupatla (3220 against 2896 and 2441). For
every data-derived scale, the ranking of the nine similarity functions
matches the derived law without exception.\\
The wide-bracket gap turns out to be not the order of the model but a
decision --- when to give the model up --- and the decision is a
similarity after all, of an unfamiliar kind: the similarity of a run to
its own past. A pure power is self-similar under zoom, so the
dimensionless configuration of the last three points recurs, while at a
simple root it tends to the linear prototype; the analogous pair yields
the local order, \(m=\ln L_f/\ln L_x\), and an exponential, self-similar
by translation, is its limit \(m=\infty\). Entering a halving regime
when that analogy holds with \(m\ge2\) --- the condition under which a
tangent step loses to a halving --- splitting at the point the order
predicts, and leaving when the split looks linear, together with four
smaller readings of the same kind and one borrowed element, gives the
method proposed here, A′. On the two sets it needs 2438 and 2005
evaluations against Chandrupatla's 2787 and 2441 and beats him problem
by problem on both, 103 to 30 and 29 to 7. The chain of decisions that
produced it was selected on those sets; tested once, after its code was
frozen, on 240 problems from six new families, it needs 3656 evaluations
against Chandrupatla's 5717 and wins 177 problems to 28. Over 855
problems in six corpora it is ahead of Brent, TOMS 748 and the recent
ModAB everywhere and keeps its bound where they break theirs on 118, 84
and 9 problems; against Chandrupatla it is ahead in total on five
corpora and level on the sixth. The lead is large on multiple,
fractional and nearly flat roots and a matter of per cent on simple
ones. Several of the resulting mechanisms coincide with classical ones
--- Lagouanelle's multiplicity estimate, false position on \(|f|^{1/m}\)
--- reached here from similarity and analogy and recognised afterwards;
what we found no counterpart for is the decision layer, where every
choice --- when to give the model up, where to split, when to return ---
is a judgment of similarity or of analogy, and the similarity that sets
the step, whose form is decisive (replacing it costs 12\% to 315\%).
\end{abstract}
\hypertarget{introduction}{%
\subsection{1. Introduction}\label{introduction}}
A bracketing root finder must decide, at every step, where inside the
bracket to evaluate next. Bisection answers ``in the middle'', which is
the correct answer when nothing is known. Every improvement since has
answered ``where a local model of \(f\) says the root is'': a secant in
false position, an inverse quadratic in Brent {[}2{]}, a cubic in TOMS
748 {[}1{]}, an interpolate--truncate--project cycle in ITP {[}4{]}, an
Anderson--Björck step behind a linearity check in ModAB {[}10, 20{]}.
Each of those answers carries constants: Illinois halves the stale
ordinate, Brent accepts an interpolation subject to three empirical
inequalities, ITP is governed by \(\kappa_1,\kappa_2,n_0\).
This paper asks a different question. Suppose the only thing available
is a \emph{similarity function} --- a map \(S\) from an outcome to
\([0,1]\), where 1 means ``identical to what was wanted'' and 0 means
``not similar at all'', in the sense used for parameter-free control in
{[}6{]}. Can a root finder be built out of \(S\) alone, and how does it
compare with methods built out of polynomial models and tuned constants?
The answer is sharp in both directions, and the negative half is as
informative as the positive half.
The paper proceeds in two stages. Sections 2--7 derive a base rule from
the similarity alone, measure it, and locate what it lacks: not a better
model but a decision, when to stop trusting the model it has. Section 8
supplies that decision with a similarity of the run to its own past, and
Section 9 tests it on four further corpora: three of them exposed two
last gaps of the base step and were used to close them, and the fourth
was fixed after the method's code was frozen and run once.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{the-similarity-step-rule}{%
\subsection{2. The similarity step
rule}\label{the-similarity-step-rule}}
\textbf{Definition 1 (Similarity step).} Let \([a,b]\) bracket a root,
\(x\) be the current iterate and \(x_\mathrm{far}\) the opposite end.
Let \(S:\mathbb{R}\to[0,1]\) with \(S(0)=1\) be a similarity function
and \(\sigma>0\) a scale. The next iterate is
\[x' \;=\; x \;+\; \bigl(1 - S(f(x)/\sigma)\bigr)\,(x_\mathrm{far} - x). \tag{1}\]
The rule is exactly the informal statement ``step further when the
outcome is dissimilar to the expectation, and less far when it is
similar''. Bisection is the degenerate member \(S\equiv\tfrac12\): a
similarity function that carries no information about \(f\).
\hypertarget{the-two-point-normalisation-is-false-position}{%
\subsubsection{2.1 The two-point normalisation is false
position}\label{the-two-point-normalisation-is-false-position}}
The most obvious way to make (1) scale-free is to normalise the
similarity by the two ends of the bracket,
\(S(a)=|f(b)|/(|f(a)|+|f(b)|)\) and \(S(b)=1-S(a)\), and to place the
next iterate at the similarity-weighted average of the ends.
\textbf{Proposition 1.} For the ratio similarity \(S(z)=1/(1+|z|)\) with
\(\sigma=|f(x_\mathrm{far})|\), equivalently for the endpoint weights
above, \[S(a)\,a + S(b)\,b \;=\; \frac{a f(b) - b f(a)}{f(b)-f(a)}.\]
That is the false-position formula. Two things must be said about how
far it reaches, because the obvious generalisation is false.
It is specific to that similarity. On \(f=x^2-2\) over \([1,4]\), where
false position gives 1.200000, the same construction gives 1.206812 for
\(e^{-|z|}\), 1.015228 for \(1/(1+z^2)\), 1.007624 for
\(1/\sqrt{1+z^2}\) and 1.214286 for the truncated linear form: one of
five reproduces it. So ``a similarity rule scaled by the bracket is not
a new method'' would be too broad a conclusion, and this paper's own
Table 3 refutes it --- bracket-scaled configurations take first and
fourth place on Chandrupatla and one of them solves 41 of 45, where
false position solves 6.
\textbf{Proposition 1'.} It is, however, specific to the \emph{bracket
ends} rather than to the ratio form. Take the truncated linear
similarity \(S(z)=\max(0,1-|z|)\) and the divided difference over the
two ends, \(\sigma=|f[a,b]|\cdot|b-a|=|f(b)-f(a)|=|f(a)|+|f(b)|\). Then
\(1-S=|f(a)|/(|f(a)|+|f(b)|)\), which is false position again, and the
agreement is exact to the last bit.
Together the two say where the boundary of novelty runs, and it is not
where one would guess: it runs through the words \emph{most recent} in
the definition of \(\hat f'\) in §3. A divided difference over the
bracket ends is three centuries old; the same difference over the most
recent iterates is the secant. In our measurements plain false position
solves 127 of the 154 Alefeld--Potra--Shi problems, against 153 for
bisection.
\hypertarget{the-contraction-law}{%
\subsubsection{2.2 The contraction law}\label{the-contraction-law}}
Write \(e_n = x_n - r\) for the error, \(D = x_\mathrm{far} - r\), and
let \(c\) be the slope of \(1-S\) at the origin,
\(1-S(z) = c\,z + O(z^2)\).
\textbf{Proposition 2 (Contraction law).} For a simple root and \(e_n\)
small, rule (1) satisfies
\[e_{n+1} \;=\; e_n\left(1 - \frac{c\,|f'(r)|\,D}{\sigma}\right) + O(e_n^2), \qquad \text{rate} = \left|1 - \frac{c\,|f'(r)|\,D}{\sigma}\right|. \tag{2}\]
\emph{Derivation.} \(|f(x_n)| = |f'(r)|\,|e_n| + O(e_n^2)\), hence
\(1-S(f(x_n)/\sigma) = c\,|f'(r)|\,|e_n|/\sigma + O(e_n^2)\), and
\(x_\mathrm{far}-x_n = D - e_n\). Substituting into (1) and discarding
second-order terms gives (2). \(\square\)
Table 1 checks (2) against measurement on \(f(x)=x^2-2\) over \([0,2]\)
with \(\sigma=|f(0)|\), for which \(|f'(r)|=2\sqrt2\), \(D=2-\sqrt2\)
and \(\sigma=2\).
\textbf{Table 1.} The contraction law against measurement, all rows at
the \emph{chosen} scale \(\sigma=|f(x_0)|\). \(c\) is the slope of
\(1-S\) at the origin and \(c_2\) the coefficient of \(z^2\) when
\(c=0\).
A similarity with \(c=0\) does not converge at a rate at all. Expanding
\(1-S=c_2z^2+O(z^4)\) in the same way as (2) gives
\(e_{n+1}=e_n-c_2|f'(r)|^2|D|e_n^2/\sigma^2+O(e_n^3)\), hence
\[e_n \;\simeq\; \frac{\sigma^2}{c_2\,|f'(r)|^2\,|D|}\cdot\frac1n, \tag{2a}\]
sublinear rather than stagnant. Reporting a ``measured rate'' for these
rows would report the value of \(e_{n+1}/e_n\) at whatever \(n\) the
window happened to end --- it creeps to 1 monotonically (0.925 at
\(n=10\), 0.991 at \(n=100\), 0.9998 at \(n=4000\)) --- so the
prediction tested is the coefficient in (2a) instead.
\begin{longtable}[]{@{}llll@{}}
\toprule\noalign{}
\(S(z)\) & \(c\) & predicted & measured \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
\(1/(1+\lvert z\rvert)\) & 1 & rate 0.1716 & 0.1716 \\
\(e^{-\lvert z\rvert}\) & 1 & rate 0.1716 & 0.1716 \\
\(1/(1+z^2)\) & 0, \(c_2=1\) & \(n\,e_n\to0.8536\) & 0.8503 \\
\(e^{-z^2}\) & 0, \(c_2=1\) & \(n\,e_n\to0.8536\) & 0.8498 \\
\(1/\sqrt{1+z^2}\) & 0, \(c_2=\tfrac12\) & \(n\,e_n\to1.7071\) &
1.6988 \\
\(\max(0,1-\lvert z\rvert)\) & 1 & rate 0.1716 & captured, see below \\
\end{longtable}
The last row is not a slow rate but an immediate failure, and it matters
because that similarity is the one this paper goes on to propose. At
\(x_0=0\) the residual is \(z=-1\), so \(S=\max(0,1-1)=0\), the step is
the whole bracket, the iterate lands exactly on \(x_\mathrm{far}\) and
never leaves: the error is 0.5858 after one step and after two hundred.
\textbf{The failure is a property of the chosen scale, not of the
similarity.} Under the derived scale of §3 the residual \(|f|/\sigma\)
stays below 1 --- on this problem the clip does not engage on a single
one of the seven steps the method takes --- the truncation never fires,
and the same function is the best of the nine (Table 4). This is the
paper's own thesis, that the content sits in the scale and not in the
shape of \(S\), showing up as a discontinuity in the behaviour of one
function.
\textbf{Corollary 1 (A chosen similarity is not enough).} For fixed
\(S\) and fixed \(\sigma\) the rate in (2) depends on \(|f'(r)|\), \(D\)
and \(\sigma\), none of which is under the method's control. Convergence
is at best linear and occurs only when the product lands in \((0,2)\).
Empirically, with \(\sigma\) taken as \(|f|\) at the starting point,
five to eight of the eight standard problems fail outright for the six
similarity functions tested. Those eight, used throughout as a quick set
and never as evidence on their own, are: \(x^2-2\) on \([0,2]\);
\(\cos x-x\) on \([0,1]\); \(e^x-2\) on \([0,2]\); \(x^3-x-2\) on
\([1,2]\); \(\sin x-\tfrac12\) on \([0,1.5]\); \(x^{10}-1\) on
\([0,1.3]\), which stalls false position; \(e^{-x}(x-1)\) on
\([-1,40]\), whose right end is flat to \(10^{-16}\); and \(\arctan x\)
on \([-1,3]\).
\textbf{Corollary 2 (Missing the calibration in either direction
costs).} The rate degrades as the product \(c\,|f'(r)|\,|D|/\sigma\)
departs from 1, upwards or downwards. We claim no symmetry between the
two directions, and the measurements do not support one: similarities
with unbounded slope --- \(1-\sqrt{|z|}\) has \(c\approx3.2\cdot10^{3}\)
at the resolution used, \(1-|z|^{1/3}\) has \(c\approx4.6\cdot10^{4}\)
--- fail on five and six of the eight problems with a chosen scale, yet
over the full benchmark they finish at 10497 and 11941, ahead of all
three \(c=0\) similarities at 14314, 15102 and 16394, and one of them
heads Table 3. Overshooting is the milder failure.
\textbf{Corollary 3 (The scale must come from the data).} The rate is
zero exactly when \(c\,|f'(r)|\,D/\sigma = 1\),
i.e.~\(\sigma = c\,|f'(r)|\,D\). Substituting this \(\sigma\) back into
(1) with \(c=1\) gives \(x' - x = |f(x)|/|f'|\), the Newton step. The
similarity rule is therefore superlinear precisely when its scale is the
\emph{local scale of the value axis}, and that scale is not available a
priori: it must be read off the evaluations.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{the-method}{%
\subsection{3. The method}\label{the-method}}
Corollaries 1--3 fix every choice in the method before any benchmark is
consulted. We record them here as a prediction, and Section 5.3 tests it
against the full grid. One number in the safeguard is not fixed by them,
and §3.1 declares it as the method's one free constant.
\textbf{Similarity: any with \(c\neq0\).} The law makes the shape of
\(S\) almost irrelevant and its slope at the origin decisive. We take
the plainest member, the \textbf{truncated linear} or tent form
\(S(z)=\max(0,1-|z|)\). It is not the ratio form \(1/(1+|z|)\), which is
a separate row of every table here; the two are distinguished throughout
because Proposition 1 applies to the ratio form and Table 1's last row
to the tent.
\textbf{Scale: the finest data-derived one.} We set
\(\sigma = |\hat f'|\cdot|x_\mathrm{far}-x|\) with \(\hat f'\) a divided
difference of the \textbf{most recent evaluations} --- not of the
bracket ends, which by Proposition 1' would give false position. A
divided difference is a computation, not a fitted coefficient: nothing
is chosen, regressed or tuned. The two-point difference has slope error
\(O(h)\) and gives the secant order \(\varphi\approx1.618\); the
three-point difference --- the derivative at \(x_n\) of the parabola
through the last three evaluations,
\(\hat f' = f[x_{n-1},x_n] + f[x_{n-2},x_{n-1},x_n](x_n-x_{n-1})\) ---
has error \(O(h^2)\). A Newton step whose derivative carries an
\(O(h^2)\) error satisfies
\(e' = e-f/\hat f' = e-(e-ce^2+\dots)(1+O(e^2)) = ce^2+O(e^3)\), so the
predicted order is \textbf{2} --- not Muller's 1.84, which belongs to a
method using the parabola's \emph{root} rather than its
\emph{derivative}. Measured medians are 1.584 for the two-point scale
and 2.000 for the three-point, against 1.809 for Brent and 2.654 for
TOMS 748.
\textbf{What the rule reduces to.} With \(S(z)=\max(0,1-|z|)\) one has
\(1-S=\min(1,|z|)\), and (1) becomes
\[x' \;=\; x + \operatorname{sign}(x_\mathrm{far}-x)\cdot\min\!\Bigl(\frac{|f(x)|}{|\hat f'|},\;|x_\mathrm{far}-x|\Bigr), \tag{4}\]
a Newton step with a three-point divided-difference derivative, clipped
to the bracket and then projected as in §3.1. That the tent turns the
similarity step into Newton's is a property of the similarity chosen,
not a sign that the similarity has dropped out: which \(S\) stands in
the step decides the step, and it is measured, not assumed --- Table 4
ranks the nine functions over the whole grid, the readings of §7 pay
most with the tent in the step and some of them lose with other
functions (§7), and in the proposed method replacing the tent by any
other function costs 12\% to 315\% (Table 9a).
We state the reduction ourselves rather than leave it to be discovered,
because it locates the contribution precisely. The base rule is not a
new family of methods. It is (i) a derivation that fixes every choice
--- which similarity, which scale, which safeguard --- before any
benchmark is consulted, and then predicts the ranking of all nine
similarity functions correctly; (ii) a safeguard of ITP's projection
type with ITP's truncation stage, and hence all three of its constants,
removed; (iii) the negative results of §10; (iv) the measurements. We
call it the \textbf{base rule}; the method this paper proposes builds on
it in Section 8.
\textbf{Algorithm.} Given \([a,b]\) with \(f(a)f(b)<0\) and tolerance
\(\varepsilon_x\):
\begin{verbatim}
evaluate fa = f(a), fb = f(b)
A, B <- a, b the proven bracket
x <- the endpoint with the smaller |f|; xp <- the other; xp2 <- none
n_max <- 2 * ceil(log2(|b-a| / xtol)); allow <- 2^n_max * xtol/2
while |B - A| > xtol:
far <- the end of [A,B] further from x
f' <- derivative at x of the parabola through (x,xp,xp2)
(two-point difference while xp2 does not yet exist)
sigma <- |f'| * |far - x|
if sigma is 0 or not finite: xn <- midpoint(A,B)
else:
xn <- x + min(1, |f(x)|/sigma) * (far - x) # the step, eq (4)
xn <- clamp(xn, hi - allow, lo + allow) # projection, eq (3)
if xn outside (A,B) or already evaluated: xn <- midpoint(A,B)
evaluate fn = f(xn); allow <- allow / 2
xp2, xp, x <- xp, x, xn
update the bracket: whichever of A,B keeps the sign change
return midpoint(A,B)
\end{verbatim}
Every quantity in it is either an evaluation of \(f\), a divided
difference of evaluations, or the halving that defines bisection ---
with one exception, the factor 2 in \texttt{n\_max}, which §3.1 declares
as the method's one free constant. The constant-free variant of §3.1
replaces the two \texttt{allow} lines by the earned credit of (3').
\hypertarget{the-safeguard-project-do-not-replace}{%
\subsubsection{3.1 The safeguard: project, do not
replace}\label{the-safeguard-project-do-not-replace}}
An interpolation-only rule has no worst-case bound. The obvious
safeguards \emph{replace} the computed step with a midpoint whenever
some progress test fails, and all of them are ruinous here, for a reason
specific to a fast method: a step that collapses the \emph{error} need
not halve the \emph{bracket}, so a bracket-based test fires on exactly
the steps that were best. With the three-point scale, replacing on that
test drops the observed order from 1.94 to 1.00 and the
Alefeld--Potra--Shi total from 2806 to 7260 --- worse than bisection.
The remedy is to keep as much of the computed step as the budget allows.
Let \(n_{\max}=2\lceil\log_2(w_0/\varepsilon_x)\rceil\) be twice the
bisection step count for the initial width \(w_0\) and \(x\)-tolerance
\(\varepsilon_x\), and let \(\epsilon=\varepsilon_x/2\). At step \(j\),
with the bracket \([\ell,h]\), define the allowance and the projection
\[\alpha_j = 2^{\,n_{\max}-j}\epsilon, \qquad x \;=\; \operatorname{clamp}\bigl(x_\mathrm{sim},\; h-\alpha_j,\; \ell+\alpha_j\bigr). \tag{3}\]
The next bracket is at most \(\max(x-\ell,\,h-x)\), so (3) gives
\(w_{j+1}\le\alpha_j\) directly, and induction bounds the run by
\(n_{\max}\) steps in exact arithmetic. In floating point the bracket
can land exactly on the boundary, and the termination test then asks for
one more; the guarantee stated and verified is therefore
\(2\lceil\log_2(w_0/\varepsilon_x)\rceil+3\) evaluations.
\textbf{The multiplier is the method's one free constant.} An earlier
version of this section argued that it is ``the factor already claimed
in the bound''. That is circular --- the bound is twice bisection
because two was chosen --- and measurement settles it
(\texttt{measure\_budget\_factor.py}, Linux):
\textbf{Table 1a.} The scheduled projection at budget multiplier \(c\),
i.e.~\(n_{\max}=\lceil c\cdot\log_2(w_0/\varepsilon_x)\rceil\). Total
evaluations, failures charged.
\begin{longtable}[]{@{}llll@{}}
\toprule\noalign{}
\(c\) & APS-154 & CHA-45 & both \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
1 & 4817 & 2997 & 7814 \\
1.25 & 2806 & 2752 & 5558 \\
1.5 & 2806 & 2889 & 5695 \\
2 & 2806 & 3220 & 6026 \\
3 & 2806 & 3756 & 6562 \\
4 & 2806 & 4006 & 6812 \\
\end{longtable}
On the canonical set the projection never binds once \(c\ge1.25\), so
the total does not move. On the wide-bracket set it moves monotonically
with \(c\), and 2 is not even the best value. Nor is zero slack
(\(c=1\)) the degenerate case it was claimed to be, ``a worst case of
exactly bisection'' under which ``the guard behaves as bisection'': it
costs 4817 and 2997, far from bisection's 7530 and 3090, and on the
wide-bracket set it beats \(c=2\). The multiplicative family has no
member that the bound singles out, so its multiplier is a genuinely free
constant.
\textbf{The budget earned rather than scheduled: a constant-free
variant.} The constant can be removed. Let \(s_j=\log_2(w_j/w_{j+1})\)
be the shrink a step delivers in bits --- bisection delivers exactly 1
--- and keep a credit
\[C \leftarrow \max(0,\;C+s_j-1),\qquad \alpha_j = w_j\,2^{\,C-1},\qquad x=\operatorname{clamp}\bigl(x_\mathrm{sim},\,h-\alpha_j,\,\ell+\alpha_j\bigr), \tag{3'}\]
leaving the step alone while \(C\ge1\). A step may under-deliver only by
what earlier steps banked, and since \(C\) never goes negative the
shrinks over \(j\) steps sum to at least \(j-C_0\): the run costs at
most bisection plus \(\lceil C_0\rceil\) steps. The endowment \(C_0\) is
therefore the promise, not a setting. \(C_0=0\) makes the allowance
exactly half the bracket on the first step, which forces the midpoint
and makes the method bisection; every \(C_0\in(0,1]\) promises the same
single extra step; and among those, 1 is the most permissive and ---
measured --- the cheapest:
\textbf{Table 1b.} The earned projection at endowment \(C_0\). Total
evaluations, failures charged.
\begin{longtable}[]{@{}lllll@{}}
\toprule\noalign{}
\(C_0\) & promise & APS-154 & CHA-45 & both \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
0.1 & bisection + 1 step & 5344 & 3051 & 8395 \\
0.5 & bisection + 1 step & 4656 & 3002 & 7658 \\
\textbf{1} & \textbf{bisection + 1 step} & \textbf{3568} & \textbf{3020}
& \textbf{6588} \\
2 & bisection + 2 steps & 3692 & 2712 & 6404 \\
5 & bisection + 5 steps & 3006 & 2615 & 5621 \\
\end{longtable}
A looser promise buys evaluations, as it must; within one promise the
cheapest endowment is determined. The constant-free variant is therefore
the earned projection with \(C_0=1\), whose guarantee ---
\(\lceil\log_2(w_0/\varepsilon_x)\rceil+4\) evaluations, bisection plus
one step with one more for the floating-point boundary --- is verified
on all 199 problems.
We nonetheless propose the scheduled projection with \(c=2\) and declare
its multiplier. On the canonical set it is 762 evaluations cheaper than
the earned variant (2806 against 3568), and there its total does not
depend on the multiplier at all; on the wide-bracket set the earned
variant is the cheaper (3020 against 3220). The two are the ends of a
trade stated in numbers: one declared constant and the better canonical
result, or no constant, a tighter bound and the better wide-bracket
result. The value 2 was fixed before any benchmark was consulted; what
changed after the question whether it was load-bearing is only that
it is now declared as a constant rather than argued to be none.
Two remarks apply to both forms.
\begin{itemize}
\tightlist
\item
\textbf{This is ITP's projection stage without ITP's truncation
stage.} All three of ITP's constants live in the truncation, whose
purpose is to repair regula falsi; the similarity step needs no
repair, so the truncation and every constant with it are dropped.
\item
\textbf{Writing the clamp in the form (3) rather than as a radius
\(\alpha_j-w_j/2\) about the midpoint is not cosmetic.} That radius is
a difference of two nearly equal numbers; the cancellation made the
computed radius too large by a relative \(8.9\cdot10^{-5}\), which
broke the invariant on eleven Chandrupatla problems.
\end{itemize}
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{experimental-protocol}{%
\subsection{4. Experimental protocol}\label{experimental-protocol}}
\textbf{Problem sets.} The 154 problems of Alefeld, Potra and Shi
{[}1{]} and the 45 of Chandrupatla {[}3{]}, taken programmatically from
SciPy's \texttt{scipy.optimize.\_tstutils} so that no bracket or root is
transcribed by hand.
\textbf{Cost model.} Evaluations of \(f\). A run counts as solved when
it reports convergence and lands within \(10^{-6}\) of the published
root; \(x\)-tolerance \(10^{-12}\); budget 200 evaluations.
\emph{Failures are charged the full budget}, so no method can buy a low
total by giving up early, and totals are reported over all problems
rather than over the subset a method happened to solve. Rankings are by
failures first, then by total.
\textbf{Fairness to the competitors.} Three deliberate concessions.
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
ITP is natively written against a half-width \(\epsilon\) and
terminates on \(b-a\le2\epsilon\); feeding the common tolerance in as
\(\epsilon\) would let it stop at twice its competitors' bracket
width, so \(\epsilon=\varepsilon_x/2\) is used.
\item
ITP is reported both at the authors' recommended constants and as a
\emph{per-problem oracle}, the best of a \((\kappa_1,n_0)\) grid
chosen separately for every problem --- not an achievable method,
included so that the state of the art cannot be said to have been
handicapped.
\item
Our implementation of ITP is validated against the method's own
theorem, that it never needs more than \(n_{1/2}+n_0\) iterations, on
all 154 problems for \(n_0\in\{0,1,2,5\}\).
\item
Where SciPy ships the method, the competitor \textbf{is the library}:
Chandrupatla is \texttt{scipy.optimize.elementwise.find\_root}, Brent
is \texttt{brentq}, TOMS 748 is \texttt{toms748}, each run with the
same stopping rule as every other method --- a bracket no wider than
\(\varepsilon_x\), the relative term at machine precision, no stopping
on \(|f|\) --- and each evaluation counted by the same wrapper around
\(f\). An earlier version gave each competitor the better of the
library's implementation and ours, problem by problem. That concession
backfired in the competitor's favour: our Chandrupatla stopped on a
bracket twice as wide as everybody else's --- the factor this protocol
corrects for ITP in item 1 and had not corrected there --- and the
per-problem minimum let the looser run win. With the tolerance
corrected our implementation and the library agree on all 199 problems
exactly, and Chandrupatla's totals move from 2785 to 2787 on the
canonical set and from 2423 to 2441 on the wide-bracket set. For Brent
the library is slightly dearer than our implementation (7004 against
6991 over both sets); we use the library anyway, because it is the
implementation a reader can check. ITP has no library implementation,
which is why it is checked against its own theorem instead; bisection
and the false-position family are not in SciPy either and are ours.
\end{enumerate}
\textbf{Reproducibility.} All numbers come from a single Linux run. The
test functions call \texttt{libm}, whose last digit differs between
platforms; the same SciPy version scores 2819 for TOMS 748 on Windows
and 2820 on Linux for the same set. Every number stated in this paper is
checked against the run data by a script that is part of the test suite.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{results}{%
\subsection{5. Results}\label{results}}
The grid is nine similarity functions × four scales × seven safeguards =
252 configurations, plus twelve baselines: 264 in all. The base rule of
Section 3 --- tent similarity, three-point scale, projection safeguard
with its multiplier declared --- is one entry of that grid, fixed by the
theory rather than chosen from the ranking; the constant-free earned
variant of §3.1 is shown beside it. Chandrupatla's own method and
Dekker's are among the baselines; an earlier version of these tables was
drawn up before either was added.
\textbf{Table 2.} Alefeld--Potra--Shi, 154 problems, out of 264
configurations. Places by failures first, then total.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
\#
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
configuration
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
tuned
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
solved
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
total evals
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
\(>2\times\)
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
1 & Chandrupatla & no & 153/154 & 2787 & 0 \\
2 & the same rule with no safeguard at all & no & 153/154 & 2806 & 0 \\
\textbf{3} & \textbf{base rule: tent, 3-point, projection (\(c=2\))} &
\textbf{no} & 153/154 & \textbf{2806} & 0 \\
4 & TOMS 748 & yes & 153/154 & 2820 & 0 \\
5 & Brent & yes & 153/154 & 2889 & 0 \\
12 & Dekker & no & 153/154 & 3158 & 0 \\
13 & ITP, per-problem oracle & yes & 153/154 & 3260 & 0 \\
20 & Ridders & no & 153/154 & 3313 & 0 \\
29 & constant-free variant: earned projection & no & 153/154 & 3568 &
0 \\
34 & ITP, recommended constants & yes & 153/154 & 3957 & 0 \\
73 & Illinois & yes & 153/154 & 7045 & 0 \\
79 & bisection & no & 153/154 & 7530 & 0 \\
244 & false position & no & 127/154 & 10560 & --- \\
\end{longtable}
The base rule and the same rule without any safeguard tie at 2806: the
projection never binds on this set. By total, Chandrupatla's method is
first with 2787, 0.7\% fewer --- the same order of margin as the 0.5\%
by which the base rule leads TOMS 748, which we read as a tie. Problem
by problem the picture is the other way round: on the problems both
solve the base rule beats Chandrupatla 87/24/42 (wins/ties/losses; exact
two-sided sign test \(p=9\cdot10^{-5}\)), TOMS 748 86/16/51, Brent
102/11/40, ITP at its recommended constants 132/3/18, the per-problem
ITP oracle 121/4/28, and bisection 152/1/0. It wins twice as many
problems as it loses against Chandrupatla and trails him in total
because its losses are the larger ones. The constant-free variant goes
79/3/71 against Chandrupatla (\(p=0.57\), a tie in problems), 77/9/67
against TOMS 748 and 78/5/70 against Brent, and loses on the total to
all three.
\textbf{Table 3.} Chandrupatla, 45 problems, brackets up to \(10^{12}\)
wide, out of 264 configurations.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
\#
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
configuration
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
tuned
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
solved
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
total evals
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
\(>2\times\)
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
1 & similarity, \(1-\sqrt{\lvert z\rvert}\), bracket scale, projection &
no & \textbf{41/45} & 4516 & 0 \\
2 & Chandrupatla & no & 40/45 & 2441 & 0 \\
3 & ITP, per-problem oracle & yes & 40/45 & 2647 & 0 \\
4 & similarity, \(e^{-\lvert z\rvert}\), bracket scale, both guards & no
& 40/45 & 2736 & 0 \\
6 & ITP, recommended constants & yes & 40/45 & 2896 & 0 \\
10 & constant-free variant: earned projection & no & 40/45 & 3020 & 0 \\
16 & bisection & no & 40/45 & 3090 & 0 \\
\textbf{45} & \textbf{base rule: tent, 3-point, projection (\(c=2\))} &
\textbf{no} & 40/45 & \textbf{3220} & 0 \\
159 & TOMS 748 & yes & 40/45 & 4000 & 15 \\
227 & Brent & yes & 38/45 & 4115 & 18 \\
228 & the same rule with no safeguard at all & no & 35/45 & 4104 & 10 \\
\end{longtable}
The set's nominal winner is a similarity configuration that solves one
problem more than anything else, 41 of 45, at a worse total; ranking by
failures first puts it on top, and we report it as such rather than by
the total that would flatter our proposal. Here Chandrupatla's method is
genuinely the stronger: it beats the base rule 26 problems to 9
(\(p=0.006\)) and by 3220 against 2441 in total. The proposed rule beats
Brent 30/4/4 and TOMS 748 31/1/8 --- both of which exceed the
\(2\times\) bound on 18 and 15 problems --- and loses to ITP 17/0/23 and
to the ITP oracle 16/0/24. The wide-bracket set is where the multiplier
matters (Table 1a) and where the constant-free variant is the cheaper
form, 3020 against 3220. Over both sets the base rule needs 6026 and the
constant-free variant 6588, against 5228 for Chandrupatla, 5907 for the
ITP oracle, 6820 for TOMS 748 and 7004 for Brent.
\hypertarget{what-the-guarantee-costs}{%
\subsubsection{5.1 What the guarantee
costs}\label{what-the-guarantee-costs}}
It depends on which bound is bought. Against the identical rule with no
safeguard at all:
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
solved
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
total evals
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
runs over the \(2\times\) bound
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
APS, no safeguard & 153/154 & 2806 & 0 \\
APS, projection --- base rule (\(2\times\) bisection) & 153/154 & 2806 &
0 \\
APS, earned projection --- constant-free (bisection + 1 step) & 153/154
& 3568 & 0 \\
Chandrupatla, no safeguard & 35/45 & 4104 & 10 \\
Chandrupatla, projection --- base rule & 40/45 & 3220 & 0 \\
Chandrupatla, earned projection --- constant-free & \textbf{40/45} &
\textbf{3020} & \textbf{0} \\
\end{longtable}
The projection of the base rule never binds on the canonical set, so its
totals are identical to the last evaluation; on the wide-bracket set it
solves five more problems for 21\% fewer evaluations. The earned
projection promises twice as much --- a worst case of bisection plus one
step instead of twice bisection --- and pays for it on the canonical
set, 762 evaluations or 27\%, while on the wide-bracket set it is the
cheapest of the three. Both are the opposite of the usual trade on at
least one set, and that is the point of projecting rather than
replacing: the two safeguards that replace cost 7260 and 7239 on
Alefeld--Potra--Shi, against 2806.
\hypertarget{wall-clock-time-and-why-it-is-not-the-cost-model}{%
\subsubsection{5.2 Wall-clock time, and why it is not the cost
model}\label{wall-clock-time-and-why-it-is-not-the-cost-model}}
Evaluations of \(f\) are the cost model because in any real problem
\(f\) is the expensive part. Wall-clock time measures something narrower
--- the method's own arithmetic per step --- and it is implementation-
and language-bound. We report it because a reader will ask, and because
what it shows is instructive.
On the 199 problems as they stand, every \(f\) being a formula of a few
operations, the base rule is the \textbf{slowest} of the pure-Python
methods compared, at 32.8 ms against 18.4 for Brent, 21.1 for ITP, 14.2
for Ridders and 22.9 for bisection --- while using the fewest
evaluations of all of them, 4991 against 5932, 5675, 6421 and 9474.
Bisection, needing nearly twice the evaluations, finishes in two thirds
of our time.
Those evaluation counts are \emph{raw}: they are what the timing loop
actually spent, and a failed run contributes only the evaluations it
made before the budget ran out. They are therefore not the totals of §5,
where a failure is charged the full 200-evaluation budget so that no
method can buy a low score by giving up --- 4991 raw against 6026
charged for the base rule, 5932 against 6991 for Brent (our pure-Python
implementation, which is what is timed; the tables use the library's
\texttt{brentq}, 7004), 9474 against 10620 for bisection. Wall-clock
time can only be compared against what was really executed, so the raw
counts are the right companions to the milliseconds; every comparison in
§5 uses the charged ones. Both are stated to avoid the appearance of two
incompatible sets of numbers for the same methods.
That inversion is the point. Making \(f\) progressively more expensive
by a controlled amount of arithmetic and timing the sweep directly ---
nothing subtracted, nothing modelled --- the base rule overtakes ITP
once one call to \(f\) costs about 9 µs and Brent at about 20 µs, which
on this machine is of the order of a hundred arithmetic operations.
Below that the ranking is decided by per-step overhead; above it, by
evaluations.
Three caveats, all of them limitations of the measurement rather than of
the methods. Timings vary by tens of percent between runs even on an
idle machine. An attempt to separate our per-step cost into
``algorithm'' and ``Python call overhead'', by timing a flattened
rewrite of the same rule, produced a variant that diverged from the
original on 42 of the 199 problems and was therefore discarded rather
than quoted; the question stays open. And an earlier version of this
measurement estimated a per-evaluation overhead by subtracting the
measured cost of \(f\), which returned \emph{negative} overheads for
four of six methods --- an impossibility that condemned the estimator,
and the reason nothing is subtracted here.
\hypertarget{the-law-across-the-whole-grid}{%
\subsubsection{5.3 The law across the whole
grid}\label{the-law-across-the-whole-grid}}
Corollaries 1--3 predict an ordering of the nine similarity functions
and of the four scales. Table 4 reports it. The prediction holds without
exception for every data-derived scale: the three similarities with
\(c=1\) occupy the top three places and the three with \(c=0\) the
bottom three. For the chosen scale the two groups are indistinguishable
(16102 against 15345), which is consistent --- with a chosen scale
nothing converges well and the ordering carries no information.
\textbf{Table 4.} Mean total evaluations over both sets, step guard,
grouped by the slope \(c\) of \(1-S\) at the origin.
\begin{longtable}[]{@{}lll@{}}
\toprule\noalign{}
scale & \(c=1\) (linear approach) & \(c=0\) (quadratic approach) \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
3-point derived & \textbf{6893} & 22315 \\
2-point derived & 6981 & 22206 \\
bracket & 10279 & 19127 \\
start (chosen) & 16102 & 15345 \\
\end{longtable}
Ranked individually and best over scales, the similarities come out
\(1-|z|\) (6560), \(e^{-|z|}\) (6895), \(1/(1+|z|)\) (7118),
\((1+|z|)^{-2}\) (9578), \(1-\sqrt{|z|}\) (10546), \(1-|z|^{1/3}\)
(12002), \(e^{-z^2}\) (14307), \(1/(1+z^2)\) (15102), \(1/\sqrt{1+z^2}\)
(16394); the scales come out 3-point (6560), 2-point (6702), bracket
(9107), start (14540). Both orderings are those the law predicts, and
both were predicted before the grid was run.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{where-the-evaluations-go}{%
\subsection{6. Where the evaluations
go}\label{where-the-evaluations-go}}
Splitting each run at the geometric mean of the initial width and the
attainable tolerance --- the log-midpoint of the journey, at which
bisection by construction has spent half its evaluations --- separates
the \emph{approach} from the \emph{endgame}. On Alefeld--Potra--Shi the
two-point rule spends 2235 on the approach and 668 on the endgame
against Brent's 2175 and 515: its deficit is almost entirely the
endgame, i.e.~the order, which is what motivated the three-point scale.
On Chandrupatla it spends 1068 and 1161 against Brent's 1343 and 1358,
winning both phases.
Two natural explanations of the Chandrupatla advantage were tested and
\emph{refuted}. Brent discards 53.3\% of its interpolations to its
safeguard on the set it wins and only 34.0\% on the set it loses, so
safeguard rate is not the mechanism; and on Chandrupatla Brent is the
bolder of the two --- 56.3\% of its probes land in the outer tenths of
the bracket against our 41.8\% --- so step length is not the mechanism
either.
The mechanism is step \emph{quality}. Reconstructing each method's
bracket from the signs it observed, the median probe removes 0.500 of
the bracket for every method on Alefeld--Potra--Shi, but on Chandrupatla
it removes 0.275 for the similarity rule against 0.058 for Brent and
0.068 for TOMS 748 --- and that comparison already flatters them, since
69 and 141 of their probes respectively fall outside the proven bracket
and are excluded, against none of ours. High-order interpolation is a
wager that \(f\) is locally polynomial. When the wager pays, order 1.84
or 2.65 wins the endgame; when it fails, the probes are wasted. The
similarity rule makes the weakest available assumption --- a single
local slope --- and degrades gracefully.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{where-the-similarity-is-read}{%
\subsection{7. Where the similarity is
read}\label{where-the-similarity-is-read}}
Everything above reads the similarity in one place: the \emph{length} of
the step, \((1-S(z))\) times the distance to the far end. But a
bracketing iteration takes several decisions per step, and the
similarity was not consulted in any of the others: which end counts as
far (decided by distance), which points the local slope is estimated
from (decided by recency), and whether the step is worth taking at all
(decided after the fact, by the safeguard). Each of those is a place
where a similarity can be read, and the placement turns out to matter
more than the form of \(S\).
Three readings were added to the base rule of §3 (tent similarity,
three-point scale), each parameter-free and each measured on the
protocol of §4; every number below is re-checked against its own sweep
file by \texttt{verify\_article.py}, and every configuration in Table 5
keeps the \(2\lceil\log_2(w_0/\varepsilon_x)\rceil+3\) guarantee (0
violations) and solves 193 of the 199 problems.
Where a safeguard other than the projection of §3.1 appears, it is one
of the grid's. \emph{safe} is the projection preceded by a step-length
test --- a step not at most half the step taken two evaluations earlier
is replaced by a halving --- with the projection still carrying the
bound. \emph{credit} replaces the scheduled allowance of (3) by one
earned step by step: a surplus is banked whenever a step shrinks the
bracket by more than half and drawn on when it shrinks it by less, which
bounds the run by bisection plus one step. \emph{bracket} and
\emph{both} are the replacing safeguards of §3.1, which keep a bound at
the price of the order; \emph{step} alone and \emph{none} carry no
bound.
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
\textbf{Trust before the step.} The step trusts a local slope, so the
question of trust is whether that slope has settled: if two
consecutive estimates have opposite signs the local model is not
established, and the evaluation is spent halving instead. A sign is
compared, not a magnitude.
\item
\textbf{Which points the model uses.} For a linear \(f\) the ratio of
positions \(\xi=(x-u)/(v-u)\) and the ratio of values
\(\varphi=(f(x)-f(u))/(f(v)-f(u))\) coincide, so \(|\varphi-\xi|\)
measures how unlike a linear configuration a triple is. Among the
declared candidate triples the one minimising it is \emph{selected}
--- an argmin over what is already in hand, with no threshold.
\item
\textbf{Which end is far.} Read by dissimilarity instead of distance:
the end whose \(|f|\) is larger is the one less similar to the target.
\end{enumerate}
\textbf{Table 5.} Reading the similarity in one more place is worth more
than changing \(S\). Evaluations of \(f\); failures charged the full
budget.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}
>{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2500}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
configuration (all with the guarantee, 193/199)
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS-154
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA-45
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
both
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
base rule: tent, 3-point, projection \(c=2\) (§3) & 2806 & 3220 &
6026 \\
constant-free variant: earned projection (§3.1) & 3568 & 3020 & 6588 \\
(1) trust before the step, projection & 2848 & 3114 & 5962 \\
(1)+(2) points chosen by shape, \emph{safe} & \textbf{2527} & 3126 &
5653 \\
(1)+(3) far end by dissimilarity, projection & 2726 & \textbf{2799} &
\textbf{5525} \\
(1)+(2)+(3), \emph{safe} & 2884 & 2871 & 5755 \\
Chandrupatla & 2787 & 2441 & 5228 \\
TOMS 748 & 2820 & 4000 & 6820 \\
ITP, per-problem oracle & 3260 & 2647 & 5907 \\
\end{longtable}
Two results here are worth stating plainly. First, the canonical set
improves from 2806 to \textbf{2527}, which is below every method
measured, including Chandrupatla's 2787, with the worst-case guarantee
intact. It hardly feels the declared multiplier of §3.1: 2527 for every
multiplier from 1.5 to 4, 2541 at 1.25
(\texttt{measure\_records\_vs\_multiplier.py}). Second, on the two sets
together the 5525 of reading (3) passes ITP's oracle (5907) but not
Chandrupatla (5228): the remaining gap is entirely on the wide-bracket
families, where Chandrupatla needs 2441 against our 2695 (reading (3)
under \emph{safe}).
The readings do not compose. Taken together, (2) and (3) give 2884 and
2871 --- worse than either alone on the canonical set, and on the
wide-bracket set worse than (3) alone. Two selections that are each an
improvement interfere, which is a reason to measure composition rather
than assume it.
\textbf{Which similarity stands in the step decides whether a reading
pays.} The readings above, and the decision \emph{defect} of §7.2,
compare quantities directly --- an ordinal judgment of which is more
similar, in which every decreasing \(S\) would decide alike. Their gains
nevertheless depend on the \(S\) that sets the step
(\texttt{audit\_similarity\_places.py}, on the same sweeps): on the
canonical set the triple chosen by shape gains 493 evaluations with the
tent in the step and loses 250 with \(1/\sqrt{1+z^2}\); \emph{defect}
gains 283 with the tent and loses 215 with \(1-|z|^{1/3}\). The records
of this section are the pairing of the tent step with these judgments,
not the judgments alone.
Under the constant-free earned projection the same readings gain far
less. Reading (1) gives 3507 and 2997, (1)+(2) 3755 and 3021, (1)+(3)
3857 and 3002, all three together 4354 and 3037, against 3568 and 3020
for the constant-free variant itself: the earned budget binds early on
the canonical problems, and what the readings buy under the projection
is mostly room that the earned budget does not grant.
\hypertarget{the-similarity-function-belongs-to-the-place-not-to-the-method}{%
\subsubsection{7.1 The similarity function belongs to the place, not to
the
method}\label{the-similarity-function-belongs-to-the-place-not-to-the-method}}
Everything above varies \emph{where} the similarity is read while
keeping one function \(S\) for the whole method. That is itself an
assumption, and it is measurable. Proposition 1 says that the ratio
similarity scaled by the far end is false position; what it does not say
is \emph{why} false position stalls. Write \(|f|\sim K e^m\) near the
current point, \(e=|x-r|\). Then the residual ratio against the far end
needs no slope at all,
\[z \;=\; \frac{|f(x)|}{|f(x_\mathrm{far})|} \;=\; \Bigl(\frac{e}{E}\Bigr)^{m}, \qquad\text{so}\qquad z^{1/m} \;=\; \frac{e}{E}, \tag{5}\]
and under the ratio similarity \(S=1/(1+|z|)\) the step fraction is
\(z/(1+z)\), which is exactly inverse linear interpolation. False
position therefore reads a dimensionless ratio \emph{at order one} on an
approach of order \(m\): its three-century-old stall is a mismatch
between the similarity function and the place it is read in. The
exponent \(1/m\) is not a constant --- \(m=1/(1-ff''/f'^2)\),
Lagouanelle's estimate of the multiplicity {[}13{]} with the derivatives
replaced by divided differences, comes from three evaluations already
paid for, as in item 5 of §10, and is 1 whenever the power model does
not apply.
Measured over the 252 cells of the grid, the correction behaves exactly
as that reading predicts and not at all as a universal improvement.
Paired inside each (function, safeguard) cell of the far-end reading it
is cheaper in 29 of 60 cells --- indistinguishable from a coin. But in
the one pairing where that reading \emph{is} exact inverse
interpolation, the ratio similarity, it is cheaper under all seven
safeguards:
\textbf{Table 6.} The measured order in the step place, on the far-end
reading with the ratio similarity \(1/(1+|z|)\). Cheaper in 7 of 7
safeguards; in 29 of 60 cells over all nine functions.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
safeguard
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS, \(m=1\)
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS, measured \(m\)
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA, \(m=1\)
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA, measured \(m\)
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
both & 4522 & \textbf{3675} & 3406 & \textbf{3241} \\
bracket & 4606 & \textbf{3542} & 3602 & \textbf{3359} \\
credit & 5190 & \textbf{4686} & 3013 & \textbf{2884} \\
projection & 6932 & \textbf{6364} & 4789 & \textbf{4554} \\
safe & 5987 & \textbf{5229} & 4134 & \textbf{3954} \\
step & 6435 & \textbf{5551} & 4287 & \textbf{4068} \\
none & 10676 & \textbf{10043} & 8265 & \textbf{7794} \\
\end{longtable}
Two limits must be stated with it. The estimator is \emph{biased low}:
on a pure cube, with no noise at all, it returns 2.830 rather than 3,
because a parabola through three points carries only the second
difference. The bias is towards \(m=1\), that is towards the uncorrected
reading, which is the harmless direction, but it is a bias. And the
correction does not rescue the far-end reading as a method: the best
cell it reaches on the wide-bracket set is 2884, against 2695 for
reading (3) above and 2441 for Chandrupatla. In the \emph{slope} reading
of §3 the same exponent is harmful, \(2806\to2854\), which is the same
statement read from the other side --- a function that does not belong
to a place does not become right by being applied there.
\hypertarget{the-decision-place}{%
\subsubsection{7.2 The decision place}\label{the-decision-place}}
Three places have now been measured: the step length, the far end, and
the points the model is built on. The fourth is the \emph{decision} ---
whether the local model deserves this evaluation or halving is the
better use of it. Chandrupatla's method is strong exactly there: it
refuses its model on most steps by the acceptance band
\(1-\sqrt{1-\xi}<\varphi<\sqrt{\xi}\), with \(\xi\) and \(\varphi\) the
ratios of positions and of values defined above. The rule of §3 has no
similarity in this place at all: a sign gate and a projection that
repairs \emph{after} the step.
Three readings of that place were measured, each on quantities already
in hand and each without a constant. Two are ours: refuse when the
configuration is less like a linear one than the iterate is off-centre,
\(|\varphi-\xi|>\min(\xi,1-\xi)\) (``defect''); and refuse when the
configuration's similarity to linear falls below the iterate's
similarity to the root, \(S(|\varphi-\xi|)<S(z)\), with the \emph{same}
\(S\) in both places (``simpair''). The third is \emph{Chandrupatla's
own band}, placed inside our step rule. It is not a proposal; it is an
instrument, and it answers whether the remaining gap lives in this
place.
In total, no. With Chandrupatla's band in our step, the wide-bracket set
costs 3059 under the projection and 2892 under \emph{credit}, against
his 2441, while the canonical set rises from 2806 to 5432. The band is
not idle --- it refuses 63.5\% of steps --- so this is a decision that
was taken and did not pay \emph{in total}. Per family it did pay, and
where: it closes almost the whole gap on the flat families and gives
back more than that on the families where our step is good. §7.4 takes
this apart; the short form is that the decision place does hold most of
the gap, but no reading measured so far makes that decision correctly
for \emph{our} step.
Our own readings do not close it either (best 2897 on the wide-bracket
set), but ``defect'' sets a new best on the canonical set: \textbf{2523}
at 153/154 under the projection of the base rule, below the 2527 of
reading (2) and below every method measured, with the guarantee intact
--- and, unlike 2527, the same for every multiplier from 1.25 to 4.
Under the earned projection it gives 3545 and 2949 (6494 against 6588),
the best of the readings of this section without a constant; the flat
regime of §8 does better still. It refuses only 6.6\% of steps, the
fewest of the three. Over both sets it costs 5733 against the 5525 of
reading (3), because it gives back on the wide brackets (3210) what it
gains on the canonical problems --- so it is a second point on the same
trade, not a replacement.
\hypertarget{six-problems-of-the-two-sets-are-scored-unsolved-for-every-method}{%
\subsubsection{7.3 Six problems of the two sets are scored unsolved for
every
method}\label{six-problems-of-the-two-sets-are-scored-unsolved-for-every-method}}
Chasing the remaining gap to Chandrupatla led to a property of the
benchmarks themselves. On the five problems of the wide-bracket family
\texttt{fun7}, and on the single canonical problem \texttt{aps.13.00},
the declared root is 0 while \(f\) vanishes \emph{identically} on a
neighbourhood of it in floating point: \(f(0\pm t)=0\) for every \(t\)
up to at least \(3.2\times10^{-2}\), because the exponential factor
underflows --- at the returned points \(|f(x)|\) is below the smallest
normal double. Every method therefore stops after 8 to 28 evaluations at
a point where \(f(x)=0\) \emph{exactly} --- a genuine root --- and every
method is then scored as having failed, because the harness asks for
\(|x-\text{root}|\le10^{-6}\) while the returned point sits up to
\(2.8\times10^{-2}\) away.
The consequence is arithmetic. Each such problem charges the full budget
of 200 evaluations to every method: about 1150 evaluations of every
reported two-set total --- ours, Chandrupatla's, TOMS 748's, ITP's,
Brent's, bisection's --- are this artefact, and the ``153 of 154'' and
``40 of 45'' that every method reports are statements about the scoring
rather than about the methods. Re-scored with the criterion ``a root is
a root'' (\(|x-\text{root}|\le10^{-6}\) \emph{or} \(f(x)=0\)), the same
runs solve 199 of 199 for every method except Brent's 197, and the
totals fall as follows.
\textbf{Table 7.} The same runs under the harness criterion and under
``a root is a root''. The ranking is unchanged; the magnitudes are not,
and neither is the size of the remaining gap on the wide-bracket set:
235 evaluations, or 16\%, not 10\%.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 8\tabcolsep) * \real{0.2000}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
method
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS as scored
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS re-scored
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA as scored
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA re-scored
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
ours, (1)+(2) points by shape & \textbf{2527} & \textbf{2337} & 3108 &
2159 \\
ours, base rule (projection) & 2806 & 2634 & 3220 & 2357 \\
Chandrupatla & 2787 & 2595 & \textbf{2441} & \textbf{1505} \\
TOMS 748 & 2820 & 2636 & 4000 & 3088 \\
Brent & 2889 & 2707 & 4115 & 3238 \\
ITP & 3957 & 3767 & 2896 & 1907 \\
bisection & 7530 & 7338 & 3090 & 2136 \\
\end{longtable}
\hypertarget{where-the-wide-bracket-limit-actually-is}{%
\subsubsection{7.4 Where the wide-bracket limit actually
is}\label{where-the-wide-bracket-limit-actually-is}}
The remaining gap looks diffuse --- per family +57, +49, +42, +39, +30
and smaller --- but part of it has one address. The \texttt{fun1} family
is the same function with brackets of growing width, and our cost
against Chandrupatla's across them is 7/8, 12/12, 19/15, 59/24, 63/44:
we tie or win while the bracket is narrow and lose progressively as it
widens. The endgame is not the cause --- our observed order on those
very problems is the higher one (3.63 against 2.02 on the
\(2\times10^4\)-wide bracket). The cause is the rate of progress far
from the root: 59 evaluations on a \(2\times10^4\)-wide bracket is what
bisection itself needs
(\(\lceil\log_2(2\times10^{16})\rceil\approx54\)), i.e.~there we advance
by about one halving per evaluation while Chandrupatla advances by about
2.3.
It is not the guarantee that caps us. With the safeguard removed
entirely the same problems cost 46, 57, 61 and 68 against bisection's
57, 77, 45 and 45 --- better on the wide brackets, \emph{worse than
bisection} on \texttt{fun3.1} and \texttt{fun5.1} --- and still far from
Chandrupatla's 24 and 44.
Nor is it that the step fails to be relative to the bracket. With the
tent similarity \(1-S=\min(1,|f|/(|\hat f'|D))\), so by (4) the step is
exactly \(\min(D,|f|/|\hat f'|)\): a \emph{fraction} of the distance to
the far end, and the similarity is that fraction. Nor does the iterate
creep along one side without moving the proven bracket: measured probe
by probe, 91.5\% of our evaluations on the \(2\times10^4\)-wide bracket
do shrink the bracket, slightly \emph{more} often than Chandrupatla's
87.5\%.
What differs on \texttt{fun1} is how much each probe removes. Ours
shrinks the bracket by 0.93 halvings per evaluation there,
Chandrupatla's by 2.30. On a wide bracket of a convex function the
Newton step systematically undershoots, because a linear model of the
value axis cannot see the curvature that separates the iterate from the
root; a model that carries the curvature --- inverse quadratic
interpolation --- lands far closer.
That mechanism is right for \texttt{fun1} and \emph{wrong as a statement
about the whole gap}. Replaying our own trajectories on the 33 problems
where we lose, and placing both models on the \emph{same} evaluations
--- one extra evaluation each, from the same state --- splits the 256
evaluations of the gap in two. On \texttt{fun1} (58 of them, about a
quarter) inverse quadratic interpolation from our own three points
removes far more of the bracket than our step did: 10.37 halvings
against 0.62 on the \(2\times10^4\)-wide bracket. There the gap is the
order of the model, and the reason is structural: our step
\(x+(1-S)(x_\mathrm{far}-x)=S\,x+(1-S)\,x_\mathrm{far}\) is a convex
combination of two points, while the quadratic interpolant's Lagrange
weights at 0 always include exactly one \emph{negative} weight when the
triple brackets the root (verified on all 428 non-degenerate states; in
the other three the negative weight underflowed to \(-0\)). A similarity
in \([0,1]\) cannot produce a negative weight --- Proposition 1 extended
from two points to three.
But 172 of the 256 --- two thirds --- sit on
\texttt{fun3}--\texttt{fun6}, which are pure powers of order 3, 5, 9 and
19, and there \emph{no} interpolating model works: our step removes
0.41--0.75 halvings of the bracket per evaluation, inverse quadratic
interpolation from the same points only 0.01--0.17. Chandrupatla does
not win those families with his model --- his traced run bisects 92, 96,
100 and 100\% of his steps. We lose them because our step is slower than
bisection there and our guarantee, at most twice bisection, licenses
exactly that. His band inside our step confirms it family by family:
under the projection it takes \texttt{fun4}, \texttt{fun5},
\texttt{fun6} from 573, 456, 456 to 296, 239, 228 --- against his own
297, 233, 233 --- and costs +164, +111, +170, +144 on \texttt{fun1},
\texttt{fun2}, \texttt{fun8}, \texttt{fun9}, where it refuses steps that
were good.
So most of what remains is not the order of the model but the decision
\emph{when to give the model up}, and it is open because every detector
measured so far confounds ``the model is useless here'' with something
else: the band with ``the configuration is not shaped for inverse
quadratic interpolation'', bracket progress with ``the step has not
moved the bracket yet'' (4449 on the canonical set, §10), and the local
order with nothing at all --- \(m\ge2\) is exactly the condition under
which a tangent step loses to a halving, since it lands at \(e(1-1/m)\),
and it is clean (0.2\% of canonical states) but blind: it reports
\(m\ge2\) on none of the states of families whose order is by
construction 3 to 19. For the \texttt{fun1} part, three parameter-free
ways round the model order have been measured and all three fail in the
same way, buying the wide brackets at the price of the canonical set: a
fixed fraction of the bracket (the cube-root similarity), a logarithmic
change of variable, and the curvature-corrected scale of §10 item 5. The
fourth way is to model the curvature directly, which is inverse
quadratic interpolation --- a different method rather than another
reading of this one. Section 8 shows that the decision is reachable
without a new model: by a similarity of the run to its own past.
On the re-scored wide-bracket set of Table 7 our shape reading (2159) is
\emph{worse} than bisection (2136); only the dissimilarity reading
(1740) is clearly ahead, which is the same statement seen from the other
end: where the step cannot march, the reading that helps least is the
one that only improves the local model.
Every statement in §§7.3--7.4 is reproduced by
\texttt{diag\_rescore\_cha.py}, \texttt{diag\_rescore\_aps.py},
\texttt{diag\_fun7\_root.py}, \texttt{diag\_cha\_gap.py},
\texttt{diag\_model\_order.py}, \texttt{diag\_model\_order\_checks.py},
\texttt{diag\_flat\_detectable.py} and
\texttt{diag\_band\_by\_family.py}, whose outputs are kept beside them.
\hypertarget{the-flat-regime-recognised-by-analogy}{%
\subsection{8. The flat regime, recognised by
analogy}\label{the-flat-regime-recognised-by-analogy}}
§7.4 left one decision open: \emph{when to give the model up}. On the
pure powers \texttt{fun3}--\texttt{fun6} the right move is to halve,
Chandrupatla halves on up to all of his steps, and every reading of a
single state measured so far confuses ``the model is useless here'' with
something else. This section closes that decision, and the reading that
closes it is not a similarity of the current state to a prototype but a
similarity of the run to \emph{its own past} --- an analogy in Pólya's
sense {[}8{]}, two situations agreeing in more than one relation. Every
rule below was pre-registered before its code and its run, with a stop
rule; the rejected ones are listed in §10 with their numbers.
\hypertarget{the-flag-a-promise-that-was-not-kept}{%
\subsubsection{8.1 The flag: a promise that was not
kept}\label{the-flag-a-promise-that-was-not-kept}}
A tangent step on an approach of local order \(m\) lands at \(e(1-1/m)\)
and leaves the residual \(r=|f_\text{new}/f_\text{old}|=(1-1/m)^m\) on
the same side of the root. It beats a halving exactly when
\(|1-1/m|<\tfrac12\), that is for \(\tfrac23<m<2\). At the upper end
\(r=(1-\tfrac12)^2=\tfrac14\). So a model step that did not cross the
root and left \(r\ge\tfrac14\) is a \emph{promise not kept}: the model
is in the regime where a halving would have done better. The constant is
bisection's \(\tfrac12\), carried through the formula. The relation
between the order and the contraction, \(e(1-1/m)\), is the one behind
the classical estimates of multiplicity from successive Newton iterates
{[}14, 15{]}; here it is not used to estimate \(m\) but to set the point
at which a model step has lost to a halving.
The flag sees the regime --- on the flat families it rises on most model
steps --- but acted upon step by step it does not pay. Replacing the one
flagged step by a halving costs the canonical set 2806 → 3029, because a
simple root far from convergence also breaks its promises (the flag
rises at least once on 142 of the 154 canonical problems). Every
refinement of \emph{when} to halve that reads the moment alone --- twice
in a row, the promise together with a creep in one direction, a halving
that sticks once begun, a judgment of the evaluated point against the
line through the bracket --- trades one set for the other (§10, items
12--14).
\hypertarget{the-analogy-similarity-of-a-run-to-its-own-past}{%
\subsubsection{8.2 The analogy: similarity of a run to its own
past}\label{the-analogy-similarity-of-a-run-to-its-own-past}}
What distinguishes a pure power from a simple root is not the shape of
one configuration --- \texttt{fun1} on a wide bracket looks as
non-linear as \(x^9\) --- but what happens under zoom. A pure power
\(f=c(x-r)^m\) is similar to itself: zooming about the root by \(L\)
scales \(x-r\) by \(L\) and \(f\) by \(L^m\), so the \emph{dimensionless
configuration} of the last three points,
\[\xi=\frac{x_k-x_{k-1}}{x_{k-2}-x_{k-1}},\qquad \varphi=\frac{f_k-f_{k-1}}{f_{k-2}-f_{k-1}},\]
recurs as the iteration proceeds. At a simple root, zooming in makes
\(f\) look like its tangent, and the configuration tends to the
\emph{linear prototype} \(\varphi=\xi\) instead. Two prototypes, then:
the line, and the run's own past. The judgment is ordinal --- is the
current \((\xi,\varphi)\) nearer to some earlier configuration of this
run than to the line? --- with the plane's Euclidean distance and the
perpendicular to the line, the one geometric choice in this section,
declared as such.
Nearness of configurations is one relation. An analogy in the full sense
needs a second, and the pair supplies it: if the analogous pair shrank
\(x\) by \(L_x\) and \(f\) by \(L_f\), the power law requires
\(L_f=L_x^{\,m}\), so the order is \emph{read from the analogy itself},
\[m=\frac{\ln L_f}{\ln L_x}.\tag{6}\]
Formula (6) is the log--log slope by which any power-law exponent is
estimated, and has the shape of the computational order of convergence
and its approximation from differences of iterates {[}18, 19{]}. What is
not classical is \emph{which} two states it compares: not consecutive
iterates, but a pair the similarity of their configurations has found.
Under an exact zoom a pure power of order \(m\) reads exactly \(m\);
along a real run the analogous pairs are only nearly homothetic and the
reading scatters about the order, but the regime asks only whether it
reaches 2, the order from which a tangent step loses to a halving (§8.1)
--- no new constant. On the traces of the base rule, at the moments the
flag rises, the three conditions together hold on 3 of the 154 canonical
problems, on all 20 flat problems, and on none of \texttt{fun2},
\texttt{fun8}, \texttt{fun9}.
\textbf{The analogy belongs to the run, the flag to the moment.} In the
cycle the base rule runs on a pure power --- undershoot, undershoot,
crossing, a nearly empty step --- the flag rises in the phases whose
configuration does \emph{not} recur (the empty step grows emptier every
cycle), while the recurring phases have the flag down. Requiring both in
one state delayed the entry on the flat problems to their thirteenth
state on average. Once established, the analogy is therefore remembered
for the run, and the regime is entered at the next unkept promise
(eighth state on average).
\textbf{The translation limit.} The exponential is self-similar by
\emph{translation}, \(e^{x-1}=e^x/e\): along its flank the step does not
shrink while \(f\) does, so (6) is undefined or negative. That is the
limit \(m\to\infty\) of (6), steeper than any power, and it is read as
\(m=\infty\): when an analogous pair shows \(L_f<1\le L_x\). A high
power far from its root is locally an exponential, \(x^m=e^{m\ln x}\),
and it was there, not on the flank of \texttt{fun9} it was built for,
that the limit paid.
\textbf{Exit.} Inside the regime the step splits the bracket (§8.3). At
every split the evaluated \(f\) is judged against two predictions: the
line through the bracket ends, \(F_A(1-t)+F_Bt\) at the split fraction
\(t\), and 0. Nearer the line, the regime is left and the remembered
analogy is cleared. A sticky halving without this exit cost the
canonical set 6897; with it, 3125 --- the exit is what makes a false
entry cheap.
\hypertarget{where-to-split-the-point-from-the-order}{%
\subsubsection{8.3 Where to split: the point from the
order}\label{where-to-split-the-point-from-the-order}}
Halving is the answer when nothing is known about the shape; inside the
regime the order is known. For \(|f|\propto|x-r|^m\) the ends of the
bracket lie at distances in the ratio \(|F_A|^{1/m}:|F_B|^{1/m}\) from
the root, so the regime splits at
\[t=\frac{|F_A|^{1/m}}{|F_A|^{1/m}+|F_B|^{1/m}},\tag{7}\]
which is exact for a pure power and becomes the midpoint as
\(m\to\infty\). It is false position applied to
\(\operatorname{sign}(f)|f|^{1/m}\) --- the transformation that turns a
root of multiplicity \(m\) into a simple one, classical since Schröder
{[}16{]} and Traub {[}17{]}; what is new here is only where \(m\) comes
from. The order read from a \emph{failed promise}, \((1-1/m)^m=r\), was
tried first and gave \(m=\infty\) in 163 of 174 entries, because the
base step is not a pure tangent; the order read from the \emph{analogy}
is the one that works. With it the flat families of the wide-bracket set
cost 743--847 evaluations against 1044 for pure bisection and 1068 for
Chandrupatla.
\hypertarget{five-more-readings}{%
\subsubsection{8.4 Five more readings}\label{five-more-readings}}
\textbf{The half the step promises.} \(S(z)\ge\tfrac12\) means a step of
at most half the way to the far end: the model promises the root in the
half of the bracket \emph{near} \(x\). The line through the bracket ends
puts it nearer the end with the smaller \(|f|\). When the far end has
the smaller \(|f|\) the two disagree about the half, and the evaluation
halves. On a steep flank --- a slope dominated by
\(f(81)=1.5\cdot10^{35}\) on \texttt{fun9.5} --- this is the false
promise ``the root is here'', and removing it alone takes the canonical
set from 2806 to 2564. It is a relative of Brent's acceptance condition
{[}2{]}, which admits an interpolant only between the best point and
\((3a+b)/4\): both refuse a model that points towards the worse end of
the bracket.
\textbf{The sign contradiction.} The bracket says which way \(f\) must
go between its ends; the last two points say which way it goes here.
Opposite signs --- the local picture contradicts the bracket --- and the
evaluation halves. It is the cause of the \texttt{fun9} well: a
near-cancelling end reads the root as close while \(|f|\) doubles for
seventeen steps.
\textbf{The repeated step pattern.} Two successive moves the same way,
of similar length, mean the iterate creeps along a geometric series
whose remainder is \(\text{step}\cdot s/(1-s)\); the step is lengthened
by \(1/(1-s)\), with \(s\) the similarity of successive step lengths,
but only when the pattern of successive length ratios repeats with a
period read from the data (the lag of highest mean similarity) and that
similarity exceeds \(\tfrac12\).
\textbf{The overshoot branch.} §8.1's inequality has a second branch,
\(m<\tfrac23\): a root of order below one, where the tangent step
overshoots and the iterate oscillates about the root
(\(\sqrt{|x|}\operatorname{sign}x\): 84 evaluations of the base rule).
The flag for it is the unkept promise \emph{with} a sign change,
\(f_\text{new}/f_\text{old}\le-\tfrac14\), and an analogous pair reading
\(0<m\le\tfrac23\); the split (7) is again exact for a pure power. The
exit judgment of §8.2 separates a flat root from a simple one; at a root
of order below one \(f\) is far from 0 on both sides and the exit fires
falsely, so the memory of this branch is \emph{not} cleared by it;
clearing it was measured on the development corpora and was worse
(recorded in the pre-registration amendment of this branch).
\textbf{Borrowed: the tolerance step.} Once the root is reached from one
side the bracket's far end can stay far: on \(\sin\) over \([3,4]\) the
base rule reaches \(|f|\approx10^{-16}\) in 7 evaluations and then
halves the remaining \(1.3\cdot10^{-7}\) down to the tolerance in 17
more. Dekker {[}9{]} and Brent {[}2{]} step at least the tolerance; we
do the same, \(\varepsilon_x/2\) towards the far end, when the model's
step is shorter --- but only after the model has \emph{kept} its
previous promise (\(r<\tfrac14\)), because at the start of a run a slope
dominated by a huge far value promises the root at an end. This element
is not ours and is named as such.
\hypertarget{the-proposed-method}{%
\subsubsection{8.5 The proposed method}\label{the-proposed-method}}
The method this paper proposes, \textbf{A′}, is the base rule of §3 ---
tent similarity, three-point scale, projection with the declared
multiplier \(c=2\) --- with the regime of §8.2--8.3 (the analogy
remembered, its translation limit, the split (7), the exit) and the five
readings of §8.4. Its constants are bisection's \(\tfrac12\) and what
follows from it: \(\tfrac14=(1-\tfrac12)^2\) and the two branches
\(m\ge2\), \(m\le\tfrac23\) of \(|1-1/m|>\tfrac12\). Three choices are
declared rather than derived: the multiplier \(c\) of the projection
(§3.1), the Euclidean geometry of the \((\xi,\varphi)\) plane, and the
pattern test of the step lengthening (lags from 2 to half the history,
threshold \(\tfrac12\)). The projection carries the guarantee,
\(2\lceil\log_2(w_0/\varepsilon_x)\rceil+3\) evaluations; it is verified
with no violation on every corpus of this paper and under every
safeguard of the grid.
\textbf{Table 8.} A′ on the protocol of §4 (published roots, failures
charged 200). Per problem against each rival: wins/ties/losses, exact
two-sided sign test.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS-154
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA-45
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
both
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
vs A′ per problem, APS
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
vs A′ per problem, CHA
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
\textbf{A′ (proposed)} & \textbf{2438} & \textbf{2005} & \textbf{4443} &
--- & --- \\
A′, earned budget (no free constant) & 3608 & 2807 & 6415 & & \\
base rule (§3) & 2806 & 3220 & 6026 & & \\
Chandrupatla & 2787 & 2441 & 5228 & A′ 103/20/30, \(p=1.5\cdot10^{-10}\)
& A′ 29/4/7, \(p=3\cdot10^{-4}\) \\
TOMS 748 & 2820 & 4000 & 6820 & A′ 127/6/20 & A′ 38/2/0 \\
Brent & 2889 & 4115 & 7004 & A′ 118/17/18 & A′ 33/3/2 \\
ITP, per-problem oracle & 3260 & 2647 & 5907 & A′ 126/7/20 & A′
35/1/4 \\
ModAB {[}10, 20{]} & 2914 & 2436 & 5350 & A′ 118/11/25 & A′ 32/9/4 \\
\end{longtable}
A′ is 12.5\% below Chandrupatla on the canonical set and 17.9\% below on
the wide-bracket set, and beats every rival problem by problem on both.
On the wide-bracket families it is ahead on seven of nine, level on
\texttt{fun7} (the scoring artefact of §7.3) and behind on
\texttt{fun9}, 65 against 55. The earned-budget form keeps its
constant-free guarantee of bisection plus one step and pays for it as in
§3.1.
\textbf{Table 9.} Leave-one-out ablation of A′ on all six corpora of §9
(uniform criterion, a sign change within \(10^{-6}\)). Δ = total without
the component − total with it; positive means the component earns its
place.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}
>{\raggedright\arraybackslash}p{(\columnwidth - 14\tabcolsep) * \real{0.1250}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
component removed
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
APS
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
CHA
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
new-1
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Roots.jl
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
applied
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
fourth
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
sum
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
the whole regime & −7 & +1013 & +1660 & +324 & +77 & +2269 &
\textbf{+5336} \\
the split (7) (midpoint instead) & −5 & +479 & +667 & +272 & +30 & +1672
& \textbf{+3115} \\
overshoot branch & −6 & 0 & −7 & +16 & +63 & +893 & +959 \\
tolerance step (borrowed) & +130 & +35 & +97 & +78 & +135 & −2 & +473 \\
the half the step promises & +249 & +65 & +82 & −16 & −5 & +1 & +376 \\
translation limit & +31 & +143 & +100 & −21 & −2 & +87 & +338 \\
repeated step pattern & −22 & −6 & +123 & −30 & −10 & +34 & +89 \\
sign contradiction & +11 & −12 & +29 & 0 & +1 & −1 & +28 \\
\end{longtable}
Every component is positive in sum; the regime and the split carry the
method. Two are marginal and we say so: the step pattern earns on two
corpora of six and loses on four, and the sign contradiction is within
noise (+28 over 855 problems). Removing both would change A′'s total by
under one per cent (117 of 13032 evaluations); they are kept because the
pre-registered rule removes only a component that earns nowhere.
\textbf{Table 9a.} The similarity in the step of A′: the same method
with each of the nine similarity functions of §5.3 in place of the tent,
everything else unchanged. Totals on the protocol of §4 and over the six
corpora of §9 (uniform criterion); the guarantee holds with every
function.
\begin{longtable}[]{@{}lll@{}}
\toprule\noalign{}
\(S\) in the step & APS + CHA & six corpora (855) \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
\textbf{tent \(1-|z|\) (A′)} & \textbf{4443} & \textbf{13032} \\
\(e^{-|z|}\) & 4988 & 14142 \\
\(1/(1+|z|)\) & 5486 & 14843 \\
\((1+|z|)^{-2}\) & 8360 & 28500 \\
\(1-\sqrt{|z|}\) & 12718 & 45552 \\
\(1-|z|^{1/3}\) & 17207 & 63031 \\
\(e^{-z^2}\) & 18410 & 67701 \\
\(1/\sqrt{1+z^2}\) & 18412 & 67854 \\
\(1/(1+z^2)\) & 18422 & 67394 \\
\end{longtable}
The similarity in the step earns its place in the proposed method as it
did in the base rule: the nearest other function costs 12\% more on the
canonical protocol and 9\% more over the six corpora, the functions that
approach 1 quadratically cost four to five times more, and the ranking
is the one the contraction law of §2.2 predicts, the three functions
with a linear approach first and the three with a quadratic approach
last.
\hypertarget{what-is-known-and-what-is-new}{%
\subsubsection{8.6 What is known, and what is
new}\label{what-is-known-and-what-is-new}}
Several mechanisms of A′ coincide with classical ones, and the
coincidence is worth stating, because they were not taken from the
literature but reached from the principles of the paper --- similarity
to a prototype and analogy as similarity of relations --- and recognised
afterwards:
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.5000}}
>{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.5000}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
in A′
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
classical counterpart
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
the three-point order estimate of §7.1 & Lagouanelle's multiplicity
estimate \(m=f'^2/(f'^2-ff'')\) {[}13{]} \\
the contraction \(e(1-1/m)\) behind the flag of §8.1 & multiplicity
estimates from successive Newton iterates {[}14, 15{]} \\
the order (6) of an analogous pair & the log--log slope of a power law;
the (approximate) computational order of convergence {[}18, 19{]} \\
the split (7) & false position on \(\operatorname{sign}(f)|f|^{1/m}\)
{[}16, 17{]} \\
the half the step promises & a relative of Brent's acceptance condition
{[}2{]} \\
the tolerance step & Dekker {[}9{]}, Brent {[}2{]} --- borrowed and
named as such \\
the exit judgment of §8.2 (the value at a split against the line) &
ModAB's linearity check at the midpoint {[}10, 20{]},
\(|y_m-y_3|<k\,(|y_3|+|y_m|)\) with \(k\) from a symmetry factor; ours
compares two predictions, the line and 0, without a factor \\
\end{longtable}
What we found no counterpart for, in the literature we could reach, is
the part that carries the gain in Table 9: the \emph{decision} layer. A
bracketing method that recognises the regime in which its model has lost
by the similarity of the run to its own past --- the recurrence of a
dimensionless configuration against the linear prototype --- reads the
order from the analogous pair itself, distinguishes similarity by
scaling from similarity by translation, and leaves the regime by a
similarity judgment at a point the model did not choose; and a step
whose length is set by a similarity function whose form, measured, is
decisive. The methods for multiple roots we found are single-point
iterations without a bracket, with the multiplicity assumed, estimated
from derivatives, or removed by a transformation ({[}17{]}; Roots.jl's
\texttt{Order1B} and \texttt{Order2B} {[}12{]}); Chandrupatla takes the
decision to halve by an empirical acceptance band {[}3{]}.
\hypertarget{out-of-sample-evidence}{%
\subsection{9. Out-of-sample evidence}\label{out-of-sample-evidence}}
Every decision above was taken on the two sets of §4. Pre-registration
protects each decision but not the chain: the final configuration was
selected on the same 199 problems. Four further corpora were therefore
used, each fixed and committed before any method was run on it, each
with its criteria and stop rule written down first.
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
\textbf{New corpus 1} --- 206 problems: SciPy's \texttt{original} set
(6) and five generated classes of 40 (seed 20260921): smooth simple
roots, transcendental simple roots, multiple roots \(|x-r|^p\) with
\(p\sim U(2,20)\), exponential flanks, and near-cancelling terms of
the \texttt{fun9} kind.
\item
\textbf{Roots.jl / ModAB} --- the published bracketing benchmark of
the Julia package Roots.jl {[}12{]}, taken from the ModAB benchmark of
Ganchovski and Traykov {[}10{]}: 91 problems, of which 13 coincide
with APS or Chandrupatla functions (a seven-point identity test) and
are excluded, leaving 78, many of them discontinuous or pathological.
\item
\textbf{Applied and GSL} --- the 10 bracketed problems of the GNU
Scientific Library's root-finding test suite {[}11{]} and 122
equations from physics and engineering on grids fixed beforehand:
Kepler's equation (eccentricity up to 0.999), Colebrook--White,
Lambert's W, Planck/Wien, van der Waals for CO₂ (including
near-critical), internal rate of return, the finite square well.
\item
\textbf{Corpus 4} --- 240 problems in six new families (seed
20260922): random polynomials with a simple root, polynomials with a
multiple root, fractional powers \(|x-r|^p\) with
\(p\sim U(0.15,0.95)\), sums of exponentials and sines, compositions
\(\tanh\), \(\arctan\), \(\log(1+q^2)\) of a cubic, and functions odd
about the root. The code of A′ was committed \emph{before} this corpus
was run, and nothing was changed after.
\end{enumerate}
ModAB, the most recent bracketing method we know of, is run from its
authors' package (\texttt{pymodab} 1.0.9, a wrapper of their C code)
with the stopping rule of every other method --- a bracket no wider than
\(\varepsilon_x\), the relative term at machine precision, no stopping
on \(|f|\) --- and counted by the same wrapper around \(f\), whose count
agrees with the package's own. Where roots are not known in closed form,
and for uniformity on all six corpora, a run is solved when \(f\)
changes sign within \(10^{-6}\) of its answer; the \(x\)-tolerance, the
budget and the charge for a failure are those of §4.
\textbf{The history is part of the result.} The variant carried to
corpora 1--3 was A′ without the tolerance step and the overshoot branch.
It transferred to corpus 1 by every pre-registered criterion (total 10\%
below Chandrupatla, per problem 105/34/67, \(p=0.005\)), did \emph{not}
transfer to Roots.jl (total 6.5\% below, but per problem 38/10/30,
\(p=0.4\)) and lost on the applied corpus (14\% above). The losses there
were traced to two gaps of the base step --- no closing of the bracket
once the root is reached, and no recognition of roots of order below one
--- which became the last two readings of §8.4; they were developed on
the seen corpora and tested once, on corpus 4.
\textbf{Table 10.} A′ against the library rivals on all six corpora
(uniform criterion): total evaluations; in brackets the runs that break
the \(2\times\)-bisection bound.
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.2619}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1429}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1667}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1429}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1429}}
>{\raggedright\arraybackslash}p{(\columnwidth - 10\tabcolsep) * \real{0.1429}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
corpus
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
A′
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Chandrupatla
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
ModAB
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
Brent
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
TOMS 748
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
APS (154) & \textbf{2259} (0) & 2595 (0) & 2726 (0) & 2707 (0) & 2636
(0) \\
Chandrupatla (45) & \textbf{1074} (0) & 1505 (0) & 1681 (0) & 3238 (18)
& 3088 (15) \\
new corpus 1 (206) & \textbf{3290} (0) & 3716 (0) & 3809 (1) & 6395 (38)
& 5746 (22) \\
Roots.jl (78) & \textbf{1371} (0) & 1566 (0) & 1446 (0) & 2455 (11) &
2339 (9) \\
applied + GSL (132) & 1382 (0) & 1382 (0) & 1460 (0) & 1503 (1) & 1756
(1) \\
\textbf{corpus 4 (240), the one test} & \textbf{3656} (0) & 5717 (0) &
5535 (8) & 8267 (50) & 8084 (37) \\
all 855 & \textbf{13032} & 16481 & 16657 & 24565 & 23649 \\
\end{longtable}
\textbf{Table 10b.} The same runs problem by problem: A′'s
wins/ties/losses against Chandrupatla and against ModAB (exact two-sided
sign test).
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.3333}}
>{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.4545}}
>{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.2121}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
corpus
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
A′ vs Chandrupatla
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
A′ vs ModAB
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
APS (154) & 103/20/31, \(p=3\cdot10^{-10}\) & 118/10/26 \\
Chandrupatla (45) & 31/4/10, \(p=0.001\) & 34/4/7 \\
new corpus 1 (206) & 108/33/65, \(p=0.001\) & 125/26/55 \\
Roots.jl (78) & 44/14/20, \(p=0.004\) & 47/11/20 \\
applied + GSL (132) & 48/52/32, \(p=0.09\) & 76/35/21 \\
\textbf{corpus 4 (240), the one test} & \textbf{177/35/28,
\(p=10^{-27}\)} & \textbf{183/23/34} \\
\end{longtable}
Only the last line of corpora is evidence for A′ in the strict sense;
the first five were seen while it was developed and are reported as a
description. On corpus 4 A′ is 36\% below Chandrupatla and wins 177
problems to 28. Without the two classes aimed at by the last two
readings it is 2403 against 3569, per problem 107/31/22
(\(p=10^{-14}\)); on the simple-root classes alone, 737 against 747
(−1.3\%), per problem 43/22/15 (\(p=3\cdot10^{-4}\)).
\textbf{Table 11.} Corpus 4 by class: totals of A′ / Chandrupatla, per
problem wins/ties/losses.
\begin{longtable}[]{@{}llll@{}}
\toprule\noalign{}
class & A′ & Chandrupatla & per problem \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
random polynomial, simple root & 433 & 419 & 20/8/12 \\
polynomial, multiple root & 1163 & 1805 & 39/1/0 \\
fractional power, \(p<1\) & 924 & 1784 & 37/1/2 \\
sums of exponentials and sines & 304 & 328 & 23/14/3 \\
\(\tanh\), \(\arctan\), \(\log(1+q^2)\) of a cubic & 503 & 1017 &
25/8/7 \\
odd about the root & 329 & 364 & 33/3/4 \\
\end{longtable}
\textbf{What the evidence supports, and what it does not.} Against Brent
and TOMS 748 A′ is ahead on every corpus, by 8\% to 67\% in total, and
it keeps its bound on all 855 problems, which Brent breaks on 118 and
TOMS 748 on 84. Against ModAB it is ahead on every corpus, in total and
problem by problem (\(p\le0.0013\)), on the one test of corpus 4 by 3656
to 5535 and 183 problems to 34 (\(p=7\cdot10^{-26}\)), and on ModAB's
own benchmark as well --- all 91 problems of it, 1507 against 1588,
56/13/22 (\(p=1.5\cdot10^{-4}\)); ModAB breaks the bound on 9 problems.
Against Chandrupatla it is ahead in total on five corpora and level on
the sixth, and ahead problem by problem on all six, significantly on
five. The size of the lead is not uniform: it is large on multiple,
fractional and nearly flat roots --- the regime §8 recognises --- and
small on simple roots, where it is a matter of per cent. Where it is
behind is named: \texttt{fun9} (65 against 55), the near-cancelling
class of corpus 1 (491 against 391), random polynomials with a simple
root in total (433 against 419, though ahead 20 to 12 in problems), and
the smooth equations of the applied corpus, where the two are level.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{negative-results}{%
\subsection{10. Negative results}\label{negative-results}}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
\textbf{The prototype-aggregation form of the method loses.} A richer
construction --- prototypes over \emph{pairs} of evaluated points,
softmax weights over the whole memory, similarity on both the value
and the abscissa axis --- leads on eight hand-picked problems but
loses decisively on the real set: 0 wins, 6 ties and 147 losses
against Brent. The simplest form of the idea won.
\item
\textbf{Every safeguard that replaces the step destroys the order.}
Bracket-based and step-based replacement both drop the three-point
rule from order 1.94 to 1.00 and cost 7260 and 7239 evaluations on
Alefeld--Potra--Shi. Only projection preserves both. We record this
because it is the trap the construction naturally falls into.
\item
\textbf{Zero slack in the projection is not the degenerate case it was
said to be.} An earlier version reported that a worst case of exactly
bisection leaves the projection no freedom and makes the guard behave
as bisection. Measured (Table 1a), multiplier 1 costs 4817 and 2997,
against bisection's 7530 and 3090 --- and on the wide-bracket set it
beats the multiplier of 2. It remains the most expensive multiplier on
the canonical set, which is all that survives of the claim.
\item
\textbf{Regimes exist, at the level of a function family, and cannot
be exploited by a switch.} The cube-root similarity beats the base
rule on all five members of Chandrupatla's \texttt{fun4} ---
32/32/40/47/59 against 89/93/113/125/153, a factor of 2.6 --- and
consistency across a family at different parameters is the signature
of structure rather than luck. But the same similarity over the whole
Chandrupatla set costs 4109 against 3220, so a switch chosen per
benchmark is worse than no switch at all: 6915 against 6026 over both
sets. The scale axis offers only 5.3\% headroom even to an oracle
handed the best scale per problem, two thirds of it inside a single
problem family, and the winners are not separated by anything the
method can see before it commits --- the derived scale wins on bracket
widths from \(10^0\) to \(10^{12}\).
\item
\textbf{The phase detector: derivation sound, estimator not.} Redoing
the contraction law without the assumption \(|f|\approx|f'(r)|e\) ---
taking \(|f|\approx K e^m\) instead --- does produce the march
exponent on its own, \(p = L/(L-\ln m)\) with \(L=\ln(e/D)\), giving
\(p=1\) at a simple root and dropping to 0.50 and 0.23 as the approach
flattens, which is the neighbourhood of the cube root that wins those
families. Substituted back it collapses to the multiplier \(m\),
measurable as \(m = 1/(1-\theta)\) with \(\theta = f f''/(f')^2\) from
three divided differences and no constant --- which is Lagouanelle's
multiplicity estimate {[}13{]}. It preserves the order (2.001) and
improves the eight standard problems (82 against 84) --- and loses on
the full benchmark, 6304 against 6026. The estimator is the failure:
on Alefeld--Potra--Shi, where almost every root is simple and the
truth is \(m=1\), it reports \(m>1\) on 27.9\% of steps with
excursions to \(m=34.8\), against 35.8\% on the flat families. 27.9
against 35.8 is no separation. A cruder variant, correcting by the
fraction of its own promise the previous step kept, fails everything:
the order collapses to 0.904 and the standard problems double to 161.
\item
\textbf{One problem is scored unsolved for every method},
\texttt{aps.13.00}, \(f(x)=x e^{-1/x^2}\), all of whose derivatives
vanish at the root and which underflows to exactly zero throughout
\(|x|<0.086\). Every method returns a point where \(f(x)=0\) exactly
--- a genuine root --- which the harness scores as a failure because
it lies more than \(10^{-6}\) from the declared root. It is a property
of the scoring, not a failure of the methods; §7.3 finds five more
such problems in the wide-bracket set.
\item
\textbf{The symmetric ratio similarity degenerates.} For
\(S(x,y)=\min(|x|,|y|)/\max(|x|,|y|)\) with \(y\) the target 0,
\(S\equiv0\); the only usable reading is \(1-|f|/\sigma\), which
saturates and stagnates (Table 1, last row).
\item
\textbf{Placement beats form, and the wrong placement is expensive.}
The same ``refuse before the step'' idea as reading (1) of §7, with
refusal decided by \emph{promised bracket progress} instead of by the
shape of the model, costs 4449 on the canonical set against 2527 --- a
difference of 1922 evaluations for one choice of criterion. A secant
step routinely collapses the error while barely moving the proven
bracket, so bracket progress rejects steps that were excellent; this
is the same mechanism that makes the bracket guard of §3.1 cost 7260.
\item
\textbf{Making the scale independent of the bracket does not help
either.} The natural objection to the derived scale is that it defeats
the very principle of a similarity step: with \(\sigma=|\hat f'|D\)
the normalised residual is \(|f|/(|\hat f'|D)\), which on the
\(2\times10^4\)-wide bracket of \(x^3-2x-5\) at \(x=10^4\) equals
0.167, so \(S=0.833\) --- ``similar'' --- and the step is small
although the root is some five thousand step-lengths away. The
similarity is reading what fraction of the \emph{bracket} the Newton
step is, not how far the iterate is from the root. Selecting the scale
between the two quantities already computed,
\(\sigma=\min(|\hat f'|D,\max(|f(A)|,|f(B)|))\) --- no new constant, a
minimum over what is in hand --- does give a full-bracket step far
away and Newton's step near the root, and on eight hand-picked wide
problems it improves 403 evaluations to 390. Over the whole grid it is
worse on both sets: 3288 on the canonical set against 2726, and 3111
on the wide-bracket set against 2695. Its apparent extra solves (194
instead of 193) are two \texttt{fun7} problems where it lands inside
the flat zero region close enough to satisfy the harness --- the
artefact of §7.3, not a capability.
\item
\textbf{Reading the similarity at the measured order does not cure
false position.} Since false position's stall is a similarity read at
order one (§7.1), the obvious hope is that reading it at the measured
order is the parameter-free version of the classical fix. It is not.
Unguarded, the correction takes the far-end reading from 127/154 and
10676 to 128/154 and 10043 --- one problem and six per cent --- where
Illinois, at the price of one constant (halve the stale ordinate),
reaches 153/154 and 7045. A sixth of the gap is not the gap. The
correction is real and it is in the right place; it is simply much
smaller than a constant that was chosen for exactly this failure.
\emph{Our} 10676 and the 10560 of Table 2 are not the same algorithm
--- our iterate starts at the midpoint of the bracket, plain false
position at an end --- and the two must not be differenced.
\item
\textbf{A logarithmic change of variable does not buy the wide
brackets.} Working in
\(u=\operatorname{sign}(x-c)\log(1+|x-c|/\varepsilon_x)\) makes the
step multiplicative, which looked like the right diagnosis of the flat
families --- for the same similarity, scale and safeguard
(\((1+|z|)^{-2}\), two-point, \emph{safe}) the wide-bracket set
improves from 3695 to 3541 --- but the canonical set gets worse, 5822
to 6940, against the 2806 of the base rule. An earlier version
compared the 3541 with 4516, which is the total of a different
configuration. A march needs a \emph{ratio} of distances while an
identity on narrow brackets needs an \emph{absolute} unit, and no
parameter-free unit provides both. §7.4 shows the diagnosis itself was
wrong: on the flat families the right move is to halve, not to march.
\item
\textbf{Reading the unkept promise one step at a time does not pay.}
The flag of §8.1 sees the flat regime, but a halving in place of each
flagged step takes the canonical set from 2806 to 3029 and the
wide-bracket set only from 3220 to 3198: a simple root far from
convergence breaks its promises too. Requiring the promise to fail
twice in a row keeps the canonical set (2803) but fires one step late,
before the crossing, and replaces the most useful step of the cycle
(wide brackets 3341); requiring a creep in one direction as well gives
2878 and 3354.
\item
\textbf{A halving that sticks once begun wins the flat families and
loses everything else.} Without an exit the flat families fall to 1057
--- pure bisection's level --- and the canonical set rises to 6897,
because a false entry now lasts to the end of the run. Splitting at
the order read from the failed promise, \((1-1/m)^m=r\), changes
nothing: that order is \(m=\infty\) in 163 of 174 entries (6781).
\item
\textbf{The model's own point cannot tell a flat root from a simple
one.} Judging the evaluated point against the line through the bracket
ends and against 0 --- the exit judgment of §8.2 --- also at
\emph{entry} gives 3009 and 2486 against 3125 and 2503 for the exit
alone: the model aims at the root, so \(f\) is small there by
construction and looks flat at a simple root as readily as at a power.
The same judgment works at a split, which the model did not choose.
\item
\textbf{The decision reading ``defect'' does not transfer.} Combined
with the regime it was the best configuration on the two development
sets (§7.2's canonical record 2523 with the flat families of §8), and
it passed every pre-registered criterion there. On new corpus 1 it did
not: per problem 95/33/78 against Chandrupatla (\(p=0.22\)), losing
the class of exponential flanks 9 to 26. It is therefore not part of
A′.
\item
\textbf{A component rejected alone can pay in combination.}
Remembering the analogy for the run was rejected by its own
pre-registration (canonical set 2814 against 2806 without the regime),
and with the split of §8.3 it is the better form (with the step
pattern, wide brackets 2117 against 2221 for the analogy read in one
state). Composition was measured, not assumed, throughout --- which is
also why §7's readings (2) and (3), each an improvement, are not
combined.
\end{enumerate}
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{conclusion}{%
\subsection{11. Conclusion}\label{conclusion}}
A root finder can be derived from a similarity function alone, and the
derivation shows where the content of such a method actually sits. It is
not in the shape of \(S\) --- nine shapes were tried and their ranking
is dictated by a single number, the slope of \(1-S\) at the origin. It
is not in making the similarity change faster --- that overshoots
exactly as readily as flatness stagnates. It is in the \emph{scale}
against which similarity is judged: chosen, the method is brittle and
merely linear; taken from the bracket, it is false position and three
centuries old; read off the data, it is superlinear. And the safeguard
that makes such a method safe must project the step, not replace it:
replacing costs the order, projecting costs nothing on one benchmark and
improves the method on the other. The projection's budget multiplier is
a free constant, and we declare it: it does not move the canonical
result and it does move the wide-bracket one; projecting onto a budget
the steps earn instead removes it, at a measured price.
The base rule has one declared constant and carries a worst case of
twice bisection plus one step. On the canonical Alefeld--Potra--Shi set
it is level with TOMS 748 and with Chandrupatla's method in total and
ahead of both problem by problem; on the wide-bracket set Chandrupatla
is genuinely stronger (2441 against 3220). §7.4 locates the cause: not
the order of the model but the decision to give it up, which
Chandrupatla takes by halving and which no reading of a single state
takes correctly for our step.
That decision is a similarity too --- of the run to its own past. A pure
power repeats its configuration under zoom, an exponential under
translation, a simple root tends to the line; the analogous pair reads
the local order, the order decides between the model and a halving by
bisection's own \(\tfrac12\), and it says where to split. The method
built on it, A′, is ahead of Chandrupatla on both canonical sets in
total and problem by problem, and on a corpus fixed after its code was
frozen it needs 36\% fewer evaluations and wins 177 problems to 28. The
claim the measurements support is a lead over Brent, TOMS 748 and ModAB
everywhere, with the guarantee they do not keep, and over Chandrupatla a
lead that is large where roots are multiple, fractional or nearly flat
and small where they are simple --- not superiority by the same margin
everywhere. \texttt{fun9}, near-cancelling terms and smooth applied
equations are where it is behind or level.
This is the same movement as in parameter-free similarity control
{[}6{]}, where membership functions are eliminated by normalising the
input space from the data rather than by choosing widths. Here the
object normalised is the value axis, and the price of choosing it by
hand is measured rather than asserted.
\hypertarget{future-work}{%
\subsubsection{Future work}\label{future-work}}
Two questions remain, both narrower than the one this section used to
pose.
The first is the steep flank. Where the loss remains --- \texttt{fun9},
the near-cancelling class, 4 − tan x at its pole --- the base step
approaches along a flank far steeper than its model, and the half
contradiction of §8.4 removes only part of the cost. The second is the
one geometric choice of §8.2, the Euclidean metric of the
\((\xi,\varphi)\) plane: a metric derived from the configuration's own
sensitivity would remove it.
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\hypertarget{references}{%
\subsection{References}\label{references}}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
G. E. Alefeld, F. A. Potra and Y. Shi, ``Algorithm 748: Enclosing
zeros of continuous functions,'' \emph{ACM Trans. Math. Softw.},
vol.~21, no. 3, pp.~327--344, 1995.
\item
R. P. Brent, \emph{Algorithms for Minimization without Derivatives}.
Englewood Cliffs, NJ: Prentice-Hall, 1973.
\item
T. R. Chandrupatla, ``A new hybrid quadratic/bisection algorithm for
finding the zero of a nonlinear function without using derivatives,''
\emph{Adv. Eng. Software}, vol.~28, no. 3, pp.~145--149, 1997.
\item
I. F. D. Oliveira and R. H. C. Takahashi, ``An enhancement of the
bisection method average performance preserving minmax optimality,''
\emph{ACM Trans. Math. Softw.}, vol.~47, no. 1, pp.~1--24, 2021.
\item
C. Ridders, ``A new algorithm for computing a single root of a real
continuous function,'' \emph{IEEE Trans. Circuits Syst.}, vol.~26, no.
11, pp.~979--980, 1979.
\item
V. Sitnikov, ``Parameter-free similarity control,'' preprint, 2026.
\item
M. Dowell and P. Jarratt, ``A modified regula falsi method for
computing the root of an equation,'' \emph{BIT}, vol.~11,
pp.~168--174, 1971.
\item
G. Pólya, \emph{How to Solve It}. Princeton, NJ: Princeton University
Press, 1945.
\item
T. J. Dekker, ``Finding a zero by means of successive linear
interpolation,'' in B. Dejon and P. Henrici (eds.), \emph{Constructive
Aspects of the Fundamental Theorem of Algebra}. London:
Wiley-Interscience, 1969, pp.~37--51.
\item
N. Ganchovski and A. Traykov, ``Modified Anderson-Björck's method for
solving non-linear equations in structural mechanics,'' \emph{IOP
Conf. Ser.: Mater. Sci. Eng.}, vol.~1276, 012010, 2023.
\item
M. Galassi et al., \emph{GNU Scientific Library Reference Manual}, 3rd
ed.~Network Theory, 2009; root-finding test suite
\texttt{roots/test.c}.
\item
J. Verzani et al., \emph{Roots.jl}, Julia package; bracketing
benchmark \texttt{test/benchmark-bracketing-methods.jl}, commit
cf1d256, 2026.
\item
J. L. Lagouanelle, ``Sur une méthode de calcul de l'ordre de
multiplicité des zéros d'un polynôme,'' \emph{C. R. Acad. Sci. Paris
Sér. A}, vol.~262, pp.~626--627, 1966.
\item
L. B. Rall, ``Convergence of the Newton process to multiple
solutions,'' \emph{Numer. Math.}, vol.~9, pp.~23--37, 1966.
\item
E. Hansen and M. Patrick, ``Estimating the multiplicity of a root,''
\emph{Numer. Math.}, vol.~27, pp.~121--131, 1976.
\item
E. Schröder, ``Ueber unendlich viele Algorithmen zur Auflösung der
Gleichungen,'' \emph{Math. Ann.}, vol.~2, pp.~317--365, 1870.
\item
J. F. Traub, \emph{Iterative Methods for the Solution of Equations}.
Englewood Cliffs, NJ: Prentice-Hall, 1964.
\item
S. Weerakoon and T. G. I. Fernando, ``A variant of Newton's method
with accelerated third-order convergence,'' \emph{Appl. Math. Lett.},
vol.~13, pp.~87--93, 2000.
\item
A. Cordero and J. R. Torregrosa, ``Variants of Newton's method using
fifth-order quadrature formulas,'' \emph{Appl. Math. Comput.},
vol.~190, pp.~686--698, 2007.
\item
N. Ganchovski, O. Smith, C. Rackauckas, L. Tomov and A. Traykov,
``Improvements to the Modified Anderson--Björck (modAB) root-finding
algorithm,'' \emph{Algorithms}, vol.~19, 332, 2026; package
\texttt{pymodab} 1.0.9.
\end{enumerate}
\end{document}