# Spring Constant from a Non-Linear Force-Extension Graph

If you have a linear force-extension graph for say a spring then the spring constant is simply the gradient of the graph. However, how would you calculate the spring constant at a particular point on a non-linear (curved) graph for say an elastic band? Let's imagine you wanted the spring constant at 4cm of extension which corresponds to a load force of 4N. Would you simply do the ratio of the force and extension (i.e. one divided by the other) so 1N/cm in this case or would you find the gradient at that point (i.e. gradient of the tangent at that point)?

• If what you want is a “spring constant” then you are out of luck for a non-linear spring, since there is no single constant slope which describes the springs behavior. As the variety of ideas presented in your first two answers illustrates, you first need to clearly define the quantity you are looking for, and then it might seem pretty obvious how to find it. As posed, your question has no correct answer, and the answers below have just jumped to conclusions regarding what you want to find. – Duncan Harris Mar 27 '19 at 3:34
• See alephzero’s comment on Bob D’s answer as well. – Duncan Harris Mar 27 '19 at 3:36

If you know how force $$F$$ varies with displacement $$x$$, $$F(x)$$, the derivative $$\frac{dF(x)}{dx}$$ will give you the function $$k(x)$$.

Hope this helps

• So I would calculate the gradient of the tangent then if k is the derivative? Why, for example, is the graph of a current vs voltage graph do you not differentiate? i.e. the resistance on this graph is found by simply dividing the voltage by the current? – user37250 Mar 26 '19 at 21:27
• The only reason you can simply divide the voltage by the current is that the relationship between V and I is a simple linear one, that is, the slope is constant and equals R. The same applies to the spring constant for a linear elastic spring. It is only because the relationship between F and x is linear that k is the slope of the curve. But your question involves a non linear relationship between F and x. Simply dividing F by x does not give you the slope of the curve. You need to take the derivative. That gives you the function for the slope. – Bob D Mar 26 '19 at 21:46
• @user37250 Nonlinear electrical circuits are often designed to work with "small" changes of current and voltage from some non-zero operating condition. The "equivalent linear resistance" equal to total voltage / total current at the "equilibrium" condition, and the so-called "dynamic resistance" equal to the slope of the V-I graph at a point, are both useful quantities. Note that unlike mechanical springs, the dynamic resistance of a nonlinear electrical circuit can be negative in some regions of the V-I graph - i.e. increasing the voltage can cause less current to flow, not more. – alephzero Mar 26 '19 at 21:52
• Thanks for the helpful comments. Bob D - sorry I meant to compare my original question to a NON-LINEAR voltage-current graph - e.g. a filament lamp. To work out the resistance on a curved IV graph for a filament lamp is just the voltage divided by the current - not the gradient of the slope. I was therefore wondering why on one curved graph you divide one number by the other and on another you take the derivative (gradient of tangent at that point)? – user37250 Mar 26 '19 at 22:59
• @user37250 That's OK. My answer was based on knowing F(x) for the elastic band. You can, of course, always determine the average value of k for a range of x by calculating $\frac{\Delta F}{\Delta x}$. By the way, why was my answer down voted? – Bob D Mar 27 '19 at 5:25

I would take data for force vs. extension for several data points (e.g., 5 or 6 data points), then plot them up. When using a package such as Excel, you can often find the best equation through the data points.

Assuming that the standard curve fits are not satisfactory, it is possible to surmise the form of the equation, then use the Solver add-in to tell you the constants involved. For example, if the form of the equation is $$F=kx^n$$, where "k" is the spring constant, "x" is the spring stretch, and "n" is not equal to 1, it is possible to set this equation up such that it looks like a least-squares functional form, which Solver is very good at solving. Simply rearrange this equation such that it becomes $$(F-kx^n)^2=$$ a residual, and calculate this residual for each data point, based on assumed values of "k" and "n". Then sum all of these residuals up, and tell Solver to manipulate "k" and "n" in order to minimize the sum of residuals. It will do so, and the resulting values of "k" and "n" will be the values that minimize the sum of the residual terms, which is actually minimizing the sum of the squared error terms. This answer will be the best equation through your data.