aidoesscience
aidoessciencefindings › Brewster's angle
ValidatingOracle-validated

A refractive index read off a polarization null

Shine unpolarized light on flat glass: is there an angle where the reflection vanishes for one polarization — and if so, can the glass's refractive index be read off that null alone, never measuring the light's bending?

Measured by the lab
1.49993
Known value
1.5

Units: dimensionless (refractive index n₂ of glass, air n₁ = 1)

▶ Run this simulationRead how it works

The finding

A refractive index read off a polarization null: reflection extinguishes the p-component at Brewster's angle, and n = tan θ_B recovers n = 1.4999 for glass (water → diamond) without ever telling the model n

Method

Send unpolarized light onto a flat air→glass interface (n₁=1 → n₂) and watch only the REFLECTED beam. The Fresnel equations split it by polarization: R_s = r_s², R_p = r_p² with r_s=(n₁cosθᵢ−n₂cosθₜ)/(n₁cosθᵢ+n₂cosθₜ), r_p=(n₂cosθᵢ−n₁cosθₜ)/(n₂cosθᵢ+n₁cosθₜ), and Snell sinθₜ=(n₁/n₂)sinθᵢ. The recovery samples R_p(θ) on a 0.25°-spaced grid over 30–80° with ±0.4% reading noise (deterministic LCG per seed), finds the minimum by scan + parabolic refine, and reports n = tan θ_B — the closed form θ_B = arctan(n₂/n₁) NEVER appears in the recovery path. Run across 24 seeds and six media (n₂ = 1.333 water … 2.417 diamond). Two independent locators cross-check the null: the perpendicularity condition θ_B+θₜ=90° and the peak of the degree of polarization DOP(θ)=|R_s−R_p|/(R_s+R_p). One falsification control isolates the effect as polarization, not brightness. ?world=brewster.

The law it recovers

θ_B = arctan(n₂/n₁); R_p(θ_B) = 0; n = tan θ_B; θ_B + θₜ(θ_B) = 90°

Measurements, controls & cross-checks

Recovered uncertainty

8.1000e-6

Recovered abs offset

7.0000e-5

Worst medium abs offset

0.00019

Perturbation

Media
NameN2ThetaB degRecovered n
water1.33353.1231.33298
crown glass1.556.3091.49993
flint glass1.657.9931.59991
dense flint1.759.5331.69991
n=2 medium263.4341.9999
diamond2.41767.5222.41681
Note
the recovered n tracks the input n₂ across the whole range (worst |Δn| = 1.9e-4 at diamond), so n = tan θ_B is a law, not a single lucky point — the same polarization null reads the index of any transparent medium.

Cross checks

Perpendicularity deg
90
Perpendicularity abs error
0
Dop peak deg
56.3
Dop peak vs thetaB abs deg
0.01
Note
two INDEPENDENT locators agree with the R_p null: at θ_B the reflected and refracted rays are exactly perpendicular (θ_B+θₜ=90° to machine precision) and the degree of polarization of the reflected beam peaks (→100%). The null is not an artifact of one observable.

Control polarization

Name
the null is p-specific, not the angle of least reflection
R s at thetaB pct
14.79
R unpol at thetaB pct
7.4
R unpol at normal pct
4
Note
falsification control (Carnot-style): only R_p reaches exactly zero. At θ_B the s-reflectance is still 14.8% and the UNPOLARIZED total reflectance (7.4%) is LARGER than at normal incidence (4%). So the vanishing reflection is a polarization phenomenon — the reflected beam becomes 100% s-polarized — not merely the angle of minimum reflection. This is why the recovered angle is Brewster's polarizing angle.

Seeds

24

Module honesty

Claim
BrewsterModule is fully deterministic (fixed-seed LCG 0x9e3779b9 — bit-for-bit the seed-0 member of the oracle's 24-seed ensemble; measurement runs once at init) and every on-screen number is pinned and reconciled with the oracle.
Bit pins
10 machinery values strict-===: θ_B (rad & deg), ⟂ check (float-exact 90), water θ_B, measured θ_B = 56.308610752504805°, n = 1.4999250303193572, noiseless θ_B/n, 201-sample grid (float-exact dyadic 0.25° step), discrete argmin 56.25°. The module measurement is BIT-IDENTICAL to the oracle ensemble's seed-0 recovery (two independently written transcriptions, different loop guards and findIndex predicates, same floats out).
Display pins
All 7 static HUD lines + chart label + 5 static chart-SVG pieces (axes, both Fresnel curves, θ_B marker line, ticks, legend) pinned verbatim; live headless read-back of the BUILT worktree (npx vite preview + playwright-core, channel chrome) — HUD statics 7/7 and SVG statics 5/5 byte-identical under same-serializer normalization (the DOM serializer rewrites self-closing SVG tags — micro-lesson #66), animated θᵢ/θₜ/R_s/R_p/polarization lines match the render() template with in-range values, measured line renders the pinned floats.
Systematic decomposition
The on-screen n misses known by −7.497e-5 (rel −5.0e-5), INVISIBLE at render precision (HUD shows θ_B measured '56.31°' ≡ analytic '56.31°' and n '1.500' ≡ known '1.500' — gated as display honesty). The miss is DECOMPOSED: (1) grid+parabolic-refine bias −1.2521e-3° with a CLOSED FORM — the exact 3-point vertex of the quartic Taylor model R_p ≈ a₂d²+b₃d³+c₄d⁴ about θ_B (coefficients from finite differences of the module's own r_p) predicts it to 7.0e-5 fractional, 0.42% of the a-priori quintic-remainder margin g·(h+|e|); the same algebra generalizes across 5 media (worst 0.38% of its own remainder); (2) seed-0 noise shift 6.97e-5° under a worst-case ±0.4%-perturbation bound 7.94e-4° with the discrete argmin PROVABLY unable to flip (margin 10.1×). Keystone gate: |n−known| = 7.50e-5 ≤ 1.17e-4, a bound assembled entirely a-priori (63.9% of bound). Module sits 0.59σ from the 24-seed ensemble mean.
Rival on module pipeline
The polarization-blind rival (hunt the null in R_s, or in unpolarized (R_s+R_p)/2, with the module's identical grid+argmin+refine machinery) pins to the 30° grid edge unrefined and returns n = tan 30° = 0.5773502691896257 bit-exact — off by 0.92, a 1.2e4× separation. A monotone reflectance has no interior null to find: only the p-component polarizes.
Integrity
known_value === inputs.n2 === the transcribed 1.5 and lcg_seed === base_seed are gated strict-=== , so a tampered known_value can never be vacuous; tamper self-test exits 1 both ways (known_value 1.5→1.6: five gates trip, recovery unchanged at 1.49993; n_meas pin last-digit edit verified to change the float per micro-lesson #64: M1 trips).

What it reduces to

Brewster's law (D. Brewster 1815): θ_B = arctan(n₂/n₁), a direct consequence of the Fresnel amplitude coefficients (Fresnel 1823) evaluated with Snell's law. It VALIDATES, not derives: the lab assumes the Fresnel equations for reflectance at a dielectric interface and shows the emergent, measurable p-reflectance null sits exactly at arctan(n₂/n₁), so a refractive index can be recovered as n = tan θ_B (1.4999 for glass, tracking across water→diamond) purely from where the reflection polarizes — the closed form is never used in the recovery. The physical origin (a p-oriented dipole in the medium cannot radiate along the refracted ray, which at θ_B coincides with the specular direction ⇒ the reflected & refracted rays are perpendicular) is captured by the θ_B+θₜ=90° cross-check. It does NOT derive the Fresnel coefficients from Maxwell's boundary conditions (that is electromagnetism itself). This is the POLARIZATION branch of the optics arc — the sequel to refraction (Snell), total internal reflection, the mirage, and the rainbow — the first world here where the observable is which polarization survives reflection, not where the ray goes.

Confidence & reproduction

Confidence
high
Validation
derisk-pass
Re-run the check
npm run derisk -- brewster (scripts/brewster-derisk.mjs)
Oracle
scripts/oracles/brewster.reference.json

Sources

D. Brewster, 'On the laws which regulate the polarisation of light by reflexion from transparent bodies', Phil. Trans. R. Soc. Lond. 105, 125–159 (1815). É. L. Malus (1808) — polarization by reflection. A.-J. Fresnel (1823) — the reflectance amplitude coefficients. E. Hecht, Optics (5th ed., 2017), §4.6.2. θ_B = arctan(n₂/n₁): the reflected light is fully s-polarized and the reflected & refracted rays are perpendicular. Applications: polarized sunglasses cut horizontally-polarized glare off water/roads near Brewster's angle; laser cavities use Brewster windows for zero-loss p-transmission.

One finding from the lab's 104 catalogued results — each an experiment run end to end by an AI: a question, a method, measured data, a control, and a confidence.