No figure on this site is a drawing that was made once and saved. Each one is a function:
it takes a circuit's parameters, solves the network, and returns SVG. The same generator
draws a capacitor with a nanohenry of lead and one with twenty, and neither is redrawn by
hand — which is also why every frame a reader can reach on a slider has passed the same
assertions as the one printed here.
That is the reason the collection can keep growing without the illustrations drifting apart.
A generator is written once, checked once, and every essay that calls it inherits the same
line weights, the same colour roles, and the same behaviour in dark mode. There are
25 of them so far, and between them they carry
several hundred assertions that run at build time — a figure whose circuit does not do what
its caption says stops the build rather than shipping.
bode-first-order
-60 -40 -20 0 gain (decibels) the sketch: flat, then −20 dB/decade −3.01 dB -90 -45 0 10 100 1k 10k 100k frequency (hertz) phase (degrees) sketch within 0.1 dB below 152 Hz solved, then checked — checked against a chain-matrix product the sketch is 3.01 dB wrong at 995 Hz
capacitor-impedance
10m 1.0e+2m 1 10 100 1k 10k 10k 100k 1M 10M 100M 1G frequency (hertz) impedance magnitude (ohms) 1/(ωC), the symbol's promise 10% off above 4.69 MHz inductive above 14.5 MHz 30 mΩ — the floor the resistance sets solved, then checked — the part as three elements a capacitor below 14.5 MHz, an inductor above
damping-family
0 0.500 1 1.50 0 1 2 3 4 time (milliseconds) output (volts), for a 1 V step in the final value 37.2% over solved, then checked — overshoot read off the curve settles inside 2% after 1.12 ms
diode-drop
0.40 0.60 0.80 1 1.2 1e-6 1e-5 1e-4 1m 10m 100m 1 10 100 current through the diode (milliamperes) forward voltage across it (volts) the constant everybody is taught 1 V in: 0.629 V 5 V in: 0.693 V 12 V in: 0.717 V solved, then checked — Newton's method on the exponential the constant moves 59.5 mV per decade
divider-loaded
0 2 4 6 100 1k 10k 100k 1M 10M load resistance across the output (ohms) output voltage, solved with the load in place 6.0 V with nothing connected 1% low at 495 kΩ the circuit 12 V R₁ R₂ R_L solved, then checked — the load swept over six decades the ratio is 1% wrong below 495 kΩ
edge-map
10 100 1k 10k 100k 1M 10M 100M 1G 10G frequency (hertz) the ideal operational amplifier 1.42 kHz — a gain of 100 from a 1 MHz part is 1% low here a 10 V output at full amplitude 7.96 kHz — above this the output cannot move fast enough the ideal 100 nF capacitor 4.69 MHz — 1.2 nH of lead makes it 10% wrong here Kirchhoff's laws on 10.0 cm 3.97 MHz — the board is one degree long here each bar is where the model may be used; the rule at its end is the number solved, then checked — each boundary from its own model and one that is not a frequency: 7.3 mV
filter-families
-90 -60 -30 0 100 1k 10k frequency (hertz) gain (decibels) Butterworth Chebyshev Bessel half power 1.00 kHz the passband, magnified -1 -0.500 0 0 0.200 0.400 0.600 0.800 1 solved, then checked — three networks, 133 frequencies each all normalised to a measured −3 dB at 1.00 kHz
filter-step
0 0.500 1 0 1 2 3 4 time (milliseconds) output, for a 1 V step in Butterworth 12.8% Chebyshev 12.4% Bessel 0.8% solved, then checked — residues, checked by integration overshoot follows the delay, not the magnitude
filter-tradeoff
passband deviation decibels, peak to trough below 0.8 f_c Butterworth 0.443 dB Chebyshev 0.500 dB Bessel 1.882 dB attenuation at three times the corner decibels down Butterworth 47.7 dB Chebyshev 64.0 dB Bessel 28.3 dB group-delay variation across the passband per cent, slowest against fastest Butterworth 48.0% Chebyshev 49.0% Bessel 0.1% solved, then checked — nine measurements, three networks every number here moves with the order
group-delay
0 0.50 1 1.5 2 100 1k frequency (hertz) group delay (milliseconds) Butterworth Chebyshev Bessel the corner, 1.00 kHz solved, then checked — −dφ/dω on the unwrapped phase flat magnitude is not flat delay
ideal-vs-real
0 10 20 30 40 50 1 10 100 1k 10k 100k 1M frequency (hertz) closed-loop gain (decibels) the ideal amplifier: two resistors, no frequency the circuit + − 1% low at 1.35 kHz 3 dB down at 10.0 kHz solved, then checked — a nullor against a real device the ideal answer is 1% wrong above 1.35 kHz
impedance-seen
1 10 100 1k 10k 100 1k 10k 100k 1M frequency (hertz) impedance magnitude (ohms) reactances cancel at 5.03 kHz 7.91 Ω solved, then checked — one ampere in, 201 frequencies not a component value: what the pair does
loop-gain
-40 -20 0 20 40 60 loop gain (decibels) unity loop gain crossover 5.73 kHz 46.1 dB of gain margin -180 -135 -90 1 10 100 1k 10k 100k 1M 10M 100M frequency (hertz) loop phase (degrees) −180° 34.9° of margin solved, then checked — the loop cut and injected 34.9° of phase margin at 5.73 kHz
lumped-vs-line
1 10 100 1k 10k 100k 1M 10M 100M 1G frequency (hertz) impedance looking into 10.0 cm of track (ohms) the lumped model: one L, one C 1° long at 3.97 MHz a tenth of a wavelength at 143 MHz the 200 Ω at the far end solved, then checked — the line against a two-element model Kirchhoff's laws run out at 143 MHz
margin-and-ringing
0 50 100 150 0 200 400 600 closed-loop output (volts) for a 1 V step the 100× the divider asks for 35.1% over phase margin, measured two ways from the loop gain 34.9° from the overshoot 35.0° apart by 0.1° — the relation assumes two poles and this loop has three solved, then checked — margin against overshoot the second-order relation is 0.1° out here
network-solved
a bridge, which no series-parallel reduction reaches node a 7.5566 V node b 4.7993 V current law, rebuilt from the element laws 2.71e-16 of the largest branch current power delivered against power dissipated 4.33e-16 apart · 48.07 mW solved, then checked — 6 elements a linear network has no edge: this one is exact
nyquist-locus
−1 unity gain, 34.9° of margin real imaginary the unit circle, drawn faint the locus, and its mirror for negative frequency solved, then checked — the loop gain as one path 46.1 dB and 34.9° from the critical point
phasor-sum
real imaginary across R across L across C the source, 1 V magnitudes |v_R| = 1.000 V |v_L| = 2.128 V |v_C| = 2.128 V sum 5.255 V vector sum 1.000 V solved, then checked — one solve at 1.59 kHz steady state only: 3 cycles to settle
pole-plane
the step this produces 0 0.500 1 1.50 0 1 2 3 4 σ jω ζ = 0.3000 ω₀ = 1592 Hz solved, then checked — poles by rooting the determinant natural frequency recovered to 6 digits
refusals
no path to ground a node whose potential nothing fixes refused: floating two sources in a loop 5 V 3 V their currents are not determined refused: vloop a resistance of zero 0 Ω an element with no law of its own refused: value an output that is not a node ? a response asked for where there is nothing refused: node solved, then checked — each refusal was run a solver that never declines is untested
resonance-bandwidth
0 0.20 0.40 0.60 0.80 1 100 1k 10k frequency (hertz) fraction of the source across the resistor half the power 198.9 Hz measured resonance 1.59 kHz solved, then checked — half-power points by bisection f₀/Q predicts 198.9 Hz — exactly
slew-departure
0 0.250 0.500 0.750 1 0 5 10 15 20 time (microseconds) output, divided by the size of its own step 20 mV step 1.0e+2 mV step 5.0e+2 mV step 2 V step 8 V step linear below 79.6 mV solved, then checked — integrated with the rate limit scaling fails above a 79.6 mV step
small-signal-departure
1.0m 10m 1.0e+2m 1 10 100 100m 1 10 100 drive amplitude (millivolts) how much the linear model understates the gain (per cent) 1% understated 10% understated 1% at 7.3 mV V_T = 25.9 mV solved, then checked — the Bessel ratio from its series the tangent is 1% wrong above 7.3 mV
source-model
0 2 4 6 8 10 10m 100m 1 10 current drawn from the source (amperes) terminal voltage, solved the ideal source: 9 V at any current 1% low at 180 mA the model 9 V r load solved, then checked — the load swept over four decades the ideal source is 1% wrong above 180 mA
step-two-routes
0 0.500 1 1.50 0 2 4 output (volts), for a 1 V step in the final value solid: from the poles · dashed: stepped forward time (milliseconds) above · the same span as a fraction, below gap between the two routes (volts) 1e-7 1e-6 1e-5 1e-4 1.0m 10m 1.0e+2m 1 solved, then checked — residues against 500 trapezoidal steps the numerical route is out by 1.7e-3 V