# Synthetic spectra and band averages

Run `python generate.py` with numpy and matplotlib to reproduce 601 spectrum rows, 315 band rows, 96 width-sensitivity rows, metadata, validation and two original PNG/SVG/PDF figures. These are analytic synthetic spectra, not measured materials or simulated photographs.

A has a broad Gaussian dip centered at 700 nm with width parameter 70 nm: A=0.55−0.12*exp(−0.5*((lambda−700)/70)^2). B subtracts a further narrow dip of amplitude 0.20 centered at 850 nm with width parameter 8 nm. All wavelengths in these formulas are nanometres. Reflectances stay between zero and one over 400–1000 nm.

Areal mixture is alpha*A+(1−alpha)*B for alpha from zero to one in increments of 0.05. This represents unresolved adjacent patches under common lighting and geometry, not intimate mixtures, multiple scattering or a recovered abundance. Five top-hat responses cover 400–500, 500–600, 600–750, 750–900 and 900–1000 nm. Each band computes integral(E*R)/integral(E), with assigned illumination E=scale*(1+tilt*(lambda−700)/300) and tilt −0.8, 0 or +0.8. The normalization presumes a same-illumination reference. Positive scale cancels; zero scale returns null because no normalized reflectance can be recovered in darkness. It does not indicate a black surface.

Integration uses trapezoids with 0.1 nm spacing. A separate width sweep averages bands centered on 850 nm with widths 10–200 nm in 2 nm increments. The narrowing or widening of the band changes the contrast of the narrow absorption feature. Different broad-band means can arise from mixtures and illumination weighting; this is not unique material identification.

Independent checks integrate each Gaussian analytically with erf for the five broad bands under flat illumination (maximum difference 1.02e-8), halve the numerical step for every band row (maximum change 8.10e-9), and verify mixture linearity (2.23e-16), bounds, scale cancellation, dark null and monotone dilution of the feature with bandwidth. CSV endpoints retain each pure synthetic component.

These reflected-light models exclude thermal/self-emission, atmospheric transmission, detector noise, spatial registration error, calibration uncertainty and bidirectional reflectance geometry. They claim no named mineral, classification accuracy, confidence probability or medical/observational inference. Figures show calculated curves and band means, not fitted experimental data.

Scientific context: [USGS Spectral Library](https://www.usgs.gov/labs/spectroscopy-lab/usgs-spectral-library) provides actual measured reference spectra with material metadata; none are used here. [NASA Landsat spectral bands](https://science.nasa.gov/mission/landsat/spectral-bands-and-applications/) illustrates instrument band selection; the top-hat bands here are hypothetical and do not represent Landsat responses. Chapter source review verifies these contextual distinctions.

Independent review of the separate narrow-width sweep found maximum analytical discrepancy2.1422e-6 in dimensionless reflectance. The1.02e-8 figure above does not bound that sweep; these are quadrature discrepancies, not physical uncertainty.
