2286 lines
113 KiB
TeX
2286 lines
113 KiB
TeX
%% 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}
|