Max Planck
The fields of a charged particle depend upon the particle’s position, velocity and acceleration at a previous time. (Griffiths, INTRODUCTION TO ELECTRODYNAMICS , 2nd Edition) These parameters are called the retarded position, velocity and acceleration, and depend on where the particle was at a previous time. The retarded quantities differ from the current ones by amounts that depend on the distance between the particle and the field evaluation point. An example is found in the article “Revisiting the Bohr H Atom” on the present website. In that article the proton’s force on an orbiting electron is computed and stable states (where the accelerating electron does not radiate) are calculated.
Now the program (see Appendix A) uses only Newton, Maxwell and the Lorentz force law to identify the stable states. A constant of the motion can be identified: K1=2πmrv/N, where m, r and v are electron mass, speed and the radius of its orbit in stable state N. It is found that K1=6.62607e-34. This is practically equal to Planck’s constant, h=6.626068e-34. Although no mention of h is made in the derivation of the stable state’s electron motion, it is in there in the form of a system constant! Planck, who was reportedly skeptical about his discovery, might have been more comfortable if he had known about Rutherford’s work and if he’d had access to a PC.
Appendix A. A “Creeping Up” Program.
import math
c=2.99792458e8 #Speed of light
eps0=8.85418782e-12 #Permittivity constant
q=1.60217662e-19 #Elementary charge
me=9.10938356e-31 #Electron rest mass
mp=1.6726219e-27 #Proton rest mass
re1=.529177211067e-10
ve1=q/math.sqrt(4*math.pi*eps0*me*re1)
L1=me*ve1*re1
#Any of the lowest 10 energies can be computed.
N=0
while N<=10:
N=int(input('level=?(>10 to exit) '))
if(N<11):
print('Computing level ',N)
ElectronOrbitRadius=N**2*re1 #N'th level electron orbit radius
L=N*L1
ve=q**2/(4*math.pi*eps0*N*L1)
re=N*L1/(me*ve)
taue=2*math.pi*re/ve
nue=1/taue #Orbital fequency
omega=2*math.pi*nue #Angular frequency
vp1=me*ve1/mp #total momentum=0
vp=me*ve/mp
rp1=vp1/omega
rp=vp/omega
maxN=1e8 #Maximun number of iterations in orbital computation
#DelayedTime=(re1+ProtonOrbitalRadius1)/c
DelayedTime=(re+rp)/c
dt=-DelayedTime/maxN #Time increment
loopN=-1
theta=0. #See diagram
RadReactF=q**2*omega**3*re/(6*math.pi*eps0*c**3)
RetardedProtonSpeed=vp #Proton travels at constant speed
ar=RetardedProtonSpeed**2/rp
Fy=0. #Initial trial force of proton on electron
#Find parameters when forces on electron sum to zero
while RadReactF+Fy>=0:
loopN=loopN+1
#If infinite loop, Print params and exit by clicking X in display
if loopN>maxN:
print('Possible infiite loop.')
print('loopN, RadReactF, Fy',loopN,'; ',RadReacF,', ',Fy)
print('Abort by clicking X in your display.')
input('OK?')
#If necessary, keep 'inching up’ to loop termination condition.
RetardedTime=-loopN*dt
theta=omega*RetardedTime
RetardedVelocityX=vp*math.sin(theta) #See diagram
RetardedVelocityY=vp*math.cos(theta)
RetardedAccelerationX=-(vp**2)/rp*math.cos(theta)
RetardedAccelerationY=vp**2/rp*math.sin(theta)
L=math.sqrt((re+rp)**2-(rp*math.sin(theta))**2)
alpha=math.atan(rp*math.sin(theta)/L)
Lx=-L*math.cos(alpha)
Ly=L*math.sin(alpha)
#Compute electric field at electron (see Griffith's text)
ux=c*Lx/L-RetardedVelocityX
uy=(c*Ly/L-RetardedVelocityY)
u=math.sqrt(ux**2+uy**2)
ux=-u*math.cos(alpha)
uy=u*math.sin(alpha)
Ey=q/(4*math.pi*eps0)*L/(Lx*ux+Ly*uy)**3
Ey=Ey*(uy*(c**2-RetardedProtonSpeed**2)-(Lx*(ux*RetardedAccelerationY-uy*RetardedAccelerationX)))
Fy=-q*Ey #Interactive force on electron
#When Fy+RadiationReactionForce=0, display results.
L=math.sqrt((re+rp)**2-(rp*math.sin(theta))**2) #See diagram
alpha=math.atan(rp*math.sin(theta)/L)
Lx=-L*math.cos(alpha)
Ly=L*math.sin(alpha)
K1=2*math.pi*me*re*ve/N
h=6.626068e-34 #Planck constant
print(" K1=",K1,", h=",h)
input("OK?")
#Do another level.