The science
F = kx; at static equilibrium mg = kx. Fit F = k̂x + b by least squares. The intercept absorbs a constant zero offset. Expected k = 12.000 N/m; g = 9.81 m/s².
Dynamics: m ẍ = mg − kx − cv − F₍friction₎. Baseline damping c = 0.35 N·s/m. Friction opposes motion and permits sticking when |mg−kx| ≤ 0.040 N. Drag changes the transient, but not ideal static equilibrium. Parallax multiplies the ruler reading by 1.04.
Uncertainty is a small-sample 68.27% (1σ-equivalent) interval: σₖ = t₆₈ × √(max(s², k̂²σₓ² + σF²) / Σ(x−x̄)²), where t₆₈ is the Student-t 68.27% half-width for n−2 degrees of freedom, including quantization variance Δ²/12. Percentage error = 100(k̂−k)/k. Systematic errors are excluded from that random uncertainty; toggle them off for the coverage test.
Assumptions: massless linear spring, vertical motion, rigid support, constant g, no spring fatigue. Total mass includes the idealized hanger; displayed ruler is extension from unloaded zero. Settled acquisition uses 20 s model time per load. A single ruler reading gives extension directly; two-length subtraction is not modeled.