Networks, and how a solve is checked

The tolerance that is not on any part

Four one per cent resistors in a divider give an answer whose worst case is one per cent, whose measured spread is 0.29 per cent, and whose root-sum-square bound — offered everywhere as though it were a standard deviation — is 1.70 of one. Adding parts does not move the worst case at all and shrinks the spread as one over their root, so the gap between the promise and the fact widens with every resistor. And the same arithmetic draws a boundary in tolerance rather than in frequency: an R–2R ladder is a twelve-bit converter only while its resistors are inside 0.14 per cent.

Assumes: What a network answers, and how the answer is checked · The divider, and the thing it does not know about

A resistor arrives with two numbers on it. One is a resistance and the other is a tolerance, and only the first appears in any expression a designer writes. The second is supposed to be handled at the end, by a rule of thumb, and there are two rules in circulation that disagree with each other by a factor of two and neither of which is a measurement of anything.

This collection has a solver, so the question can be asked directly: draw every resistor in a network from its tolerance band, solve, and do it a few thousand times. What comes back is a distribution, and neither rule is its shape.

A divider of 4 equal 1.0% resistors, solved 3000 timescomputed by solving, not by drawing. Every resistor drawn from its tolerance band and the divider solved, 3000 times. The worst case is ±1.000% — the part tolerance itself, and it does not improve when the divider is built from more parts — while the measured spread is 0.2944% and the worst of 3000 draws reached 82% of the bound. The root-sum-square, offered as though it were a standard deviation, is 1.70 of one here: for uniformly distributed parts it is √3 σ, a coverage of about 92%.050100150200-1-0.50000.5001error in the answer, in units of the tolerance of one partdrawsworst caseroot-sum-squareparts in the divider4each part±1.00%worst case±1.0000%root-sum-square±0.5000%measured spread (1σ)0.2944%RSS in σ1.698σ99.9% of draws inside0.7899%worst of the draws0.8182%and of the worst case81.8%solved, then checked — 3000 solved networksthe worst case is ±1.00% at every part count
Fig. 1 A divider built from four equal resistors, each drawn from a ±1% band, solved three thousand times. The two vertical lines are the bounds a design guide offers. The slider is how many resistors the divider is made of, and what it moves is the histogram — not the worst case, which does not move at all.

The sensitivities, taken off the network

Before any statistics there is a linear question: how much does the answer move when one part moves? That is the sensitivity, and for a two-resistor divider it is famous enough to be worth checking rather than quoting.

The figure computes it as a central difference on the solved network — perturb one resistance by a part in a million each way, resolve, and take the slope. For the two-resistor case it comes back as exactly 0.5-0.5 for the upper resistor and +0.5+0.5 for the lower, which is what ln(R2/(R1+R2))/lnR\partial\ln(R_2/(R_1+R_2))/\partial\ln R gives and is the first useful fact: a divider’s output is half as sensitive to its parts as the parts are to themselves. One per cent resistors do not make a one per cent divider by that route.

For a chain of nn equal resistors tapped at the middle the sensitivities are ±1/n\pm 1/n each, and there are nn of them. So the two bounds are:

Worst case, the sum of the magnitudes, n×(1/n)×t=tn \times (1/n) \times t = t. It is the part tolerance, whatever nn is. Building the divider out of thirty-two resistors instead of two does not improve it by a hair.

Root-sum-square, n(1/n)2t=t/n\sqrt{n \cdot (1/n)^2}\,t = t/\sqrt{n}. This one does improve, by a factor of four across the slider’s range.

Both are drawn on the figure, and the histogram is drawn under them. The first thing the picture says is that the worst case is not merely pessimistic; it is a line that nothing ever reaches.

The root-sum-square is not a standard deviation

The root-sum-square bound is almost always presented as the statistical answer, with the implication — sometimes stated outright — that it is one standard deviation and therefore covers about 68% of outcomes. Measured on the solved networks, it is not.

For parts drawn uniformly across their band, each contributes a standard deviation of t/3t/\sqrt3 rather than tt. So the true standard deviation of the answer is t/3nt/\sqrt{3n}, and the root-sum-square bound sits at t/nt/\sqrt n, which is

t/nt/3n=3=1.732\frac{t/\sqrt n}{t/\sqrt{3n}} = \sqrt3 = 1.732

standard deviations. Measured across the slider the ratio comes back as 1.750 at two parts, 1.698 at four, 1.726 at eight, 1.729 at sixteen and 1.745 at thirty-two — scattered around 3\sqrt3 by the sampling rather than converging on it, since the bound and the standard deviation are both exact functions of the count and only the measurement of the second is noisy.

A bound at 1.73σ1.73\sigma covers about 92% of outcomes rather than 68%. That is a much better bound than its name suggests, which means the rule of thumb is right for the wrong reason, and the wrongness matters as soon as somebody reasons from it: two root-sum-squares is not two sigma, and a design budget that adds “3 RSS” for a part-per-thousand escape rate has actually asked for 5.2σ5.2\sigma and paid for resistors it did not need.

A divider of 2 equal 1.0% resistors, solved 3000 times. computed by solving, not by drawing. Every resistor drawn from its tolerance band and the divider solved, 3000 times. The worst case is ±1.000% — the part tolerance itself, and it does not improve when the divider is built from more parts — while the measured spread is 0.4041% and the worst of 3000 draws reached 95% of the bound. The root-sum-square, offered as though it were a standard deviation, is 1.75 of one here: for uniformly distributed parts it is √3 σ, a coverage of about 92%.
Fig. 2 Two parts, where the distribution is triangular and its tails reach almost to the bound: the worst of three thousand draws was 95.1% of the worst case, and 99.9% of them lay inside 93.6% of it. With two components the worst-case rule is very nearly the truth.
A divider of 32 equal 1.0% resistors, solved 3000 times. computed by solving, not by drawing. Every resistor drawn from its tolerance band and the divider solved, 3000 times. The worst case is ±1.000% — the part tolerance itself, and it does not improve when the divider is built from more parts — while the measured spread is 0.1013% and the worst of 3000 draws reached 37% of the bound. The root-sum-square, offered as though it were a standard deviation, is 1.75 of one here: for uniformly distributed parts it is √3 σ, a coverage of about 92%.
Fig. 3 Thirty-two parts, where it is not. The same worst case, a measured spread four times smaller, and the worst of three thousand draws reaching 36.6% of the bound. The distribution has become normal and its tails have left the neighbourhood of the bound entirely.

How the two rules diverge as parts are added

Putting the two panels side by side gives the finding that neither rule contains.

At two parts the worst of three thousand draws reached 95.1% of the worst-case bound. At thirty-two parts, with the bound unchanged, it reached 36.6%. The worst case is therefore an honest description of a two-component divider and a wild one for a thirty-two component ladder, and nothing in the rule says which case it is being applied to.

The mechanism is the central limit theorem doing what it does. Two uniforms sum to a triangle, whose density at the extreme is zero but whose approach to zero is linear, so the tail is thick enough to reach. Thirty-two uniforms sum to something indistinguishable from a normal, whose tail at 332σ9.8σ\sqrt{3\cdot 32}\,\sigma \approx 9.8\sigma has a probability nothing will ever see.

So the practical rule that comes out of the measurement is not “use worst case” or “use root-sum-square” but a question: how many parts is the answer made of? Below about four, the worst case is nearly attainable and should be designed to. Above about ten, it is a bound that costs money and buys a margin no batch will ever test.

A 10 kΩ + 10 kΩ divider, solved with its load. The unloaded answer is 6.00 V. It is 1% low at a load of 495 kΩ and 4.00 V at a load equal to the divider's own resistance. The ratio does not predict any of this; the magnitude does.
Fig. 4 The other thing a divider’s answer does not know about, from the essay that opened this field. That one is a systematic error and this one is a random one, and the difference is that a load can be computed and corrected while a tolerance can only be bounded.

Where the first-order model stops

Everything above is a sensitivity argument, and a sensitivity is a derivative, so it is a first-order model with a range like everything else on this site. It is worth asking where it stops.

For a divider the answer is: much later than the tolerances anybody buys. The exact output is a ratio of sums of the perturbed resistances, and its expansion in the perturbations has second-order terms of order t2t^2 against first-order terms of order tt. At t=1%t = 1\% that is a part in a hundred of the error, well below the width of the distribution being described. At t=20%t = 20\% — which the figure will run at — the second-order terms are a fifth of the first-order ones and the histogram becomes visibly asymmetric, because the divider’s output is bounded above by one and below by zero and the perturbation cannot be symmetric near either.

The interesting case is the other one, and it is the reason this essay is in the networks field rather than in a statistics one: there are networks whose sensitivity is not of order one. A resonant network read at its own resonance has a sensitivity of order its quality factor. A near-cancellation has a sensitivity that is the ratio of the terms to their difference. In those the first-order model runs out immediately, and the answer’s tolerance is not a modest multiple of the parts’ but a large one.

How the error grows with the tolerance, order 5. computed by solving, not by drawing at five tolerances spanning two decades. The deviation at the passband's ripple peaks grows as the 0.99 power of the tolerance for the buffered cascade and as the 2.00 power for the doubly terminated ladder — first order against second, which is the claim rather than the comparison. The ladder's own load resistance is on the plot at slope 1.00: the stationarity is a property of the lossless two-port and does not extend to what terminates it.
Fig. 5 The filters field’s version of the same question, and the reason the answer is a property of the topology rather than of the parts. A buffered cascade’s error grows as the first power of the tolerance and a doubly terminated ladder’s as the second, on the same components — so two realisations of one design have different sensitivities and only one of them is stationary.
At the ripple peak the first derivative is 10⁻¹⁰ and the second is not. computed by solving, not by drawing. The relative first and second derivatives of |H| with respect to each reactance at the lower passband ripple peak of a 9th-order Chebyshev. The bars are the curvature; the first derivatives, printed beside them, are all below 10⁻⁸ and are the rung below's result. Every curvature is negative — the response is at a maximum in every one of these directions at once, because a doubly terminated lossless ladder at a ripple peak is delivering all the power its source has and there is nowhere up to go. Away from the peak, at 651.6 Hz, the first derivatives are 0.04, 0.06, 0.04 and the curvature is beside the point.
Fig. 6 The curvature reading at the ninth order. Where the first-order model stops is where the second derivative stops being negligible against the first — and at high order it stops early, because there are more elements each contributing a second-order term and they do not cancel.

A boundary that is a tolerance

Every boundary this collection has drawn so far has been a frequency, an amplitude, a size, a duration, a temperature or — once — a transconductance. Here is one that is none of those.

An R–2R ladder converts a code to a voltage by nothing but resistors: each bit drives its own 2R2R arm either to the reference or to ground, and a chain of RR between the arms halves each contribution as it walks down. It is the cleanest object in this subject, and it is an nn-bit converter only while its resistors are good enough.

An R–2R ladder stops being 10 bits at 0.714% resistors. computed by solving, not by drawing. The worst step at a major carry, against the tolerance every resistor in the ladder is bought to, at four resolutions. A step of −1 LSB is a converter whose output goes backwards when its code goes forwards, and the tolerance at which half a batch does that is 6.62% at 6 bits, 3.29% at 8 bits, 0.714% at 10 bits, 0.141% at 12 bits — halving with every bit, and four to eight times looser than the 2⁻ⁿ the resolution alone suggests, because the errors are independent rather than aligned. The output is exactly linear in the code however wrong the resistors are, so the major carries are the worst transitions rather than merely the likeliest.
Fig. 7 The worst step at a major carry against the resistor tolerance, at four resolutions. A step of −1 LSB is a converter whose output goes backwards when its code goes forwards. Half a batch does that at 3.29% for eight bits, 0.71% for ten and 0.14% for twelve.

Two things make the measurement clean, and the first is worth stating on its own because it is what makes the second provable.

The ladder is exactly linear in the code however wrong its resistors are. Each 2R2R arm is connected to one of two voltage sources, so the resistor network itself never changes; only which source drives which arm does. Superposition therefore holds exactly, and the output for any code is the sum of the bit weights measured one at a time. The figure checks this over all sixty-four codes of a six-bit ladder with 5% resistors and gets agreement to 101610^{-16} — the last bits of a double.

That has a consequence: the major carries are provably the worst transitions. The step from 2k12^k - 1 to 2k2^k turns bit kk on and every bit below it off, so its step is wkj<kwjw_k - \sum_{j<k} w_j, and every other transition’s step contains a subset of that sum with the same sign. So sixty solves answer a question that would otherwise need four thousand, and the answer is exact rather than sampled.

What the tolerance costs per bit

The figure bisects the tolerance at which half a batch of ladders goes non-monotone somewhere:

bits tolerance 2n2^{-n} ratio
6 6.62% 1.56% 4.2
8 3.29% 0.391% 8.4
10 0.714% 0.098% 7.3
12 0.141% 0.024% 5.8

Those four numbers are medians over a batch of two dozen ladders, so they carry the batch’s own precision and not more: re-run with twenty draws instead of twenty-four and they come back 7.72%, 3.48%, 0.717% and 0.156%, which is up to a sixth different at the coarsest resolution and within a few per cent at the two finest. The quantity being estimated is a median of a distribution, and a median from two dozen samples is worth about two significant figures. What is not an estimate is the ordering and the scaling, and those are what the claim is made on.

The scaling is the expected one — each bit roughly halves the tolerance — and the constant in front is not one. It sits between four and eight, which is to say that a ladder tolerates resistors four to eight times worse than the naive “the MSB must be accurate to half an LSB” argument demands.

The reason is that the errors are independent rather than aligned. The naive argument implicitly puts every resistor’s error at its worst value and in the worst direction; the measurement draws them independently, and the major carry’s step is a sum of many errors that mostly cancel. It is the same fact as the first half of this essay, arriving in a place where it decides something discrete: not “how wide is the distribution” but “does this part work at all”.

And it is a hard edge rather than a soft one. A converter that is 0.02 dB less flat than intended is a converter with a specification to renegotiate. A converter whose output falls when its code rises is not a twelve-bit converter, it is a broken one, and no amount of calibration fixes it because the mapping is no longer invertible. That is why the boundary is worth stating in tolerance: it is the number the part is bought against.

An R–2R ladder stops being 12 bits at 0.141% resistors. computed by solving, not by drawing. The worst step at a major carry, against the tolerance every resistor in the ladder is bought to, at four resolutions. A step of −1 LSB is a converter whose output goes backwards when its code goes forwards, and the tolerance at which half a batch does that is 6.62% at 6 bits, 3.29% at 8 bits, 0.714% at 10 bits, 0.141% at 12 bits — halving with every bit, and four to eight times looser than the 2⁻ⁿ the resolution alone suggests, because the errors are independent rather than aligned. The output is exactly linear in the code however wrong the resistors are, so the major carries are the worst transitions rather than merely the likeliest.
Fig. 8 And what the tolerance costs per bit: a twelve-bit ladder is monotone only while its resistors are inside 0.141%. Each further bit halves that figure, so the tolerance is not a specification the part meets — it is a specification that halves with every bit asked of the same arrangement.

Why the sampling has to be seeded

The distributions above are measured rather than derived, which means they are the output of a random number generator, which means the figure has to say which one.

The generator is the shared one this fleet uses for every sampled claim, seeded explicitly, so the histogram is a function of its arguments like every other figure here. Re-render the page and the same three thousand draws come back. That matters more than it sounds: a figure whose numbers move between renders cannot carry a caption, and a caption that says “the worst of three thousand draws reached 95.1% of the bound” is a claim about a specific experiment that a reader must be able to repeat.

It also means the tails are honest about what they are. Three thousand draws resolve a 99.9% point with three draws outside it, which is a poor estimate of a tail and a fine estimate of the body. The figure quotes both the measured 99.9% point and the single worst draw, and the difference between them is the sampling error, visible rather than hidden.

The second tolerance, which is not on the part either

A resistor’s printed tolerance is its value at one temperature on the day it was made. Two other numbers move it afterwards and neither is in the histogram above.

The temperature coefficient, which for an ordinary thick-film part is a hundred parts per million per kelvin. Forty kelvin of self-heating and ambient swing is 0.4% — comparable with the whole distribution measured here for 1% parts, and systematic rather than random, so it does not average down over the parts and the central limit theorem does not touch it.

Drift with age, which is smaller and points one way.

Both are why the sensitivity half of this essay is the useful half. A distribution can be narrowed by buying better parts; a sensitivity can be removed by choosing a different network, and the removal applies to the temperature coefficient and the ageing at the same time. A divider made of two halves of the same part in the same package has a ratio whose temperature coefficient is the difference of two nearly equal numbers rather than either of them, which is a thousandfold improvement bought with no better resistor at all — and it is exactly the sensitivity argument run backwards.

The three ways this collection asks the same question

How far does the answer move when a component does — this collection answers it three ways and they cost quite different amounts. Every derivative, and the one that is zero is the adjoint route: every derivative from two solves, exact. This page is the statistical route: a spread from three thousand draws, which attributes nothing. The digits the arithmetic did not have is the third, where the perturbation is the arithmetic rather than a component. What a steep skirt costs is where the answer bounds a design decision, and The divider, and the thing it does not know about is the smallest circuit in which the question can be asked at all. The matrix that is ill, and the answer that is not is the warning that goes with the bound.

What is checked

Four assertions, and the first is the one everything else stands on.

That the worst case is the part tolerance at every part count — asserted to a part in a million across the slider, from sensitivities taken as central differences on the solved network rather than from the divider expression. If that failed, the sensitivities would be wrong and nothing below it would mean anything.

That the root-sum-square is between 1.5 and 2 standard deviations of the measured distribution, which is the claim that it is not one. The bracket is deliberately wider than 3\sqrt3: at two parts the finite sample gives 1.70 rather than 1.73, and a tolerance tight enough to fail there would be a tolerance chosen to pass rather than a statement about the rule.

That the ladder’s output is linear in its code to 101610^{-16} with 5% resistors — the superposition that makes the major-carry argument a proof rather than a heuristic.

And that the tolerance a ladder stands falls with every bit asked of it, monotonically across the four resolutions measured. That is the boundary itself, and it is the one this essay exists to put a number on: a tolerance, in a collection where every other edge has been a frequency or an amplitude.

Where the three numbers are each the right one

A worst case, a measured spread and a root-sum-square bound are three answers to three different questions, and the collection has circuits for which each is the one to use.

The worst case is right wherever a single unit failing is unacceptable and no screening will catch it. The gain that is exactly one is the limiting example: an oscillator whose gain resistors put the loop gain below three does not oscillate at all, so a design aimed at the spread ships units that are silent — and what the limiter charges for measures what aiming at the worst case costs instead, which is 1.9 per cent of distortion on every unit including the ones that did not need it.

The spread is right wherever the quantity is an error that is later removed by calibration, which is most instrument work. The rejection four resistors decide is a case where it is not: the rejection of a difference amplifier is set by the mismatch of four resistors, so a population’s spread is the specification rather than an incidental fact about it, and one plus the gain over four times the tolerance is the number that gets printed.

And the root-sum-square bound is right nowhere in this collection, which is the finding worth carrying. It is neither a bound — the worst case exceeds it — nor a standard deviation, being 1.70 of one for four one per cent parts, and its only property is that it lies between the other two numbers. Wherever it appears in a design note, one of the other two was wanted.

The R–2R result at the end of this essay is where the choice between them stops being a matter of taste. A twelve-bit converter is twelve bits for the units whose resistors fall inside 0.14 per cent and is not for the others, and no averaging, calibration or screening of the finished part recovers a missing code. That is a worst-case requirement by construction — which is why converter ladders are laser-trimmed rather than specified, and why the tolerance in that row is three orders tighter than anything in the rows above it.

What links here

Essays that reach for this one mid-argument — the half of a link its own author cannot write down, the 8 sharing most with it of 23.

What this makes readable

Essays that name this one as a prerequisite.

The objects named here

The third axis, after the field and the idea: the things themselves, and every essay that touches each one.

Component sensitivityComponent toleranceDesign tradeoffModel rangeMonte carloNonlinearitySeeded generatorVoltage divider