Maxwell's equations are four laws that describe every classical electric and magnetic effect: charges make electric fields, magnetic field lines never end, a changing magnetic field makes an electric field, and currents plus a changing electric field make a magnetic field. Together they predict waves that travel at 1/√(μ₀ε₀), which works out to 299,792,458 metres per second, the speed of light. Radio, Wi-Fi and fiber optics are all engineering built on that single result.
This guide goes one level deeper than our overview of famous equations that changed the world. It reads each equation in plain words, computes the speed of light from CODATA 2022 constants, follows the line from Faraday's coil through Hertz and Marconi to your Wi-Fi channel and a glass fiber, and ends with a short Python program that solves the equations numerically. Safeguard builds security software, not physics software, and nothing below suggests otherwise; the one place where the two meet is the code that simulates fields, and we say exactly how far that goes.
Key takeaways
- Four equations, two fields. Gauss's law (electric), Gauss's law for magnetism, Faraday's law and the Ampere-Maxwell law relate the electric field E and magnetic field B to charges and currents.
- Maxwell's addition was one term. He added the displacement current, ε₀ ∂E/∂t, to Ampere's law. Without it, the equations contradict conservation of charge and do not predict waves.
- Light falls out of the constants. 1/√(μ₀ε₀) with CODATA 2022 values gives 299,792,458 m/s to better than one part in a billion. Maxwell made a cruder version of this calculation around 1862 and concluded that light is electromagnetic.
- Hertz proved it in Karlsruhe between 1886 and 1888, generating waves 30 to 100 cm long, reflecting them and showing they travel at the speed of light.
- Wi-Fi is the same physics at gigahertz. Channel 6 at 2,437 MHz has a 12.3 cm wavelength, so a quarter wave antenna is about 3.1 cm long.
- Fiber is Maxwell's equations inside glass. Total internal reflection guides light; Kao's 1966 analysis showed purer glass could carry it far, and today's fiber loses under 0.2 dB per km at 1.55 µm.
- The equations stop at photons. Quantum electrodynamics, recognised by the 1965 Nobel Prize, takes over when individual quanta matter.
What do Maxwell's four equations say in plain words?
Here are all four in the modern vector form for fields in vacuum or with free charges and currents, in SI units. The differential form describes what happens at a single point; the integral form describes what happens over a surface or around a loop. They say the same thing.
Differential form Integral form
Gauss (E) ∇ · E = ρ / ε₀ ∮ E · dA = Q_enclosed / ε₀
Gauss (B) ∇ · B = 0 ∮ B · dA = 0
Faraday ∇ × E = −∂B/∂t ∮ E · dl = −dΦ_B/dt
Ampere-Maxwell ∇ × B = μ₀ J + μ₀ε₀ ∂E/∂t ∮ B · dl = μ₀ I_enclosed + μ₀ε₀ dΦ_E/dt
The symbols: E is the electric field in volts per metre, B the magnetic flux density in teslas, ρ the charge density, J the current density, Q and I the enclosed charge and current, Φ_B and Φ_E the magnetic and electric flux through a surface, ε₀ the vacuum permittivity and μ₀ the vacuum permeability.
| Equation | Plain words | Experiment behind it | What it explains in your house |
|---|---|---|---|
| Gauss's law for E | Electric field lines start on positive charge and end on negative charge; the total flux out of a closed surface counts the charge inside | Coulomb's inverse square law | Static cling, capacitors, why a car body shields you from lightning |
| Gauss's law for B | Magnetic field lines never start or end; there are no magnetic charges | Every magnet broken in half gives two magnets | Why a compass needle has two poles, magnetic shielding |
| Faraday's law | A changing magnetic flux through a loop drives a voltage around it | Faraday's induction experiments, 1831 | Generators, transformers, wireless phone chargers, induction hobs |
| Ampere-Maxwell law | Currents and changing electric fields both curl a magnetic field around them | Ampere's work on currents, plus Maxwell's displacement current | Electromagnets, motors, and (with Faraday) every radio wave |
Gauss's law for electricity
Put any closed surface around some charge. Add up how much electric field pokes out through it, counting outward as positive and inward as negative. The total equals the enclosed charge divided by ε₀, no matter the shape of the surface. Charge outside the surface contributes field lines that go in and come out again, so they cancel.
For a point charge, pick a sphere of radius r. By symmetry the field has the same strength everywhere on the sphere and points straight out, so E × 4πr² = Q/ε₀, and E = Q/(4πε₀r²). That is Coulomb's law, recovered in one line.
Gauss's law for magnetism
The same surface, the same sum, but for the magnetic field, and the answer is always zero. Every field line that leaves a closed surface comes back in. This is the formal way of saying there is no isolated north pole or south pole: cut a bar magnet in half and each half has both.
Faraday's law of induction
Take a loop of wire. If the magnetic flux through it changes, for any reason (a magnet moves, the current in a nearby coil changes, the loop rotates), a voltage appears around the loop. The minus sign is Lenz's law: the induced current flows in the direction that opposes the change that caused it.
The differential form says more than the integral form suggests. ∇ × E = −∂B/∂t holds at every point in space, with or without a wire. A changing magnetic field creates a circulating electric field in empty space. That is half of the mechanism of a light wave.
Ampere-Maxwell law
Ampere's original law says a steady current produces a magnetic field that circles around it: wrap your right hand around the wire with the thumb along the current and your fingers show the field. Maxwell's version adds a second source, the rate of change of the electric field, multiplied by ε₀ (inside the bracket that μ₀ multiplies). A changing electric field creates a circulating magnetic field even where no charge flows. That is the other half of the light wave mechanism.
A dated timeline from Faraday to fiber
Every date below was checked against the source listed at the end of this post. Where sources frame an event differently, the table says so.
| Date | Event | Source |
|---|---|---|
| 1831 | Faraday discovers electromagnetic induction; he reads the first of his Experimental Researches in Electricity to the Royal Society on 24 November | MacTutor, Faraday |
| About 1862 | Maxwell, in London, calculates that electromagnetic effects propagate at about the speed of light and proposes that light is electromagnetic | MacTutor, Maxwell |
| 1865 | "A Dynamical Theory of the Electromagnetic Field" appears in Philosophical Transactions of the Royal Society, volume 155, pages 459 to 512 | Crossref record for the Royal Society article |
| 1873 | The four partial differential equations first appear in fully developed form in Maxwell's Treatise on Electricity and Magnetism | MacTutor, Maxwell |
| After 1879 | Oliver Heaviside recasts Maxwell's 20 equations in 20 variables as 4 vector equations in 2 variables, the form taught today | MacTutor, Heaviside |
| 11 November 1886 | Hertz first observes propagation of an electromagnetic wave in a Karlsruhe lecture hall | KIT press release |
| 1886 to 1888 | Hertz shows reflection, refraction and polarisation of the waves and that they travel at the speed of light | IEEE Milestone citation |
| 13 December 1888 | Hertz presents the results to the Royal Prussian Academy in Berlin | KIT press release |
| 1895 | Marconi sends wireless signals about 1.5 miles at Pontecchio | Nobel Prize, Marconi biography |
| 1896 | Marconi is granted the first patent for a system of wireless telegraphy | Nobel Prize, Marconi biography |
| December 1901 | First wireless signals across the Atlantic, from Poldhu in Cornwall | Nobel Prize, Marconi biography |
| 1909 | Nobel Prize in Physics to Marconi and Braun for wireless telegraphy | NobelPrize.org |
| 1965 | Nobel Prize in Physics to Tomonaga, Schwinger and Feynman for quantum electrodynamics | NobelPrize.org |
| 1966 | Kao (with Hockham) publishes the analysis showing glass fibers could carry light over long distances if impurities were removed | Nobel Prize 2009, advanced information |
| 1970 | A Corning Glass Works team reports low loss fused silica fiber, below Kao's 20 dB/km threshold | Nobel Prize 2009, advanced information |
| 6 October 2009 | Nobel Prize in Physics, half to Kao for light transmission in fibers for optical communication | NobelPrize.org press release |
| November 2018 | The 26th CGPM votes the revised SI, which fixes c, h and e exactly and turns μ₀ and ε₀ into measured constants | BIPM |
| 23 April 2020 | The FCC adopts rules opening 5.925 to 7.125 GHz to unlicensed devices such as Wi-Fi | FCC-20-51 |
A note on 1865 versus 1873: the 1865 paper already holds the full theory, displacement current and waves included, written as twenty component equations; MacTutor dates the fully developed form to the 1873 Treatise and credits Heaviside with the compact four vector equations.
What did Maxwell add, and how did it predict electromagnetic waves?
Maxwell's single most important change was the displacement current, the μ₀ε₀ ∂E/∂t term in the fourth equation. It is easy to state, and its consequences are enormous.
The capacitor problem
Imagine charging a parallel plate capacitor through a wire. Current I flows in the wire, and Ampere's original law says the magnetic field circling the wire is set by the current through any surface bounded by a loop around the wire.
Now choose two surfaces with the same loop as their edge. One is a flat disc that the wire pierces: current I passes through it. The other bulges out like a soap bubble and passes between the capacitor plates without touching the wire: no current passes through it. The original law gives two different answers for the same loop. Something is missing.
What does pass between the plates is a changing electric field. As charge Q builds up on plates of area A, the field between them is E = Q/(ε₀A), so ε₀A dE/dt = dQ/dt = I. If you add ε₀ dΦ_E/dt to the right side of Ampere's law, both surfaces give the same answer. Maxwell called this term the displacement current. It is not a flow of charge; it is the rate of change of electric flux, and it has units of current.
Why charge conservation forces the term
There is a more formal argument. The divergence of any curl is zero, so taking the divergence of Ampere's original law, ∇ × B = μ₀J, forces ∇ · J = 0. That says charge can never pile up anywhere, which is false: it piles up on capacitor plates all the time. Conservation of charge actually says ∇ · J = −∂ρ/∂t. Combine that with Gauss's law, ρ = ε₀ ∇ · E, and you find that J + ε₀ ∂E/∂t has zero divergence. That combination, not J alone, is what belongs on the right of Ampere's law.
Worked example 1: the displacement current in a capacitor
Take a capacitor with plates of area A = 0.01 m² (10 cm by 10 cm) charging at a steady I = 1 A.
- dE/dt = I/(ε₀A) = 1 / (8.854 187 8188 × 10⁻¹² × 0.01) ≈ 1.13 × 10¹³ volts per metre per second.
- The displacement current through the gap, ε₀A dE/dt, is exactly 1 A, matching the wire.
The magnetic field around the gap is the same as around the wire, just as Maxwell's correction requires. In ordinary circuits this term is tiny compared with conduction currents, which is why nobody had noticed it experimentally. At high frequencies and in empty space it dominates.
From the term to a wave
In empty space there is no charge and no current, so the equations become symmetric: a changing B curls E (Faraday) and a changing E curls B (Ampere-Maxwell). Take the curl of Faraday's law, substitute the Ampere-Maxwell law, and use the vector identity ∇ × (∇ × E) = ∇(∇ · E) − ∇²E with ∇ · E = 0. The result is:
∇²E = μ₀ε₀ ∂²E/∂t²
That is the wave equation. Its general solution is a disturbance moving at speed v where 1/v² = μ₀ε₀. The same steps give an identical equation for B. The two fields are perpendicular to each other and to the direction of travel, which is why light can be polarised.
Without the displacement current, the second half of the loop is missing: a changing E would not make B, and nothing would propagate. That is the sense in which one added term predicted radio.
How do you get the speed of light from the vacuum constants?
This is the calculation Maxwell made in the early 1860s with the electrical measurements of his day. MacTutor records that around 1862 he found the propagation speed was approximately the speed of light and proposed that light is an electromagnetic phenomenon. His conclusion, in his words, was that "light consists in the transverse undulations of the same medium" that causes electric and magnetic effects.
Worked example 2: c from CODATA 2022
The NIST CODATA 2022 recommended values are:
| Constant | Symbol | CODATA 2022 value | Relative standard uncertainty |
|---|---|---|---|
| Speed of light in vacuum | c | 299 792 458 m/s | exact |
| Vacuum magnetic permeability | μ₀ | 1.256 637 061 27(20) × 10⁻⁶ N/A² | 1.6 × 10⁻¹⁰ |
| Vacuum electric permittivity | ε₀ | 8.854 187 8188(14) × 10⁻¹² F/m | 1.6 × 10⁻¹⁰ |
Step by step:
- Multiply: μ₀ε₀ = 1.256 637 061 27 × 10⁻⁶ × 8.854 187 8188 × 10⁻¹² = 1.112 650 056 05 × 10⁻¹⁷ s²/m².
- Take the square root: √(1.112 650 056 05 × 10⁻¹⁷) = 3.335 640 952 × 10⁻⁹ s/m.
- Invert: 1 / 3.335 640 952 × 10⁻⁹ = 299 792 458.0 m/s.
The computed value agrees with the exact speed of light to about 0.0002 m/s in floating point. Units check: N/A² times F/m reduces to s²/m², so the square root of the reciprocal is metres per second.
Why μ₀ is no longer exactly 4π × 10⁻⁷
Before the 2018 SI revision, the ampere was defined through the force between two parallel wires, which fixed μ₀ at exactly 4π × 10⁻⁷ N/A² (1.256 637 0614... × 10⁻⁶). The speed of light was already exact by definition of the metre, so ε₀ = 1/(μ₀c²) was exact too.
The revised SI, voted by the 26th General Conference on Weights and Measures in November 2018, instead fixes seven defining constants, including c = 299 792 458 m/s, the Planck constant h = 6.626 070 15 × 10⁻³⁴ J s and the elementary charge e = 1.602 176 634 × 10⁻¹⁹ C. With e and h fixed, μ₀ becomes a measured quantity tied to the fine structure constant, which is why NIST now lists it with an uncertainty. The CODATA 2022 value divided by 4π × 10⁻⁷ is 0.999 999 999 87: the old exact value is off by about one part in ten billion. Engineers can keep using 4π × 10⁻⁷. Metrologists cannot.
Because c is exact and μ₀ and ε₀ are measured with correlated uncertainties, the product μ₀ε₀ is always exactly 1/c². What changed in 2018 is which number carries the uncertainty, not the physics.
Worked example 3: the impedance of free space
The same two constants give the ratio of the electric to the magnetic field strength in a plane wave in vacuum, the characteristic impedance of free space:
- Z₀ = √(μ₀/ε₀) = √(1.256 637 061 27 × 10⁻⁶ / 8.854 187 8188 × 10⁻¹²) ≈ 376.730 Ω.
- Equivalently Z₀ = μ₀c = 1.256 637 061 27 × 10⁻⁶ × 299 792 458 ≈ 376.730 Ω.
A plane wave with an electric field of 1 V/m therefore has a magnetic field of 1/376.73 A/m. The simulation later in this post prints the same 376.73 Ω.
What are the integral and differential forms, and how do you read divergence and curl?
Both forms say the same thing; they are linked by two theorems from vector calculus. If calculus is rusty, our calculus explainer covers derivatives and integrals from the ground up.
Divergence: how much a field spreads out of a point
Divergence, written ∇ · F, measures net outflow per unit volume at a point. Picture a tiny box around the point and count the field flowing out minus the field flowing in, divided by the box volume, as the box shrinks. Positive divergence means a source, negative means a sink, zero means whatever flows in flows out.
- ∇ · E = ρ/ε₀ says electric charge is the source of electric field.
- ∇ · B = 0 says the magnetic field has no sources anywhere.
Curl: how much a field circulates around a point
Curl, written ∇ × F, measures circulation per unit area. Picture a tiny paddle wheel placed in the field; if it spins, the field has curl at that point, and the axis of spin gives the direction. Curl is a vector.
- ∇ × E = −∂B/∂t says a changing magnetic field makes the electric field circulate.
- ∇ × B = μ₀J + μ₀ε₀ ∂E/∂t says current and changing electric field make the magnetic field circulate.
A static electric field from charges has no curl: if you walk around any closed loop, you end where you started in voltage. That is why "voltage" makes sense in a battery circuit. The moment a magnetic field changes, that stops being true, and the voltage between two points depends on the path you take. Every induction effect lives in that sentence.
The two theorems that convert between forms
- The divergence theorem (Gauss's theorem) says the integral of the divergence over a volume equals the total flux out through its closed surface. Apply it to ∇ · E = ρ/ε₀ and you get the integral form of Gauss's law.
- Stokes' theorem says the integral of the curl over a surface equals the circulation around its edge. Apply it to Faraday's law and you get the voltage around a loop equals minus the rate of change of flux through it.
Worked example 4: Faraday's law in a coil and a generator
A coil of N = 100 turns, each with area A = 0.01 m², sits in a magnetic field that falls uniformly from 0.5 T to zero in 0.1 s.
- Rate of change of flux per turn: A × dB/dt = 0.01 × (0.5/0.1) = 0.05 Wb/s.
- Induced voltage: N × 0.05 = 5 V for the 0.1 s the field is changing, and zero after.
Now rotate the same coil at 50 revolutions per second in a steady 0.5 T field. The flux through it is NBA cos(ωt) with ω = 2π × 50, so the induced voltage is NBAω sin(ωt), with a peak of 100 × 0.5 × 0.01 × 314.16 ≈ 157 V. That is how a power station generator works, scaled up in turns, field and area; and a transformer is the same law with a changing current in one coil supplying the changing flux in the other.
How did Hertz confirm the waves, and how did that lead to radio?
Maxwell died in 1879 without seeing his waves detected. The proof came from Heinrich Hertz at the Technische Hochschule in Karlsruhe.
Hertz's apparatus
The Karlsruhe Institute of Technology (KIT) describes the setup: a spark gap transmitter in an oscillating dipole and, as receiver, a slotted wire ring in which Hertz saw sparks whenever the transmitter sparked. The IEEE Milestone documentation adds detail: a dipole loaded with two zinc sheet spheres 30 cm across, excited by a spark discharge at the centre, and a loop antenna with a small gap as the receiver.
In plain words: the spark makes charge slosh back and forth across the dipole very fast. Accelerating charges radiate (that is in the equations), so the dipole emits waves. A few metres away the waves induce a voltage around the receiving loop (Faraday's law), large enough to jump the receiver's tiny gap as a visible spark.
What he showed
According to KIT, propagation of an electromagnetic wave was observed for the first time on 11 November 1886. In later experiments with mirrors and standing waves, Hertz showed he was generating waves 30 to 100 cm long. The IEEE Milestone citation, dedicated in Karlsruhe in 2014, says he observed reflection, refraction and polarisation of the waves and showed their speed equals the speed of light. KIT dates his presentation to the Royal Prussian Academy in Berlin to 13 December 1888.
A small source disagreement is worth noting. The IEEE citation describes a "450 MHz transmitter and receiver", which corresponds to a wavelength of about 67 cm. KIT's 30 to 100 cm range corresponds to roughly 1,000 to 300 MHz. Both fit; Hertz used several setups, and the single number on the plaque is one of them.
From laboratory to telegraph
MacTutor records Hertz's view that his waves would have no practical application. Within a decade they had one. The Nobel Prize biography of Guglielmo Marconi says that in 1895 he sent wireless signals about one and a half miles at his father's estate at Pontecchio. In 1896 he took his apparatus to England and was granted the world's first patent for a system of wireless telegraphy. In 1900 he patented "tuned or syntonic telegraphy" (patent No. 7777), which let several transmitters share the air by using different frequencies, the ancestor of every channel plan since. In December 1901 he sent the first wireless signals across the Atlantic from Poldhu in Cornwall. The 1909 Nobel Prize in Physics went jointly to Marconi and Karl Ferdinand Braun "in recognition of their contributions to the development of wireless telegraphy".
NASA's electromagnetic spectrum material makes the naming point: the unit of frequency, one cycle per second, is the hertz, in Hertz's honour.
How do antennas, Wi-Fi channels and fiber follow from the equations?
Three facts from Maxwell's equations do most of the engineering work:
- Accelerating charge radiates. An alternating current in a conductor emits waves at the same frequency.
- Waves in vacuum travel at c, so wavelength is λ = c/f. Antenna size, channel spacing and free space loss all scale with λ.
- At a boundary between materials, the field components along the boundary must match. That gives Snell's law, reflection and total internal reflection, which is what keeps light inside a fiber.
Antennas: why their size tracks the wavelength
An antenna is a conductor shaped so that the current on it resonates at the frequency you care about. The classic half wave dipole is two rods with a total length about λ/2; a monopole over a ground plane needs about λ/4. Real antennas are cut a few per cent shorter than the free space value because the current does not reach the very ends and nearby plastic and circuit board slow the wave, so treat the numbers below as starting points.
Worked example 5: Wi-Fi wavelengths and antenna lengths
Wi-Fi channel numbers map to centre frequencies with simple formulas. The Linux kernel implements them in ieee80211_channel_to_freq_khz() in net/wireless/util.c: in the 2.4 GHz band, channel n is at 2407 + 5n MHz (channel 14 is a special case at 2484 MHz); in the 5 GHz band, 5000 + 5n MHz; in the 6 GHz band, 5950 + 5n MHz (with channel 2 at 5935 MHz).
| Band and channel | Centre frequency | Wavelength λ = c/f | Quarter wave (λ/4) | Half wave (λ/2) |
|---|---|---|---|---|
| 2.4 GHz, channel 1 | 2,412 MHz | 12.43 cm | 3.11 cm | 6.21 cm |
| 2.4 GHz, channel 6 | 2,437 MHz | 12.30 cm | 3.08 cm | 6.15 cm |
| 2.4 GHz, channel 11 | 2,462 MHz | 12.18 cm | 3.04 cm | 6.09 cm |
| 5 GHz, channel 36 | 5,180 MHz | 5.79 cm | 1.45 cm | 2.89 cm |
| 6 GHz, channel 1 | 5,955 MHz | 5.03 cm | 1.26 cm | 2.52 cm |
| 6 GHz, channel 233 | 7,115 MHz | 4.21 cm | 1.05 cm | 2.11 cm |
| Hertz, per IEEE citation | 450 MHz | 66.6 cm | 16.7 cm | 33.3 cm |
Calculation for channel 6: λ = 299,792,458 / 2,437,000,000 = 0.12302 m. A quarter of that is 3.08 cm, which is why a 2.4 GHz antenna fits inside a laptop lid hinge.
Worked example 6: why 5 GHz and 6 GHz reach less far
In free space, the power from a transmitter spreads over a sphere, so power density falls as 1/r². For two ideal antennas, the free space path loss in decibels is 20 log₁₀(4πd/λ). Because an antenna's effective capture area scales with λ², a shorter wavelength collects less of the spreading energy.
| Distance | Loss at 2,437 MHz (λ = 12.30 cm) | Loss at 5,180 MHz (λ = 5.79 cm) | Difference |
|---|---|---|---|
| 1 m | 40.2 dB | 46.7 dB | 6.5 dB |
| 10 m | 60.2 dB | 66.7 dB | 6.5 dB |
| 30 m | 69.7 dB | 76.3 dB | 6.5 dB |
At 10 m and 2,437 MHz: 4π × 10 / 0.12302 = 1,021.5, and 20 log₁₀(1,021.5) = 60.2 dB. The difference between bands is the same at every distance, 20 log₁₀(5180/2437) ≈ 6.5 dB, before walls are counted. Walls make it worse, because absorption in most building materials also grows with frequency. That is the physics behind the rule of thumb that 2.4 GHz goes further and 5 or 6 GHz goes faster: the higher bands have far more spectrum, so wider channels fit, but the signal fades sooner.
Wi-Fi channels: Maxwell's equations meet the regulator
The equations say any frequency can carry a wave. Law decides which ones you may use. In the United States, 47 CFR § 15.247 covers unlicensed operation in 902 to 928 MHz, 2400 to 2483.5 MHz and 5725 to 5850 MHz. That 83.5 MHz at 2.4 GHz is why the band is crowded: channels are spaced 5 MHz apart but a basic Wi-Fi channel is 20 MHz wide, so with the 2407 + 5n formula below, only channels 1, 6 and 11 (centres at 2412, 2437 and 2462 MHz) sit 25 MHz apart and avoid overlapping each other inside the US band.
On 23 April 2020 the FCC adopted a Report and Order (FCC-20-51) setting rules for unlicensed standard power and low power indoor devices across 5.925 to 7.125 GHz, the band Wi-Fi 6E and Wi-Fi 7 use. That is 1,200 MHz of new spectrum, enough for several 320 MHz channels. For how each Wi-Fi generation used these bands, see our guide to Wi-Fi generations from 802.11b to Wi-Fi 7 and Wi-Fi 8.
Fiber optics: total internal reflection and Kao's insight
A glass fiber guides light, which is an electromagnetic wave at roughly 200 THz instead of a few GHz. The physics is the same set of equations, now applied at the boundary between two glasses.
Snell's law and the critical angle
When light crosses from a material with refractive index n₁ into one with lower index n₂, it bends away from the normal: n₁ sin θ₁ = n₂ sin θ₂. Snell's law can be derived from Maxwell's equations by requiring the tangential components of E and H to be continuous across the boundary. As θ₁ grows, θ₂ reaches 90 degrees at the critical angle θc = arcsin(n₂/n₁). Beyond it, no light is transmitted; all of it reflects. That is total internal reflection.
A fiber has a core with slightly higher index than the surrounding cladding. The 2009 Nobel advanced information describes the arrangement and its history: Colladon demonstrated light guided in a water jet, Babinet extended the idea to bent glass rods, and adding a cladding was what made glass fibers practical, by enabling total internal reflection at a clean internal boundary.
Worked example 7: critical angle, acceptance angle and latency
Take illustrative values typical of telecom fiber: core n₁ = 1.4500, cladding n₂ = 1.4440.
- Critical angle at the core and cladding boundary: arcsin(1.4440/1.4500) = arcsin(0.99586) ≈ 84.8 degrees from the normal. Light must hit the boundary at a grazing angle, within about 5.2 degrees of parallel to the axis.
- Numerical aperture: NA = √(n₁² − n₂²) = √(2.10250 − 2.08514) ≈ 0.132.
- Acceptance half angle in air: arcsin(0.132) ≈ 7.6 degrees. Light entering the end of the fiber at a wider angle leaks out of the core. Light in glass travels at c/n. With an effective index of about 1.468, that is 299,792,458 / 1.468 ≈ 2.04 × 10⁸ m/s, or about 4.9 microseconds per kilometre. A 6,000 km undersea path therefore costs about 29 ms one way in propagation alone, before any equipment delay. No protocol can beat that number; it comes straight from ε and μ of the glass.
Worked example 8: decibels, attenuation and Kao's threshold
Fiber loss is quoted in decibels per kilometre. The fraction of power left after L km at α dB/km is 10^(−αL/10).
- Early fiber. The Nobel advanced information says the first optical fibers typically lost about 1000 dB/km. Over 20 m that is 20 dB, leaving 1 per cent of the light. Useless for communication.
- Kao's threshold. Kao and Hockham set 20 dB/km as the threshold for viable optical communication, given the laser power and detector sensitivity of the day. One kilometre at 20 dB/km also leaves 1 per cent.
- Today. The same document says attenuation at 1.55 µm is now below 0.2 dB/km. A 100 km span at 0.2 dB/km loses 20 dB, again leaving 1 per cent, now after 100 km instead of 20 m.
That is a five thousand fold improvement in reach for the same 1 per cent, and it came from chemistry (removing iron and other impurities from glass), guided by Kao's analysis of where the losses actually came from. The Nobel press release states the 1960s contrast plainly: purer glass could carry signals over 100 kilometres, compared with about 20 metres for fibers then available. The first ultrapure fiber arrived four years after Kao's 1966 work, from a Corning Glass Works team in 1970.
Why 1.55 µm? Its frequency is 299,792,458 / 1.55 × 10⁻⁶ ≈ 193.4 THz. The advanced information explains that on the short wavelength side silica loss is dominated by Rayleigh scattering, and on the long side by infrared absorption, leaving the low loss windows used for communication around 1.3 and 1.55 µm.
Radio, Wi-Fi and fiber compared
| Property | AM and FM broadcast radio | Wi-Fi | Telecom fiber |
|---|---|---|---|
| Typical frequency | About 0.5 to 1.7 MHz (AM), 88 to 108 MHz (FM) | 2.4, 5 and 6 GHz bands | About 193 THz (1.55 µm) |
| Wavelength | Hundreds of metres (AM), about 3 m (FM) | About 4 to 12 cm | 1.55 µm in vacuum |
| Medium | Free space, ground wave and ionosphere | Free space and building interiors | Doped silica glass |
| Guiding mechanism | None; spreads from the antenna | None; spreads from the antenna | Total internal reflection in the core |
| Main loss | Spreading, terrain | Spreading (path loss), walls | Rayleigh scattering and absorption in glass |
| Key equation in practice | λ = c/f for antenna size | Free space path loss 20 log₁₀(4πd/λ) | Snell's law and θc = arcsin(n₂/n₁) |
| Who regulates the frequency | National radio regulators | National radio regulators (for example 47 CFR Part 15 in the US) | Nobody; the light stays inside the glass |
Step by step: compute and simulate Maxwell's equations yourself
You do not need special software to check everything above. These steps use Python 3 with no third party packages, plus standard Linux wireless tools. Nothing here changes system settings.
Step 1: compute c and Z₀ from the constants
# constants.py: speed of light and impedance of free space from CODATA 2022
import math
MU0 = 1.25663706127e-6 # N/A^2, CODATA 2022 (NIST)
EPS0 = 8.8541878188e-12 # F/m, CODATA 2022 (NIST)
C_EXACT = 299_792_458 # m/s, exact by SI definition
c = 1 / math.sqrt(MU0 * EPS0)
print(f"1/sqrt(mu0*eps0) = {c:,.4f} m/s")
print(f"difference from exact c = {c - C_EXACT:+.6f} m/s")
print(f"mu0 / (4*pi*1e-7) = {MU0 / (4 * math.pi * 1e-7):.12f}")
print(f"Z0 = sqrt(mu0/eps0) = {math.sqrt(MU0 / EPS0):.4f} ohms")
Run it with python3 constants.py. On a standard double precision build you should see c within a fraction of a millimetre per second of 299,792,458, the μ₀ ratio at 0.999999999868, and Z₀ at 376.7303 Ω.
Step 2: turn your own Wi-Fi channel into a wavelength
On Linux, the iw utility reports the frequency of the current connection. Replace wlan0 with your interface name, which iw dev lists.
# list wireless interfaces and their current channel and width
iw dev
# show the link on one interface, including "freq:"
iw dev wlan0 link
# show every frequency the driver and regulatory domain allow
iw list | grep -E "MHz \[" | head -40
Then convert the frequency the same way the kernel converts channel numbers:
# channel_wavelength.py
C = 299_792_458
def channel_to_mhz(chan: int, band: str) -> int:
# mirrors ieee80211_channel_to_freq_khz() in Linux net/wireless/util.c
if band == "2.4":
return 2484 if chan == 14 else 2407 + 5 * chan
if band == "5":
return 4000 + 5 * chan if 182 <= chan <= 196 else 5000 + 5 * chan
if band == "6":
return 5935 if chan == 2 else 5950 + 5 * chan
raise ValueError(band)
for band, chan in [("2.4", 1), ("2.4", 6), ("5", 36), ("6", 37)]:
f = channel_to_mhz(chan, band) * 1e6
lam = C / f
print(f"{band} GHz ch {chan:>3}: {f/1e6:7.0f} MHz "
f"lambda {lam*100:5.2f} cm quarter wave {lam*25:4.2f} cm")
Step 3: solve Maxwell's equations on a grid (1D FDTD)
The finite difference time domain (FDTD) method, a workhorse of electromagnetic simulation, stores E and H on interleaved grids (the Yee lattice, which Meep's documentation describes) and updates them alternately using the two curl equations. In one dimension, with a wave travelling along z, Faraday's law and the Ampere-Maxwell law reduce to:
∂Hy/∂t = −(1/μ₀) ∂Ex/∂z
∂Ex/∂t = −(1/ε₀) ∂Hy/∂z
This program launches a Gaussian pulse and times how long it takes to cross exactly one metre of simulated vacuum. It uses only the standard library and runs in about three seconds.
# fdtd1d.py: a 1D Yee (FDTD) solver for Maxwell's curl equations in vacuum.
# Pure Python, no dependencies. Run: python3 fdtd1d.py
import math
C = 299_792_458.0 # m/s, exact by definition of the metre
MU0 = 1.25663706127e-6 # N/A^2, CODATA 2022
EPS0 = 8.8541878188e-12 # F/m, CODATA 2022
N = 2000 # grid cells
dz = 1e-3 # 1 mm cells
dt = 0.5 * dz / C # Courant number 0.5 (must be <= 1 in 1D)
steps = 2500
Ex = [0.0] * N # electric field, V/m
Hy = [0.0] * N # magnetic field, A/m
ch = dt / (MU0 * dz)
ce = dt / (EPS0 * dz)
src, probe = 200, 1200 # 1000 cells (1.000 m) apart
t0, spread = 60, 15 # Gaussian pulse centre and width, in steps
trace = []
for n in range(steps):
for k in range(N - 1): # Faraday: dHy/dt = -(1/mu0) dEx/dz
Hy[k] -= ch * (Ex[k + 1] - Ex[k])
for k in range(1, N): # Ampere-Maxwell, no current: dEx/dt = -(1/eps0) dHy/dz
Ex[k] -= ce * (Hy[k] - Hy[k - 1])
Ex[src] += math.exp(-((n - t0) / spread) ** 2) # soft source
trace.append(Ex[probe])
peak_step = max(range(steps), key=lambda i: abs(trace[i]))
delay = (peak_step - t0) * dt
print(f"time step {dt:.4e} s")
print(f"pulse peak delay {delay * 1e9:.3f} ns over 1.000 m")
print(f"light in vacuum {1.0 / C * 1e9:.3f} ns over 1.000 m")
print(f"implied speed {1.0 / delay:.6e} m/s")
print(f"sqrt(mu0/eps0) {math.sqrt(MU0 / EPS0):.2f} ohms")
Output on our test machine:
time step 1.6678e-12 s
pulse peak delay 3.344 ns over 1.000 m
light in vacuum 3.336 ns over 1.000 m
implied speed 2.990448e+08 m/s
sqrt(mu0/eps0) 376.73 ohms
The pulse arrives within 0.25 per cent of the time light needs, using nothing but the two curl equations and the two constants. The small gap is real and instructive: it comes from numerical dispersion on a grid of finite cell size and from the half step offset between the E and H grids, and it shrinks as you make cells smaller. The Courant condition matters too. Set dt = 1.01 * dz / C and the fields grow without bound within a few hundred steps; the grid cannot carry information faster than one cell per time step, and a time step that demands it blows up.
Step 4: go to 2D and 3D with an open source solver
For anything realistic, such as an antenna pattern, a waveguide or a photonic chip, use a maintained solver rather than extending the toy above. Two open source examples, described from their own documentation:
- Meep is free and open source software under the GNU GPL for simulating electromagnetics with the FDTD method, scriptable from Python, Scheme or C++. Its installation guide recommends the Conda package manager and gives
conda create -n mp -c conda-forge pymeepto create an isolated environment. - openEMS is a free and open electromagnetic field solver using the FDTD method, scripted from Matlab or Octave and Python.
# create an isolated environment for Meep, per its installation guide
conda create -n mp -c conda-forge pymeep
conda activate mp
# record exactly what was installed, so results are reproducible
conda list --explicit > meep-env.lock.txt
conda env export > environment.yml
Commit the lock file next to your simulation scripts. A simulation whose result you cannot reproduce six months later, because the solver or its numerical libraries silently changed version, is a result you cannot defend.
Where do the equations stop?
Maxwell's equations are classical. They treat the field as continuous and infinitely divisible. That works superbly for radio, Wi-Fi, power grids, motors and almost all of optics, and fails in two places.
Photons and quantum electrodynamics
Light is absorbed and emitted in quanta of energy E = hf, where h is the Planck constant, fixed exactly at 6.626 070 15 × 10⁻³⁴ J s since the 2018 SI revision.
| Wave | Frequency | Photon energy |
|---|---|---|
| Wi-Fi, channel 6 | 2.437 GHz | 1.6 × 10⁻²⁴ J, about 0.00001 eV |
| Telecom fiber | 193.4 THz (1.55 µm) | About 0.80 eV |
| Green light | About 600 THz (500 nm) | About 2.48 eV |
A Wi-Fi radio emitting 0.1 W sends out roughly 6 × 10²² photons per second at 2.437 GHz; individual quanta are irrelevant, and the classical equations are exact for engineering purposes. The photoelectric effect, single photon detectors and lasers all need quantum theory.
Quantum electrodynamics (QED) is the quantum theory of light and charged matter. The 1965 Nobel Prize in Physics went jointly to Sin-Itiro Tomonaga, Julian Schwinger and Richard Feynman "for their fundamental work in quantum electrodynamics". In QED, Maxwell's equations come back as the large scale, many photon limit of the quantum theory, in the same way Newton's laws come back from relativity at low speed. Our explainer on E = mc² and what Einstein's equation really means covers the relativity side of the same story: special relativity grew directly out of the fact that Maxwell's equations give the same c for every observer.
Common misconceptions about Maxwell's equations
- "Maxwell wrote four equations." His original formulation, as MacTutor puts it, had twenty equations in twenty variables. The compact four vector form came from Heaviside and others in the following decades, as MacTutor records.
- "Displacement current is a current of displaced charges." In vacuum it is purely the rate of change of the electric field. In a dielectric part of it is polarisation of bound charges, which is where the name came from.
- "Faraday's law needs a wire." The loop can be imaginary. A changing magnetic field creates a circulating electric field everywhere, which is what lets electromagnetic waves exist in empty space.
- "The speed of light was derived from μ₀ and ε₀." Since the CGPM redefined the metre in 1983, c has been fixed by definition, and until 2018 ε₀ simply followed from the defined μ₀. Since the 2018 SI revision, c is still exact and μ₀ and ε₀ are measured. Maxwell's original agreement between electrical measurements and the speed of light was the real discovery.
- "Higher frequency Wi-Fi is blocked because the waves are weaker." Transmit power is set by regulation, not by the band. Shorter range at 5 and 6 GHz comes from the λ² dependence of antenna capture area and from higher absorption in walls, as worked example 6 shows.
- "Fiber guides light by mirrors." There is no metal. Total internal reflection at a glass to glass boundary is lossless in principle; the losses come from the glass itself.
- "Maxwell's equations are obsolete because of quantum mechanics." They are the classical limit of QED and remain the exact working tool for nearly all electrical and radio engineering.
How electromagnetic simulation software is used, and why its code is part of a supply chain
Engineers rarely solve Maxwell's equations by hand beyond worked examples like the ones above. Antenna placement in a phone, the shape of a Wi-Fi access point's radiation pattern, signal integrity on a server motherboard, the coupling of light into a photonic chip, the specific absorption rate of a handset against a head model, and the design of fiber amplifiers are all done in simulation, with FDTD, finite element and method of moments solvers. Those solvers are software projects with dependencies: numerical libraries, mesh generators, MPI implementations, file format libraries, Python runtimes and container images. They get bug fixes and security fixes like any other code, and a cluster image built months ago keeps whatever versions were current then. This is the narrow point where Safeguard is relevant. Safeguard's models are single purpose security models, and our own model benchmarks page says general purpose models outperform them on maths; Safeguard does not solve, check or speed up electromagnetic simulations. What it does is scan repositories, container images and SBOM files, match components against vulnerability databases, show which projects carry a given component and version, and use reachability analysis to rank the vulnerable code paths an application actually calls. If your simulation environment lives in a container image, safeguard scan --image <name> lists what went into it; for responding when a shared library in that stack gets an advisory, see our guide to SBOM based incident response.
Common mistakes
- Mixing up B and H. In vacuum B = μ₀H, but in magnetic materials they differ. Many textbooks write Ampere's law with H and Gauss's law with B; keep track of which one an equation uses before substituting numbers.
- Using μ₀ = 4π × 10⁻⁷ for metrology work. Fine for engineering; wrong at the tenth significant figure since the 2018 SI revision. Use the current CODATA value when it matters.
- Forgetting the minus sign in Faraday's law. It is Lenz's law, and it is why a magnet falling through a copper pipe slows down instead of speeding up.
- Using free space wavelength for an antenna on a circuit board. The board material slows the wave; trace antennas are shorter than the free space numbers in the table above.
- Breaking the Courant condition in a simulation. In 1D FDTD the time step must satisfy c Δt ≤ Δz; in 3D the limit is tighter, c Δt ≤ Δ/√3 for cubic cells of side Δ. Violations blow up rather than degrade gracefully.
- Ignoring numerical dispersion. A grid with fewer than about 10 to 20 cells per wavelength makes waves travel at the wrong speed, as the 0.25 per cent error in step 3 shows even at 1 mm cells.
- Leaving simulation environments unpinned. Without a lock file, rebuilding a solver environment can pull different numerical library versions and change results, and you will not know which version produced which figure.
- Treating a published channel table as universal. Allowed Wi-Fi channels and power limits differ by country; check the regulatory domain (
iw reg geton Linux) before planning.
FAQ
What are Maxwell's equations in simple terms?
Four laws of electricity and magnetism. Charges create electric fields; magnetic fields have no beginning or end; a changing magnetic field creates an electric field; and currents plus changing electric fields create magnetic fields. Together they predict light as a travelling electromagnetic wave.
What did Maxwell add to Ampere's law?
The displacement current, μ₀ε₀ ∂E/∂t. It makes the law consistent with conservation of charge (the charging capacitor problem) and, combined with Faraday's law, produces a wave equation whose speed is 1/√(μ₀ε₀).
How do Maxwell's equations give the speed of light?
In empty space the equations combine into the wave equation ∇²E = μ₀ε₀ ∂²E/∂t². The wave speed is 1/√(μ₀ε₀). With CODATA 2022 values, μ₀ = 1.256 637 061 27 × 10⁻⁶ N/A² and ε₀ = 8.854 187 8188 × 10⁻¹² F/m, that is 299,792,458 m/s.
What is the difference between the integral and differential forms?
The integral form relates fields over a surface or around a loop to the enclosed charge or current; it is easiest with symmetry. The differential form states the same laws at each point using divergence and curl; it is the form used for waves and computer simulation. The divergence theorem and Stokes' theorem convert between them.
Who proved electromagnetic waves exist?
Heinrich Hertz, in Karlsruhe, between 1886 and 1888. KIT dates the first observed propagation to 11 November 1886. He showed the waves reflect, refract, polarise and travel at the speed of light, and presented the results in Berlin on 13 December 1888.
How does Wi-Fi relate to Maxwell's equations?
Wi-Fi is electromagnetic radiation at about 2.4, 5 and 6 GHz, generated by oscillating currents in antennas sized to the wavelength (about 12.3 cm at channel 6). Range, antenna length and channel behaviour all follow from λ = c/f and the free space loss that the equations predict.
How does fiber optic cable use Maxwell's equations?
Fiber guides light, an electromagnetic wave, using total internal reflection at the boundary between a higher index core and a lower index cladding. Snell's law and the allowed modes in the fiber both follow from Maxwell's equations applied at that boundary.
Why is μ₀ no longer exactly 4π × 10⁻⁷?
The 2018 SI revision fixed the elementary charge and the Planck constant exactly and redefined the ampere through them. μ₀ became a measured constant; CODATA 2022 gives 1.256 637 061 27(20) × 10⁻⁶ N/A², about one part in ten billion below 4π × 10⁻⁷.
Are Maxwell's equations still correct?
Yes, as the classical theory. They are exact for practical radio, optical and power engineering. When individual photons matter, quantum electrodynamics replaces them, and Maxwell's equations reappear as its large scale limit.
Electromagnetic solvers, wireless stacks and the numerical libraries behind both are open source components that receive security fixes like anything else in your build, and a rebuilt workstation or cluster image pulls them again. The section below is our standard guidance for keeping those dependencies patched; it applies to the software around the physics, not to the equations themselves.
Fix it without waiting for upstream
Whatever the vulnerability, most of the risk sits in two gaps. The first is the time between a fix being published and that fix actually running in your production builds. The second, and worse, is the time before any fix exists at all, while a maintainer works out a patch and a release schedule. Waiting through both gaps is a habit, not a requirement. Safeguard gives teams three ways to close them.
1. Autonomous remediation: pull requests, not tickets
When a fixed version exists, Safeguard's Griffin models open a tested, policy gated pull request that moves the affected dependency to the safe version. You can run it on one repository or in bulk across every project that carries the vulnerable version. Remediation covers eight categories, including dependencies, licenses, security posture and findings. Reachability analysis ranks the vulnerable code paths your application actually calls first, so the first pull requests you merge are the ones that matter most. Autonomous remediation ships switched off, with every category set to Manual, so your team decides how much runs on its own and what still needs a human approval.
2. Gold Open Source: the safe version in seconds, free
gold.safeguard.sh is free and needs no login. Search any CVE or package to see affected and fixed versions, CVSS, EPSS, CISA KEV status and a recommended safe version, or use the "Am I affected?" checker. The same data is available through a free read API, README status badges and RSS threat feeds. The safeguard-sh/gold-scan-action GitHub Action can fail a build on a known exploited vulnerability, on any known vulnerability, or never, so a version you have just removed cannot quietly come back in next week's merge.
3. Gold Registry: start from components that are already fixed
registry.safeguard.sh provides hardened, drop in replacements for upstream packages and container images. Every Gold artifact is held continuously to zero exploitable critical or high CVEs, zero malware and a completed license check, with SLSA L3 or higher provenance, a Sigstore signature and a public evidence page you can hand to an auditor. An artifact loses its Gold badge if it regresses. Teams can point their own package directory at the registry so hardened equivalents resolve without changing how developers install anything.
When upstream has no fix yet, or will not ship one, Safeguard first works to get the fix accepted upstream. If the issue is severe or upstream will not move, Safeguard builds a fork, fixes the vulnerability there and publishes a hardened Gold build, so you are not stuck on a maintainer's release schedule. You can also request a hardened, compatibility tested build of a specific package. This fork and patch flow is in early access today, so ask which packages it covers before you plan around it.
| Your situation | What to use |
|---|---|
| A fixed version exists | Autonomous remediation opens the upgrade pull request; Gold Open Source confirms the safe version |
| You need to know today whether you are affected | Gold Open Source lookup and "Am I affected?" checker, free and without login |
| You want vulnerable versions to stop shipping | The Gold scan GitHub Action in CI, plus Safeguard policies and gates |
| Upstream has no fix yet, or will not ship one | A custom Gold request; fork and patch (early access) |
| You want to start clean on new projects | Pull hardened components and images from Gold Registry |
One honest limit: when the vulnerable code lives in a vendor appliance, a hosted service or an operating system runtime you do not build yourself, the fix still has to come from that vendor or distribution. The steps above apply to the open source dependencies and container images you build and ship, which is where most teams carry the largest and least tracked share of their exposure.
See how Safeguard would help
None of these demos do physics. They show how Safeguard handles the software around it: the Python projects, solver images and libraries your simulation and wireless code depend on.
The first demo is a real Safeguard CLI session. Asked to fix a lodash CVE, the assistant reads the finding and the advisory, asks before each command, edits package.json to lodash 4.17.21, runs npm install and npm test with approval, prints a summary and pushes nothing. The same approve each step flow fits a simulation repository where a pinned numerical library needs an upgrade and you want the regression tests (for example, the pulse timing check above) to run before anything changes.
Click through it at your own pace, or open it full screen.
The second demo sets up Safeguard's local runner on your own machine, approves it with its device code, and scans from the terminal. On a workstation or build host that produces solver images, that scan tells you which component versions actually went in, so a result can be traced to the software that produced it.
Click through it at your own pace, or open it full screen.
The third demo connects Claude to the Safeguard MCP server with OAuth and lets you choose which tools Claude can use. Once connected, you can ask which of your projects carry a particular version of a library, while keeping control over what the assistant is allowed to touch.
Click through it at your own pace, or open it full screen.
To try it on your own projects, download Safeguard or read the CLI documentation.
Quick check
Which single term did Maxwell add, and what did it make possible?
The displacement current, μ₀ε₀ ∂E/∂t, in Ampere's law. It restored conservation of charge and, together with Faraday's law, produced a wave equation with speed 1/√(μ₀ε₀), which equals the speed of light.
What is the wavelength of Wi-Fi channel 6, and roughly how long is a quarter wave antenna for it?
Channel 6 is at 2,437 MHz, so λ = 299,792,458 / 2.437 × 10⁹ ≈ 12.3 cm, and a quarter wave antenna is about 3.1 cm before practical shortening.
A fiber link loses 0.2 dB per km. What fraction of the light is left after 100 km?
1 per cent. 100 km times 0.2 dB/km is 20 dB, and 10 to the power of minus 20/10 is 0.01.
Sources
- NIST CODATA: speed of light in vacuum
- NIST CODATA 2022: vacuum magnetic permeability
- NIST CODATA 2022: vacuum electric permittivity
- BIPM: SI defining constants
- Royal Society: Maxwell, A dynamical theory of the electromagnetic field, Phil. Trans. 155 (1865) (bibliographic details confirmed through the Crossref record)
- MacTutor History of Mathematics: James Clerk Maxwell
- MacTutor History of Mathematics: Michael Faraday
- MacTutor History of Mathematics: Oliver Heaviside
- MacTutor History of Mathematics: Heinrich Hertz
- KIT press release 153/2013: Heinrich Hertz and the discovery of electromagnetic waves
- IEEE Milestone: First Generation and Experimental Proof of Electromagnetic Waves, 1886 to 1888
- Nobel Prize in Physics 1909: summary
- Nobel Prize: Guglielmo Marconi, biographical
- Nobel Prize in Physics 1965: summary
- Nobel Prize in Physics 2009: press release
- Nobel Prize in Physics 2009: advanced information (PDF)
- MIT OpenCourseWare: 8.02 Physics II, Electricity and Magnetism, Spring 2007
- NASA Science: Introduction to the electromagnetic spectrum
- NASA Science: Anatomy of an electromagnetic wave
- eCFR: 47 CFR 15.247, operation within the bands 902 to 928 MHz, 2400 to 2483.5 MHz and 5725 to 5850 MHz
- FCC: FCC opens 6 GHz band to Wi-Fi and other unlicensed uses (FCC-20-51)
- Linux kernel source: net/wireless/util.c
- Meep documentation
- Meep documentation: Installation
- openEMS
- Safeguard: Model benchmarks
Last reviewed: 23 October 2026.