One number from two measurements
Assumes: The band a turns ratio holds over · What a network answers, and how the answer is checked
Every solve on this site is verified twice before it is returned. Kirchhoff’s current law is rebuilt from the element relations and summed at every node; and — deliberately not a restatement of it — the resistors’ |i|²R is set against the sources’ Re(v i*), because current law constrains only the currents and says nothing about whether the node voltages that produced them are right.
When the magnetics phase added one element to the solver, both of those checks went blind.
A coupling adds no current anywhere. It connects to no node; it is a relation between two branches that already have currents of their own. Current law does not move.
A coupled pair dissipates nothing. It stores energy and returns it, like every other reactance, so the real-power balance does not move either.
So a mutual inductance stamped into the wrong row, with the wrong sign, into one row instead of two, or with the wrong magnitude, produces a perfectly well-formed solution to a different circuit — and this site’s two standing checks, which have caught assembly errors in every other element since the first commit, would both pass.
The bench method, as a netlist
The classical way to measure mutual inductance uses nothing but an inductance meter.
Connect the two windings in series so that their fluxes add, and the total inductance is
Reverse the connections of one winding so that the fluxes oppose, and it is
Subtract: the difference is 4M. Nothing about the geometry, the core, the turns or the interleaving appears anywhere, and M follows from two readings of a quantity a meter reports directly.
Here it is performed on the netlist rather than on a bench. Each connection is a separate network:
two inductors in series with the coupling between them, driven through a resistance large enough that
the current is set by it, and the inductance read out as Im(v/i)/ω. The two solves share the
element values and nothing else — and neither of them reads K’s coefficient.
Reversing the winding is reversing the order of the second inductor’s terminals in the netlist, which reverses the direction its current is measured in — which is exactly what reversing the winding does to the flux it contributes. That equivalence is the whole trick and it is why the method works at all.
What it recovers
Eighteen combinations: three second-winding inductances against six couplings.
| declared coupling | recovered |
|---|---|
| 0.1 | 0.100000000000 |
| 0.3 | 0.300000000000 |
| 0.5 | 0.500000000000 |
| 0.7 | 0.700000000000 |
| 0.9 | 0.900000000000 |
| 0.99 | 0.990000000000 |
Worst relative departure across all eighteen: 2.4 × 10⁻¹⁵.
That is not a tolerance and it is not a fit. It is the same number arriving by a route that could not have known it, and the only thing the two paths have in common is the two inductances and the netlist they were assembled into.
There is a second check in the same measurement and it is the one that makes the first one mean something. The sum of the two readings is L₁ + L₂ regardless of the coupling, because the mutual terms cancel — and it comes out to 2.2 × 10⁻¹⁶ of the expected value at every combination. If the two solves had been of different circuits, or if one connection had accidentally changed an inductance as well as a sign, the sum would move and the difference would still look plausible.
What it would catch
A check is worth what it rejects, so it is worth being specific about the failures this one detects and the two standing checks do not.
A coupling in one row instead of two. The matrix would be asymmetric; the pair would no longer be reciprocal; and the aiding and opposing measurements would differ by 2M rather than 4M, giving a recovered coupling exactly half the declared one.
A sign error. Aiding and opposing would swap, and the recovered coupling would come out negative.
A wrong magnitude — a missing √, an L₁ where an L₂ belongs. The recovered value would differ from the declared one by whatever the error was.
A coupling referring to inductors from a different netlist, which is the object-identity trap this
site already carries for sol.i. That one is refused by name rather than measured, because a
coupling naming an element the netlist does not contain is not a wrong answer but an ill-formed
question.
None of the four moves a node current or a watt.
And the check inside the solver
The measurement above is a figure and runs when the figure is drawn. The site’s promise is stronger than that: every solve is verified before it returns, and a coupled solve had to be no exception.
So verifySolution gained a third route of its own, cheaper than the series method and running on
every solve. For each coupled winding it rebuilds
from the solved node voltages and branch currents, and compares it with the voltage the solve produced. The stamps are not consulted; the coupling’s declared value is used, so this is a check that the matrix agrees with the declaration rather than a check of the declaration itself. Between the two — this on every solve, the series method in a figure — both halves are covered.
The gate proves the rebuild bites by changing a coupling’s coefficient after the matrix has been
assembled. The stamps are untouched, so current law and the energy balance both still pass, and the
rebuilt relation catches it alone. That is the rejects discipline the site applies to every
assertion, applied to a verification step: a check that has never rejected anything has never been
tested.
Why the difference and not the ratio
A small point about the arithmetic, because it is the kind of thing that decides whether a measurement is any good in practice.
The method subtracts two quantities that are close together when the coupling is weak. At k = 0.1 with 10 mH and 40 mH windings, the aiding reading is 54.0 mH and the opposing is 46.0 mH: a difference of 8 mH out of 50, which is fine. At k = 0.01 it would be 0.8 mH out of 50, and a meter with three digits would be reporting a coupling to one digit.
So the method’s precision degrades as the coupling weakens, in proportion — and it is at its best exactly where a transformer lives, at k above 0.9, where the two readings differ by more than a factor of six — 86.0 mH against 14.0 mH at k = 0.9. That is a happy accident of the geometry rather than a design, and it is worth knowing which end of the range a technique is good at.
The arithmetic here is exact to fifteen digits because the “meter” is a linear solve in double precision. On a bench the limit would be the meter’s, and the measurement would be quoted with it.
What a large resistance is doing in the measurement
One construction detail decides whether the two solves are measurements of an inductance or of something else, and it is worth a section because the same detail has caught this site before.
An inductance meter drives a known current and reads the voltage. A netlist has no such element; what it has is a voltage source, and a voltage source across a pair of inductors at a frequency where their impedance is small produces an enormous current and an answer dominated by whatever else is in the loop.
So the drive here is a voltage source through a one-megohm resistor, which makes the current essentially independent of the inductance and the voltage across the pair proportional to it. That is a current source built out of the elements available, and it is the same construction the two-port measurement uses for the same reason.
It has a cost that is worth stating rather than hiding. The reading is not exactly Im(Z)/ω of the inductor pair; it is that quantity as measured through a divider that is not quite ideal. At 1 kHz with 50 mH the pair’s reactance is 314 Ω against a megohm, so the error is a part in three thousand — and the measurement recovers the coupling to 2.4 × 10⁻¹⁵ regardless, because the same divider is present in both readings and the coupling comes out of their difference.
That is a small instance of a general and useful property. A ratio or a difference of two measurements made the same way is insensitive to errors common to both, which is why the compensated divider works, why the differential pair cancels its even harmonics to 10⁻¹⁶, and why this method needs no careful instrument. What it is not insensitive to is anything that differs between the two connections, which is exactly the sign of the mutual term — the quantity being measured.
What the two readings look like across the range
The figure draws both connections rather than their difference, and the reason is that the shape of the pair carries information the difference does not.
| coupling | series aiding | series opposing | ratio |
|---|---|---|---|
| 0.1 | 54.0 mH | 46.0 mH | 1.17 |
| 0.3 | 62.0 | 38.0 | 1.63 |
| 0.5 | 70.0 | 30.0 | 2.33 |
| 0.7 | 78.0 | 22.0 | 3.55 |
| 0.9 | 86.0 | 14.0 | 6.14 |
| 0.99 | 89.6 | 10.4 | 8.62 |
The aiding curve rises linearly with the coupling and the opposing one falls linearly, and they meet the ends of the range at L₁ + L₂ ± 2√(L₁L₂) — which for 10 mH and 40 mH is 90 mH and 10 mH. At perfect coupling the opposing connection would read exactly ten millihenries, which is (√L₂ − √L₁)², and a reader who has met that expression before will recognise it: it is the leakage inductance of the pair, seen from the series connection.
That is a second, free result of the same measurement. The opposing reading is the total leakage of the two windings taken together, so the method that recovers the coupling also recovers the quantity the upper band edge is set by, in the same two readings and without a third.
Which makes the bench procedure rather better than it first appears. Two inductance measurements give the coupling, the mutual inductance, the total leakage, and — with the sum as a check that the two readings are of one pair — a verification that they were. Four quantities and one consistency check from an instrument that reports one number.
The general form
This site has now needed a third route three times, and the three have something in common worth naming.
The step response is computed from residues and again by walking the network forward in time, because a residue expansion and a transfer function share their poles and a time-domain march shares nothing with either.
The neutral current is computed from the solve and again as three times the zero-sequence component, sharing only the solve.
And a coupling is stamped into a matrix and recovered from two series connections, sharing only the inductances.
In each case the second route was added not because the first was suspected but because the first had no independent witness. That is a different criterion from “this looks risky”, and it is the one that finds the errors nobody was looking for: the bilinear recursion in the noise field whose past output carried the wrong sign had produced a stable, plausible sequence for two phases, and what caught it in the end was a claim about averaging that could not be true.
A mutual inductance is the clearest case the site has had. It is invisible to both standing checks by construction — not by oversight, not because the checks are weak, but because the quantity it constrains is one neither of them touches. An element like that needs its own witness before anything is built on it, and eleven essays are built on this one.
Two figures, one number, and a third route each
It is worth putting the field’s three independent determinations of the coupling side by side, because between them they cover every way the element could be wrong.
The series connections, in this essay’s figure: two solves of two different netlists, differenced. Recovers k to 2.4 × 10⁻¹⁵ and would catch a wrong magnitude, a wrong sign, and a coupling in one row instead of two.
The two-port parameters, in the next essay: four solves, each driving one port with the other open. Recovers the mutual inductance from both transfer terms independently, and — the part neither other route reaches — requires the two to be equal, which is reciprocity and is a property of the device rather than of the measurement.
The rebuilt relation, inside verifySolution: no extra solve at all, running on every coupled
network the site draws. Catches a matrix that disagrees with the declaration, which is the failure the
other two cannot see because they take the declaration as given.
The three overlap deliberately. Two of them would catch a sign error; two would catch a wrong
magnitude; only one catches asymmetry and only one runs everywhere. That is what a set of checks
should look like for an element on which a whole field rests, and it is more than any other element
in lib/network.js has — the resistor, the capacitor and the controlled sources are all visible to
current law and to the energy sum, and have needed nothing else in five phases.
Why this element and not the others
A closing observation about which parts of a solver need a witness of their own, because the answer turns out to be predictable and this site had not noticed the pattern until an element arrived that broke it.
Every other element in lib/network.js contributes a current at a node. A resistor’s is v/R,
a capacitor’s is sCv, a controlled source’s is gₘ times somebody else’s voltage, and an
inductor’s, a source’s or a nullor’s is an unknown the matrix solves for. Current law sums those at
every node, so an error in any of them shows up there — which is why one check has been enough for
five phases and eleven fields.
A coupling is the first element that contributes no current and no node. It is a constraint between two rows of the matrix, and constraints of that kind are invisible to a check that sums things at nodes, by construction rather than by accident.
That suggests a rule for whatever gets added next, and it is worth writing down now that there is one example: an element that adds a constraint rather than a current needs its own verification, and the verification has to rebuild the constraint rather than re-sum anything. A gyrator, an ideal transformer stamped as a constraint rather than as two coupled inductances, a nullor’s input condition — all of them are in that class, and the nullor is the one this site already has.
The nullor, as it happens, is covered: its constraint is that its input terminals draw no current and sit at the same potential, and the first of those is a current statement, so current law sees it. The coupling is the first genuinely invisible one, and the third route this essay describes is what that cost.
The fourth route, which arrived later
There is now a second independent check on the same element, and it is worth setting beside this one because it catches the same fault by a different mechanism.
Two ports from two one-ports recovers the four impedance parameters of a coupled pair by four solves — each port driven with the other open, the definition read literally — and two of the four come out equal to . That is reciprocity, and a coupling stamped into one row instead of two breaks it immediately. So the field has a symmetry check and a bench check on the same element, arrived at from different directions, neither of them derivable from the other.
Which is worth having because the two fail differently. The symmetry check is a property of the matrix and would catch a stamping error at any coupling value including zero; the series-aiding measurement is a property of the solved circuit and would catch a coupling of the right symmetry and the wrong magnitude. Together they pin both.
The reading that does not care which way round it is is where the symmetry the first of those relies on is established in general — five parts in over four decades — and where its limit is put at a transconductance of 0.78 femtosiemens, which is the point at which any check built on reciprocity stops being available.
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 11.
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.
Coupling coefficientMutual inductanceSeries connectionTransformer