I calculated the sum of energy with a charged particle in a linear translation (axis X) with a circular dipole (2 charges) in rotation. I think with electrostatic charges for example and the law is like 1/d². The single particle has a mass 'm' and has a velocity 'v0' at start. A disk turns only (no translation) has an inertia 'j' and 2 charged particles are fixed on it (one positive, one negative). I calculated the energy for one turn only, it's enough but I calculated for several rounds and the energy is not the same.
The energy must be the same for one turn, why ? because the single particle don't need an energy for move far away or move closer to the disk: the disk has one charge positive and one charge negative !
But with a disk in rotation and a charge with a velocity the energy is not the same. And it's logical because the single particle accelerates/decelerates with a difference of forces but the disk accelerates/decelerates with the sum of forces.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
I give the program in python for test my results. I used the lib gmpy2 for better precision, so install it before.
import gmpy2
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from gmpy2 import mpfr
dt=mpfr("1e-4") # step time converge from 1e-4 s
pi=mpfr("3.14159265358979323846264338327950288419716939937510") # pi 50 digits
m = mpfr("1") # mass of single particle
j = mpfr("3") # inertia of disk
v0 = mpfr("1") # initial velocity of single particle
w0 = mpfr("1.2") # initial angular velocity of disk
d = mpfr("100") # distance between the single particle and the disk
r = mpfr("0.05") # radius of the disk
o0 = mpfr("0") # angular at start
k = mpfr("1") # coeficient of the force
t = mpfr("0") # the time
f1 = mpfr("0") # force from the single particle and the attractive particle on disk
f2 = mpfr("0") # force from the single particle and the repulsive particle on disk
f1x = mpfr("0") # force f1 on the axis X
f2x = mpfr("0") # force f2 on the axis X
v = mpfr("0") # the linear velocity of the single particle
a = mpfr("0") # the acceleration of the single particle
d0 = mpfr("0") # the distance at start
x = mpfr("0") # the position of the single particle
w = mpfr("0") # the angular velocity
s = mpfr("0") # the angular acceleration
o = mpfr("0") # the angle
f1r = mpfr("0") # torque
f2r = mpfr("0") # torque
l1 = mpfr("0") # the lenght between in axis x from the single particle and the attractive particle on the disk
l2 = mpfr("0") # the lenght between in axis x from the single particle and the repulsive particle on the disk
yc1 = mpfr("0") # the root of length between the single particle and the attractive particle on the disk
yc2 = mpfr("0") # the root of length between the single particle and the repulsive particle on the disk
h = mpfr("0") # the vertical distance of a particle on the disk
el = [] # list of each linear velocity of the single particle
wl = [] # list of each angular velocity of the disk
tl = [] # list of each time
with gmpy2.local_context(gmpy2.context(), precision=200) as ctx:
v=v0 # set v at V0
w=w0 # set w at w0
x=d0+d # set position of the single particle at d0+d
o=o0 # set the start angular position (not necessary)
while o < 2*pi :
h=r*( abs( gmpy2.cos(o)))
l1=x+r*(1-gmpy2.cos(o-pi/2.0))
l2=x+r*(1+gmpy2.cos(o-pi/2.0))
yc1=pow( l1 ,2 ) + pow( h ,2 )
yc2=pow( l2 ,2 ) + pow( h ,2 )
f1=k/yc1 # calculate the force from single particle to attractive particle on the disk
f2=k/yc2 # calculate the force from single particle to repulsive particle on the disk
f1x=f1*l1/gmpy2.sqrt(yc1)
f2x=f2*l2/gmpy2.sqrt(yc2)
a=(f1x-f2x)/m # calculate the linear acceleration of the single particle
v=v+a*dt # calculate the linear velocity of the single particle
x=x-( 1/2.0*a*dt*dt+v*dt )
f1r=f1*(x+r)*abs(gmpy2.cos(pi/2.0-gmpy2.acos(l1/gmpy2.sqrt(yc1)))) # the torque from single particle to attractive on disk
f2r=f2*(x+r)*abs(gmpy2.cos(pi/2.0-gmpy2.acos(l2/gmpy2.sqrt(yc2)))) # the torque from single particle to repulsive on disk
if o < pi/2.0:
s=(f1r+f2r)/j # calculate the angular acceleration
elif o >= pi/2.0 and o < pi:
s=(-f1r-f2r)/j # calculate the angular acceleration
elif o >= pi and o < 3.0*pi/2.0:
s=(-f1r-f2r)/j # calculate the angular acceleration
elif o >= 3.0*pi/2.0 and o < 2*pi:
s=(f1r+f2r)/j # calculate the angular acceleration
w=w+s*dt # calculate the angular velocity of the disk
o=o+w*dt+1/2.0*s*dt*dt # calculate the angle
el.append(1/2.0*m*v*v-1/2.0*m*v0*v0)
wl.append(1/2.0*j*w*w-1/2.0*j*w0*w0)
tl.append(t)
t=t+dt # add step time
# print various datas
print "v=",v
print "x=",x
print "w=",w
print "o=",o
print "t=",t
print "f1x=",f1x
print "f1y=",f2x
print "E at start = ",1/2.0*m*v0*v0+1/2.0*j*w0*w0 # print the energy at start
print "E at final = ",1/2.0*m*v*v+1/2.0*j*w*w # print the energy at end
# plot energies
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.set_xlabel('Time (s)')
ax1.set_ylabel('E lin (J)', color='b')
ax1.plot(tl,el,'b')
ax2.set_ylabel('E w (J)', color='r')
ax2.plot(tl,wl,'r')
plt.show()
Nice. Just not hoping you believe anything of this is over unity ;-)
Any charge, wether it is electrons or mechanical potential energy, everything is accounted for.
Vidar