K. On frame dragging: I'm under the impression that an external object has to be orbiting or close to the system for torque to be applied to the system (reduction or increase in angular momentum due to frame dragging).
I rewrote the code (still looking at the math side of the problem- fixed a couple angle errors which resulted in skewed values when I made a generalized function for rings with any number of objects greater than 1).
I noticed a neat mathematical property of ring acceleration increase when increasing # of bodies while using the same total mass. I restricted the mass of all bodies on the ring to 1 gram, divided between the bodies. 2 body/3 body ratio ~ 3/10; 3 body/4 body ration ~ 10/21; 4 body/5 body ratio ~21/36...
Sticks pretty close to those ratios, even with ring velocity getting really close to c. Obviously there is a mathematical explanation for 2n^2+n turning up...
fiterall is the function. usage in WxMaxima is:
fiterall(r,v,mass,number,iter,skippy)$
r= radius of body ring
v= tangential velocity of ring in direction of rotation
mass= total mass of point bodies
number= number of point bodies
iter= # of iterations to perform the homing function** set it>300 for accuracy
skippy= number of iterations between displaying iteration number (set for >444 to avoid notifications)
**each iteration of the homing function reduces error in position
of acceleration sourcefpprec:128$fpprintprec:32$
fiterall(r,v,mass,number,iter,skippy):=[
pi:bfloat(%pi),mpb:mass/number,
c:299792458b0*100b0,
t:v/(2b0*r*pi*2b0),
array(times,number),
k:1,
for k thru (number-1) do [
i:1,angle:k*pi/number,
ss:2b0*r*sin(angle)/c,zz: r*2b0*sin(angle-ss*t)-c*s,
steppy:ss*.1b0,
for i thru iter do[zold:abs(zz),
if (zz>0b0) then [ss:ss+steppy] else [ss:ss-steppy],
zz: r*2b0*sin(angle-ss*t)-c*ss,
if (abs(zz)>zold) then steppy:steppy/2b0,
if integerp(i/skippy) then disp(sconcat(" iterations: ",(i)))],
disp(sconcat(" Time #", k, " (from perfect time): ", float(zz))),
times[k]:ss
],
acctotal[number]:0b0,
array(acc,number),
k:1,
for k thru (number-1) do [
sr:times[k]*c,
accpart:(sqrt(sr/(sr-2b0*mpb*6.67408b-14/c^2b0))
*mpb*6.67408b-14*(100b0/sr)^2b0),
acc[k]:accpart*sin(t*times[k]+(pi/2-pi/number*k)),
acctotal[number]:(number)*acc[k]+acctotal[number],
disp(sconcat (" Acceleration#",k,": ",float(accpart))),
disp(sconcat (" Tangential Acc#",k,": ",float(acc[k])))
],
disp(" "),
disp(sconcat(" angular acc: ", float(acctotal[number]))),
disp(sconcat(" ang acc per mass: ", float(acctotal[number]/(mass)))),
disp(" ")
]$