Skip to main content

Accuracy of Newtonian Kinetic Energy in a Relativistic World

· 4 min read
Software Engineer

One of my homework problems for my modern physics course asked me to calculate the highest velocity of a particle for which the Newtonian approximation of kinetic energy 12mv2\frac{1}{2}mv^2 is accurate to within an error of 0.5%0.5\% of the actual, relativistic, kinetic energy.

In trying to solve this problem, I decided it would be faster and easier to solve the problem numerically than it would be to work out the math. So, I hacked together a quick bisection solver (compatible with MATLAB or Octave) shown below.

%% Newtonian vs. Relativistic Energy Accuracy
% Determines the maximum speed a particle can have such that its
% kinetic energy described as 0.5*m*v^2 with an error of no greater
% than <tolerance>.
close all; clear all; clc;

% Input - The tolerance of the accuracy of the Newtonian kinetic energy
% compared to the relativistic energy.
tolerance = .005;

% Speed of light [m/s]
c = 299792458;

% Bisection parameters
maxiters = 100;
hi = c;
lo = 0;
% How accurate we are in our calculation.
% Not to be confused with tolerance of energy calculation (aka error).
TOL = .0001;

% Use bisection to determine max velocity to keep energy within
% the specified tolerance.
for i=1:maxiters
% "Guess" the velocity
v = (hi - lo) / 2 + lo;

% Calculate our energies
g = (1 - v^2/c^2)^(-1/2); % Gamma
K = 0.5*v^2; % Newtonian kinetic energy per unit mass
E = g*c^2 - c^2; % Relativistic kinetic energy per unit mass

% Calculate energy error
err = abs(K - E) / E;
fprintf('%4d: %14.4f %8.6fc %10.8f\n', i, v, v/c, err)

% Error is too big, try a lower velocity
if err > tolerance
hi = v;
% Error is within tolerance
else
% Not close enough to target value, increase velocity
if abs(err - tolerance) > TOL
lo = v;
% Error is within accepted tolerance, we're done.
else
break
end
end
end

I later went back and thought it would be interesting (or ironic) to solve for Newtonian error in kinetic energy using Newton's method. This I created a Newton's method script (compatible with MATLAB and Octave) shown below.

%% Newtonian vs. Relativistic Energy Accuracy - Using Newton's Method
% Determines the maximum speed a particle can have such that its
% kinetic energy described as 0.5*m*v^2 with an error of no greater
% than <tolerance>.
close all; clear all; clc;

% Input - The tolerance of the accuracy of the Newtonian kinetic energy
% compared to the relativistic energy.
tolerance = .005;

% Speed of light [m/s]
c = 299792458;

% Newton's method
maxiters = 1e5;
TOL = 1e-4;
guess = .5*c;

% Use Newton's method to solve
for i=1:maxiters
% "Guess" the velocity
v = guess;

% Calculate our energies
g = (1 - v^2/c^2)^(-1/2); % Gamma
K = 0.5*v^2; % Newtonian kinetic energy per unit mass
E = g*c^2 - c^2; % Relativistic kinetic energy per unit mass

% Newton's method
f = abs( (E - K) / E ) - tolerance;
df = v / E;
guess = v - f/df;

fprintf('%4d: %14.4f %14.4f %8.6fc %10.8f\n', i, guess, v, v/c, f + .005)

% If close enough, break
if abs(guess - v) < TOL
break
end
end

One quick note, in the bisection method, I have the script exiting based on the difference between the error and the target error, 0.5%. In the Newton's method script, the script exits based on the difference between velocity of consecutive iterations.

I wrote one more version of the bisection approach (here) to use the same tolerance measurement method (i.e. the error in velocity not the error in kinetic energy error). It's a bit slower, but it's also more accurate.

Both method's converge to a result of 0.81627c0.81627c. But Newton's method takes 4005 iterations, while the bisection approach takes 38 iterations (to produce an answer accurate to .0001 m/s). So, not a great example of Newton's work. I guess we'll call this a win for Einstein.