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()