RelativisticKineticEnergyTest.frink

View or download RelativisticKineticEnergyTest.frink in plain text format

/** This is a test to evaluate the numerical accuracy of the  relativistic
    kinetic energy equation, which does not work well for small velocities.

    See:
    http://www.mrelativity.net/MBriefs/Relativistic%20Escape%20Velocity%20using%20Special%20Relativity.htm

    A threshold seems to be about 0.0256 c.  Below this, the Taylor
    series is more reliable.  Above this, the naive evaluation is more
    reliable.
*/


use sqrtWayne.frink

precision = 70
//setPrecision[precision]
m0 = 1 kg
//for v = 0.000 c to 0.300 c step .00005 c
for v = 1 m/s to 100000 m/s step 1 m/s
{
   setPrecision[20]
   naive = (c^2 m0) (1/sqrt[1-v^2/c^2] - 1)
   taylor = 1. * m0 ( (v^2 / 2) + (3 v^4 / (8 c^2)) + (5 v^6 / (16 c^4)) + (35 v^8 / (128 c^6)) + (63 v^10 / (256 c^8)) + (231 v^12 / (1024 c^10)) + (429 v^14 / (2048 c^12)) + (6435 v^16 / (32768 c^14)) )

   setPrecision[precision]
   good = (c^2 m0) (1/sqrt[1-v^2/c^2, precision] - 1)
   naiveError = good-naive
   taylorError = good-taylor

   print[format[v, c, 9] + "\t" + format[naiveError, J, 3] + "\t" + format[taylorError, J, 3] + "\t"]
   if (abs[naiveError] < abs[taylorError])
      println["Naive"]
   else
      println["Taylor"]
}


View or download RelativisticKineticEnergyTest.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 18660 days, 18 hours, 27 minutes ago.