Hooke's Spring Experiment — Measuring the Spring Constant k
Goal:By hanging different masses from a spring and measuring the extension, determine the spring constant k. Here the main method is linear fitting — one measurement is not enough; you must collect several points and fit the linear trend.
The legendary teacher: Walter Lewin on Hooke's law
The same Professor Walter Lewin who demonstrated the pendulum discusses Hooke's law, springs, pendulums, and simple harmonic motion in the famous Lecture 10 of MIT's 8.01x course.
MIT 8.01x — Lect 10: Hooke's Law, Springs, Pendulums, SHM
Hooke's law says the restoring force of a spring (within the elastic range) is proportional to the extension:
F = k · x
When a mass m hangs from the spring, at equilibrium the spring force equals gravity:
k · x = m · g ⇒ x = (g / k) · m
So if we plot x against m, we get a straight line with slope g/k. Or if we plot F = mg against x, the slope is k itself. We use the second method because it has a more direct meaning.
Errors:
The ruler has a zero-point offset (maybe 0 isn't shown exactly) → the intercept in the fit ≠ 0. That's the signature of systematic error.
Reading x has limited precision (~1 mm).
The spring may not be perfectly Hookean or may have friction — points scatter off the line (random error).
1. Hanging weights
Spring unloaded
Weights
Ruler reading:
0.0 cm
Method:Click a weight, wait for the spring to settle. Read the value from the magnifier (that appears next to the spring) — reading precision is 1 mm. Then click "Record". At least 4 measurements with different masses are needed.
Note:Even without any weight you can see the ruler zero-point on the magnifier — if it doesn't read 0.0 cm without a load, the ruler isn't calibrated.
2. Measurement data
#
Mass m (g)
Force F = mg (N)
Extension x (cm)
k = F/x (N/m)
Action
No measurements yet. Collect at least 4 points with different masses.
3. Automatic calculation
To compute, record at least 3 measurements with different masses.
Rough method: from each row compute k_i = F_i/x_i and average. But if the ruler has a zero offset, this method is wrong. For a correct analysis go to the "Python analysis" section.
Points (n):0
Mean k from ratios:0
Std deviation (σ_k):0
Standard error of mean:0
Initial estimate of k:
k ≈ ? ± ? N/m
4. Analysis with Python — proper linear fit
Proper method: linear fitF = k·x + b using scipy.optimize.curve_fit (or numpy.polyfit). If intercept b comes out nonzero, that reveals the ruler zero-point offset — and the value b = -k·δ tells us how much. This is the only way to identify the systematic error from data.
Datais in trials_data: list of dicts with keys m_g, x_cm. Use the constant g = 9.81 m/s².
Pyodide not loaded — the first "Run" downloads it
Python execution output appears here
5. Reveal the true value
Hidden error analysis
True k (this spring):?
Ruler zero-point offset:?
Your k (mean method) vs true k:?
If you ran the Python fit, the slope should be close to the true k.