restriction-ratio
At its defaults it draws the same 16 answers, backward stable under one reading and not under another. Every real eigenpair of an overdamped chain of 8 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.06 and 45.69, and allowing only M costs between 1.99 and 6367. At a tolerance of 10⁻¹⁵ 15 of these pairs are stable against the whole polynomial and 7 against K alone.
restriction-ratio is one function in lib/figures/graphfit.js —
three approximations the data chose the shape of — support points, a restricted perturbation, and a model made of measurements. Everything below came out of it during this build, at
arguments taken from the essays rather than invented for this page. A figure here is the
figure a reader meets in an essay, and if the generator changes, this page changes with it.
At its defaults
Drawn even though every essay passes arguments — which on this site is every essay, at 100% of placements since the standard pass. A default nothing exercises is a trap for the next essay to call this with none, and this is the page where a default that has drifted from the figures around it becomes visible.
Every real eigenpair of an overdamped chain of 8 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.06 and 45.69, and allowing only M costs between 1.99 and 6367. At a tolerance of 10⁻¹⁵ 15 of these pairs are stable against the whole polynomial and 7 against K alone.
n: 8
The arguments are the ones A model with no matrices behind it passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.
Every real eigenpair of an overdamped chain of 8 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.06 and 45.69, and allowing only M costs between 1.99 and 6367. At a tolerance of 10⁻¹⁵ 15 of these pairs are stable against the whole polynomial and 7 against K alone.
n: 12
The arguments are the ones A perturbation that moves every coefficient passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.
Every real eigenpair of an overdamped chain of 12 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.03 and 45.59, and allowing only M costs between 1.99 and 2.664·10⁴. At a tolerance of 10⁻¹⁵ 24 of these pairs are stable against the whole polynomial and 14 against K alone.
n: 4
The arguments are the ones A perturbation that moves every coefficient passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.
Every real eigenpair of an overdamped chain of 4 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.19 and 45.73, and allowing only M costs between 2 and 717.5. At a tolerance of 10⁻¹⁵ 8 of these pairs are stable against the whole polynomial and 3 against K alone.
n: 6
The arguments are the ones A perturbation that moves every coefficient passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.
Every real eigenpair of an overdamped chain of 6 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.1 and 45.73, and allowing only M costs between 2 and 2449. At a tolerance of 10⁻¹⁵ 12 of these pairs are stable against the whole polynomial and 5 against K alone.
n: 10
The arguments are the ones A perturbation that moves every coefficient passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.
Every real eigenpair of an overdamped chain of 10 masses, computed once through the first companion linearisation, and its backward error measured four ways — against perturbations of all three coefficients, of K alone, and of M alone. The unrestricted number is the one every published formula computes and it sits at the rounding level across the spectrum. Restricting the perturbation charges the same residual to less data, so it can only raise the quotient, and the factor has a closed form: (|λ|²‖M‖ + |λ|‖C‖ + ‖K‖) divided by the allowed part, checked here against the two computed numbers to 10⁻⁸. Because it carries |λ|², it is not a property of the polynomial: allowing only K to move costs between 1.04 and 45.64, and allowing only M costs between 1.99 and 1.385·10⁴. At a tolerance of 10⁻¹⁵ 19 of these pairs are stable against the whole polynomial and 8 against K alone.
What it checked while drawing
Every figure above asserted its own claims on the way to being drawn, and a claim that failed
would have failed the build rather than drawn a wrong picture. Those assertions used to leave
no trace at all: a passing one returned true and the only evidence the figure had
checked anything was that nothing crashed. The list below is what they actually said, collected
by running this generator with an observer installed — not a description of
what it is believed to check.
109 distinct claims across 6 sets of arguments, grouped below by shape — because most of them are one sentence with a different number in it, and how many separate times that sentence was put to the test is the informative part.
the closed form predicts the K-only backward error at λ = -7.417 — asserted 96 times
a chain long enough to have a spectrum and short enough to draw
a chain the linearisation can afford
a linearisation has as many eigenvalues as it has rows
a positive mass
a reduction this file knows
a restriction never lowers a backward error
an inverse iterate that is a vector
an overdamped chain, whose spectrum is entirely real
at least one coefficient that is allowed to move
damping that removes energy rather than adding it
LU is for square matrices
matmul shapes agree
some real eigenpair to measure
Against the rule
It draws a decomposition and prints its residual. It calls
restrictionSweep, verdictTable,
and every figure above carries the badge — which residualcheck verifies by looking
for it in the emitted SVG rather than by finding the call that builds one. A badge that is
constructed and then left out of the body is the failure that check exists for.
Across the library: the rule bites on 214
of 382 generators —
194 print a residual and
20 are exempt with a published reason;
168 factorise nothing.
Read from lib/residual-rule.js, which is the same body the gate enforces from,
and the gate's last check fails the build if this page and it disagree about any generator.
Where it is called
Changing this generator changes every figure on this list. That is what makes the list worth publishing rather than keeping in a check script.
A model with no matrices behind it
Twenty-four numbers — values of a transfer function at twenty-four points — produce a sixth-order model of a forty-state system that passes through every sample to 10⁻¹² and matches the function it never saw to 10⁻⁹. Noise of 10⁻¹⁰ on those numbers takes the rank decision's gap from 10⁸ to 4.
The eigenvalue problem that is not linearA perturbation that moves every coefficient
The backward error of a polynomial eigenpair is measured against perturbations of all three coefficients at once. Restrict it to the one coefficient anybody is willing to move and the same computed answers are stable at one eigenvalue and unstable at another, by a factor that runs from 1.06 to 6,370 across a single spectrum.
The eigenvalue problem that is not linearThe points the algorithm chose
A rational approximant whose support points are picked by its own residual clusters geometrically at a branch point nobody named — recovering by measurement the rule a hand-built approximant is given. At degree ten it is seven hundred and fifty times more accurate than the same form with its points spread evenly.