- #1

- 263

- 0

I have seen several papers indicating that A magnetic field can be considered a time delayed electric field; So, I began attempting order of magnitude checks on the idea to see if it could be understood in a classical reference frame with a propagation media having the non-classical speed of light issue envisioned by Einstein. I have good results, but also an unexpected result that I don't think is realistic -- and am wondering if anyone can spot an error that would explain why it is so large.

The thought/experiment:

So, as a simple problem, I wanted to compute the difference in repulsion of two electrons ~1 meter apart that are moving parallel to each other at 1 [m/s]. In essence, this is a problem of two parallel infinitely long wires carrying a current of 1/q coulomb/second each past any given point in the vicinity of the electrons.. Ideally, I have the two electron paths oriented strictly in the "y" direction and the separation of the two wire/electron paths in the "x" direction with no Z components of either one.

It's just two "wires" in a plane.

From my E&M book, the problem works out to an attractive force developing between the wires of about 5.13x10-45N when the currents are flowing in the same direction.

Essentially, since the electrons are moving (but any protons of the wires are NOT moving) -- the proton E&M field is static but the electron E&M field is not. Therefore, the electrons experience an attraction to the protons which is independent of their speed, but they feel a repulsion from each other which depends on the propagation delay of the field from where it was emitted -- to where it is received because the electrons are in motion.

For the first problem, I assumed the two electrons to be at the same "y" height vs t. eg: y1(t)=y2(t); dy/dy=1[m/s]. The result of the calculation is that the path from where the first electron emitted it's field to the place where the second one receives it is *very* slightly longer than the 1m distance between the two electrons (low velocity = no relativistic correction needed!!!).

I took the static force between two electrons at 1m to be: 2.307077129049784e-28 [N]

the speed of light to be: 299792457.999458 [m/s] (codata).

And did a calculation yielding:

t0=3.335641e-09 t=3.335641e-09 Dt=1.857925e-26 l0-1m=0.000000e+00 l-1m=5.637851e-18 Dl=5.637851e-18

(1.000000,0.000000) force=2.601392e-45 [N]

Which is of the right order of magnitude to be a magnetic force. I am not concerned about being off by less than a factor of 10x the correct value; so this result is acceptable.

IF I separate the electrons by 1meter + 1mm; the force is essentially within 1% of the previous value.

However, when I try to offset the electrons from each other in the y direction, by as little as 1mm; the force suddenly computes out to over a million times stronger than expected.

t0=3.335643e-09 t=3.335643e-06 Dt=3.332307e-06 l0-1m=4.999999e-07 l-1m=5.033411e-07 Dl=3.341204e-09

(1.000000,0.001000) force=1.541681e-36 [N]

I thought at first perhaps it was round off error; so I made sure to use a long double (C language, 128 bit floating point nr; around 32 significant digits.) and did some analysis; but I find that the results are still way too large; and when I do some analysis on the result, I come to the conclusion that (y+0.001)**2 term used in the Pythagorean theorem causes this event to happen and that it isn't purely a math-coprocessor/program issue. So, I wanted to know if others come to the same conclusion; The program written in "C" follows; I would expect that increasing the distance between electrons by 1mm (in X) would have a "BIGGER" effect on the change in force than would having the "y" distances offset by "1" mm, for the hypotenuse of a right triangle must be shorter than the sum of its two legs -- and the static force on an electron goes as "k*q1*q2 / d" between them.

Can anyone explain, reasonably, why the force is over a million times more different in the two cases?

#include <stdio.h>

static long double f = 2.307077129049784e-28; /* Force due to static repel @ 1[m] for two electrons.*/

static long double c = 299792457.999458; /* codata speed of light */

/* Compute a square root of a long double, accurately! */

long double sqroot( long double s ){

long double est=s/2.;

int i;

for(i=0; i<100; ++i){

est = (long double)0.5*(est + s/est);

}

return est;

}

/* Compute force *change* due to time lag */

long double force01( long double x, long double y ) {

long double t0,t,l0,l;

l0=sqroot( y*y + x*x ); /* Static length between electrons (simultaneous) */

t0=l0/c; /* Time to traverse static length */

/* The distance traveled at 1[m/s] in t seconds is t meters.

* Therefore, the total vertical distance traveled is y+t meters.

* since the total horizontal distance is always x [m], the hypotenuse distance is:

* is l = ( xx + (t+y)**2 )**0.5 meters.

* Since the length of the hypotenuse is also l=Ct, for speed of light;

* substituting in...

* tC=(xx + (t+y)**2)**0.5

* ttCC = xx + (t + y)**2

* ttCC = xx + tt + 2ty + yy

* ttCC - tt - t* 2y - ( yy + xx ) = 0

* tt(CC-1) + t*-2y - ( yy + xx ) = 0 ;; for h=0, t=sqrt( xx/(CC-1) )

* tt + t( -2y/(CC-1) ) - (yy+xx)/(CC-1) = 0

* t = (2y/(CC-1) +- sqrt( 4yy/(CC-1)**2 + 4(xx+yy)/(CC-1) ))/2.

* t = y/(CC-1) +- (y/(CC-1))*sqrt( 1 + (CC-1)(1+xx/yy) )

*/

if (!y) t=sqroot( x*x/(c*c-1.) ); /* Prevent divide by zero error */

else t = (x/(c*c-1.))*( 1. + sqroot( 1. + (c*c-1)*(1.+(x*x)/(y*y)) ) );

l = sqroot( x*x + (t+y)*(t+y) ); // More accurate than l=t*c for some reason.... but can use either.

printf( "t0=%e t=%e Dt=%e l0-1m=%e l-1m=%e Dl=%e\n",

(double)t0, (double)t, (double)(t-t0),

(double)(l0-1.), (double)(l-1.), (double)(l-l0) );

return f * (1.0/(l0*l0) - 1.0/(l*l) );

}

/* Take 1 electron on each "wire" 1 meter apart, moving at 1meter/second.

* That means that through 1 meter of wire a single electron flowed (1/q coloumb)

* in one second. That can be used to compute the effective force between two

* such wires. Adjusting for relativity, the length change may be used to

* convert an electrostatic force into a magnetic one; eg: the difference in

* electrostatic force due to motion, is a ficticious "magnetic" force.

*/

int main(void) {

long double x=1.0;

long double y=0.001;

long double fi = 5.1339389934080655e-45; /* Expected Force due to current */

// Calculate and print results....

printf( "(%f,%f) force=%e [N]\n", (double)x, (double)y, (double)(force01( x,y )) );

return 0;

}

The thought/experiment:

So, as a simple problem, I wanted to compute the difference in repulsion of two electrons ~1 meter apart that are moving parallel to each other at 1 [m/s]. In essence, this is a problem of two parallel infinitely long wires carrying a current of 1/q coulomb/second each past any given point in the vicinity of the electrons.. Ideally, I have the two electron paths oriented strictly in the "y" direction and the separation of the two wire/electron paths in the "x" direction with no Z components of either one.

It's just two "wires" in a plane.

From my E&M book, the problem works out to an attractive force developing between the wires of about 5.13x10-45N when the currents are flowing in the same direction.

Essentially, since the electrons are moving (but any protons of the wires are NOT moving) -- the proton E&M field is static but the electron E&M field is not. Therefore, the electrons experience an attraction to the protons which is independent of their speed, but they feel a repulsion from each other which depends on the propagation delay of the field from where it was emitted -- to where it is received because the electrons are in motion.

For the first problem, I assumed the two electrons to be at the same "y" height vs t. eg: y1(t)=y2(t); dy/dy=1[m/s]. The result of the calculation is that the path from where the first electron emitted it's field to the place where the second one receives it is *very* slightly longer than the 1m distance between the two electrons (low velocity = no relativistic correction needed!!!).

I took the static force between two electrons at 1m to be: 2.307077129049784e-28 [N]

the speed of light to be: 299792457.999458 [m/s] (codata).

And did a calculation yielding:

t0=3.335641e-09 t=3.335641e-09 Dt=1.857925e-26 l0-1m=0.000000e+00 l-1m=5.637851e-18 Dl=5.637851e-18

(1.000000,0.000000) force=2.601392e-45 [N]

Which is of the right order of magnitude to be a magnetic force. I am not concerned about being off by less than a factor of 10x the correct value; so this result is acceptable.

IF I separate the electrons by 1meter + 1mm; the force is essentially within 1% of the previous value.

However, when I try to offset the electrons from each other in the y direction, by as little as 1mm; the force suddenly computes out to over a million times stronger than expected.

t0=3.335643e-09 t=3.335643e-06 Dt=3.332307e-06 l0-1m=4.999999e-07 l-1m=5.033411e-07 Dl=3.341204e-09

(1.000000,0.001000) force=1.541681e-36 [N]

I thought at first perhaps it was round off error; so I made sure to use a long double (C language, 128 bit floating point nr; around 32 significant digits.) and did some analysis; but I find that the results are still way too large; and when I do some analysis on the result, I come to the conclusion that (y+0.001)**2 term used in the Pythagorean theorem causes this event to happen and that it isn't purely a math-coprocessor/program issue. So, I wanted to know if others come to the same conclusion; The program written in "C" follows; I would expect that increasing the distance between electrons by 1mm (in X) would have a "BIGGER" effect on the change in force than would having the "y" distances offset by "1" mm, for the hypotenuse of a right triangle must be shorter than the sum of its two legs -- and the static force on an electron goes as "k*q1*q2 / d" between them.

Can anyone explain, reasonably, why the force is over a million times more different in the two cases?

#include <stdio.h>

static long double f = 2.307077129049784e-28; /* Force due to static repel @ 1[m] for two electrons.*/

static long double c = 299792457.999458; /* codata speed of light */

/* Compute a square root of a long double, accurately! */

long double sqroot( long double s ){

long double est=s/2.;

int i;

for(i=0; i<100; ++i){

est = (long double)0.5*(est + s/est);

}

return est;

}

/* Compute force *change* due to time lag */

long double force01( long double x, long double y ) {

long double t0,t,l0,l;

l0=sqroot( y*y + x*x ); /* Static length between electrons (simultaneous) */

t0=l0/c; /* Time to traverse static length */

/* The distance traveled at 1[m/s] in t seconds is t meters.

* Therefore, the total vertical distance traveled is y+t meters.

* since the total horizontal distance is always x [m], the hypotenuse distance is:

* is l = ( xx + (t+y)**2 )**0.5 meters.

* Since the length of the hypotenuse is also l=Ct, for speed of light;

* substituting in...

* tC=(xx + (t+y)**2)**0.5

* ttCC = xx + (t + y)**2

* ttCC = xx + tt + 2ty + yy

* ttCC - tt - t* 2y - ( yy + xx ) = 0

* tt(CC-1) + t*-2y - ( yy + xx ) = 0 ;; for h=0, t=sqrt( xx/(CC-1) )

* tt + t( -2y/(CC-1) ) - (yy+xx)/(CC-1) = 0

* t = (2y/(CC-1) +- sqrt( 4yy/(CC-1)**2 + 4(xx+yy)/(CC-1) ))/2.

* t = y/(CC-1) +- (y/(CC-1))*sqrt( 1 + (CC-1)(1+xx/yy) )

*/

if (!y) t=sqroot( x*x/(c*c-1.) ); /* Prevent divide by zero error */

else t = (x/(c*c-1.))*( 1. + sqroot( 1. + (c*c-1)*(1.+(x*x)/(y*y)) ) );

l = sqroot( x*x + (t+y)*(t+y) ); // More accurate than l=t*c for some reason.... but can use either.

printf( "t0=%e t=%e Dt=%e l0-1m=%e l-1m=%e Dl=%e\n",

(double)t0, (double)t, (double)(t-t0),

(double)(l0-1.), (double)(l-1.), (double)(l-l0) );

return f * (1.0/(l0*l0) - 1.0/(l*l) );

}

/* Take 1 electron on each "wire" 1 meter apart, moving at 1meter/second.

* That means that through 1 meter of wire a single electron flowed (1/q coloumb)

* in one second. That can be used to compute the effective force between two

* such wires. Adjusting for relativity, the length change may be used to

* convert an electrostatic force into a magnetic one; eg: the difference in

* electrostatic force due to motion, is a ficticious "magnetic" force.

*/

int main(void) {

long double x=1.0;

long double y=0.001;

long double fi = 5.1339389934080655e-45; /* Expected Force due to current */

// Calculate and print results....

printf( "(%f,%f) force=%e [N]\n", (double)x, (double)y, (double)(force01( x,y )) );

return 0;

}

Last edited: