The theory · how the figures above were built
The model is a centre-fed thin-wire dipole — a straight z-directed conductor of length L and radius a, driven by a 1 V delta-gap source at its midpoint. The unknown is the current distribution I(z) along the wire.
The governing equation is Pocklington's integral form of the boundary condition on the wire surface:
Choose N = 5 pulse basis functions for I(z′) and point-match at the centre of each segment. The integral equation collapses to a 5×5 complex linear system:
Everything that follows — fill, factor, substitute, post-process — operates on this matrix.
Each cell Zmn is one Pocklington-kernel integral over segment n, evaluated at the centre of segment m:
The calculator evaluates this with 51-point Simpson quadrature. Steps 1–26 walk through all 25 cells; the side panel shows R, kR, and the resulting complex Zmn as each one is computed.
The matrix is Toeplitz. The kernel depends only on |zm − z′|, so every diagonal of [Z] holds the same complex value. A production solver stores only one row and reuses it; the calculator shows the full grid so the structure is visible.
The j prefactor swaps real and imaginary parts. On the diagonal, R ≈ a is tiny and the integrand is dominated by a huge real part. Multiplying by j moves that into Im(Zmm) — which is why diagonal cells show a large negative imaginary part (~−2900 Ω at L ≈ 0.5λ). That value is the wire's near-field reactance, not a numerical artefact.
A delta-gap 1 V source at the centre segment puts a single non-zero entry in {V}. For N = 5 the feed is segment 3, so V[3] = 1/Δz, all other entries are zero. No clever physics — the source vector simply marks where voltage is applied.
With [Z] and {V} in hand, solve [Z]·{I} = {V} by factor + substitute, not by computing Z⁻¹. The arithmetic is complex throughout; every +, −, ·, ÷ below uses complex operands.
For each pivot row p and each row t below it:
After all sweeps the lower-triangular part holds the multipliers (L, ones on the diagonal) and the upper-triangular part holds U. The verification phase re-multiplies L · U in complex arithmetic and compares against the original [Z] cell by cell — every cell agrees to ~10⁻¹³.
Solve L · {y} = {V} top-down. L is lower-triangular with ones on the diagonal, so each row has exactly one new unknown:
Solve U · {I} = {y} bottom-up. U is upper-triangular, so the bottom row has one unknown; work upward:
The result {I} is the complex segment-by-segment current distribution. By construction it satisfies [Z]·{I} = {V}.
Mathematically valid, numerically wasteful. Inverting takes ~3× more operations than LU + two sweeps for a single right-hand side, accumulates more rounding error, and cannot be reused. The factorisation can: each new {V} (frequency sweep, multi-port, scattering) costs only O(N²) for the two sweeps once L and U are stored.
To make the equivalence concrete, the calculator computes both — direct inversion and LU substitution — for the current settings and shows the residual:
The two methods agree to ~14 decimal digits. The remaining 10⁻¹⁴ is double-precision rounding — the same any method would accumulate.
The complex current vector {I} is the starting point for every number an antenna engineer reports.
Read the complex current at the feed segment and apply Ohm's law at the terminals:
Rin is the radiation resistance (energy leaving as electromagnetic waves). Xin is the reactance (energy stored in the near field). Resonance is the length where Xin = 0. For this calculator (a/λ = 0.020, N = 5) that lands near L/λ ≈ 0.433. The slider opens at the slightly shorter L/λ = 0.415 — tuned so the S11 minimum (best 50 Ω match) lands exactly on 2.45 GHz. The two conditions don't coincide with a 50 Ω reference, and the engineering convention picks the better-matched length.
For a z-directed pulse-basis dipole the far field factors cleanly into an element factor times an array factor:
The calculator builds this in four substeps: element factor sampled at 9 angles (step 98), array factor matrix filled column by column (steps 99–107), total |E(θ)| = sin θ · |AF(θ)| (step 108), and the normalised 3D pattern revolved around z (step 109). The factorisation is clean here because every basis function carries z-directed current and differs only by translation; for bent wires or surfaces the radiation integral no longer separates so simply.
With |E(θ)| known on a sphere, directivity follows in six mechanical substeps:
A textbook half-wave dipole has D = 1.64 → 2.15 dBi. The calculator produces ~2.1 dBi at L/λ ≈ 0.5.
The entire solver runs again at 51 frequencies between 1.45 and 3.45 GHz, anchored so that the design frequency f0 = 2.45 GHz lands exactly on the 26th sample. Each point is a fresh fill + factor + solve at a re-scaled L/λ. From Zin(f) at each frequency:
Minima of |S11| mark operating bands. At the default L/λ = 0.415 the dip lands precisely on 2.45 GHz at roughly −13 dB.
The complex {I} is a phasor — the physical current is real and oscillating. The conversion is:
The calculator animates this as a coloured bar along the wire while ωt sweeps 0° → 360°. The pulse-basis approximation means I(z, t) is piecewise-constant on each segment; what varies with time is only the cos/sin coefficients applied to the fixed complex amplitudes.
The three engineering numbers — input impedance, peak gain at the actual peak direction, and the 3D radiation pattern with absolute dBi scale — collected on one panel.
The calculator runs the genuine algorithm. Scaling to a real solver changes only the parameters around the edges:
For a half-wave dipole, 21–41 segments converges to within fractions of an ohm. Same arithmetic; the LU dominates runtime as O(N³).
Production codes (NEC-2, FEKO, HFSS-IE) use rooftop or sinusoidal bases that span two segments and require Galerkin testing. Denser matrices, faster convergence — 5–10 segments per λ is usually enough.
Bent wires, Yagi arrays, and surfaces (RWG basis on triangular meshes) follow the same workflow: discretise, fill [Z], factor, substitute, post-process. The kernel changes; the bones of the algorithm don't.
Re-build [Z] at each frequency, factor once per matrix, substitute many times. Each new {V} costs O(N²) — never O(N³).
At N > 10⁵ dense LU is infeasible. GMRES with fast-multipole acceleration brings cost down to O(N log N) per matrix-vector product. The integral equation and basis functions stay the same; only the linear solver swaps out.