These are initial conditions for the members of the classes of orbits I have found. For each angle, I start with a guess and dyadically approximate the value of v0 c-----if previous v0 overshoots c v0 = guess+((2n-1).d0)/((2n).d0) c-----if previous v0 undershoots c v0 = guess+((2n+1).d0)/((2n).d0) c------[Figure 8](2 lobe) theta = pi/4.d0 c-----For this orbit // is an overshoot and // is an undershoot c / / c------overshoots c v0 = 27.d0/32.d0 c v0 = 183.d0/256.d0 c v0 = 365.d0/512.d0 c v0 = 729.d0/1024.d0 c v0 = 23327.d0/32768.d0 c------/overshoots v0 = 46653.d0/65536.d0 c------undershoots c v0 = 46653.d0/65536.d0 c v0 = 11663.d0/16384.d0 c v0 = 5831.d0/8192.d0 c v0 = 2915.d0/4096.d0 c v0 = 1457.d0/2048.d0 c v0 = 91.d0/128.d0 c v0 = sqrt(1.d0/2.d0) c v0 = 181.d0/256.d0 c------/undershoots c------[Six Lobe -x-] c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 7.d0*pi/15.d0 c------overshoots c v0 = 1.d0+2727.d0/8192.d0 c v0 = 1.d0+5453.d0/16384.d0 c v0 = 1.d0+341.d0/1024.d0 c v0 = 1.d0+171.d0/512.d0 c v0 = 1.d0+10905.d0/32768.d0 c------/overshoots v0 = 1.d0+21809.d0/65536.d0 c------undershoots c v0 = 1.d0+1363.d0/4096.d0 c v0 = 1.d0+681.d0/2048.d0 c v0 = 4.d0/3.d0 c------/undershoots dt .0075 numpoints 6000 c------[Six Lobe -X-] c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 10.d0*pi/21.d0 c------overshoots c v0 = 2.d0 c v0 = 1.d0+(1.d0)/(2.d0) c v0 = 1.d0+(3.d0)/(8.d0) c v0 = 1.d0+(5.d0)/(16.d0) c v0 = 1.d0+(19.d0)/(64.d0) c v0 = 1.d0+(37.d0)/(128.d0) c v0 = 1.d0+(73.d0)/(256.d0) c v0 = 1.d0+(145.d0)/(512.d0) c v0 = 1.d0+(289.d0)/(1024.d0) c v0 = 1.d0+(4623.d0)/(16384.d0) c------/overshoots v0 = 1.d0+(18491.d0)/(65536.d0) c v0 = 84027/65536; c------undershoots c v0 = 1.d0+(9245.d0)/(32768.d0) c v0 = 1.d0+(2311.d0)/(8192.d0) c v0 = 1.d0+(1155.d0)/(4096.d0) c v0 = 1.d0+(577.d0)/(2048.d0) c v0 = 1.d0+(9.d0)/(32.d0) c v0 = 1.d0+(1.d0)/(4.d0) c v0 = 1.d0 c------/undershoots //[Six Lobe -X-] theta = 10.d0*pi/21.d0 v0 = 1.0+(18491.0)/(65536.0) 10 lobe orbit If you use too big of a time step for this orbit, it will drift vertically. I got the same value for the initial velocity using two separate dyadic approximations. That is 1.3 + 2713/163840 is the same as 1 + 10373/32768 which both are 43141/32768 Therefore this orbit *may* have a RATIONAL initial velocity, which to me is quite surprising. The only way to be sure is to prove that it is a solution to the differential equation. The only problem there is finding a suitable form of this solution. I have checked with a very small step size (about 1/1000th the length I normally use) and the lines still seem to be within the margins of error of the program. theta = 52.d0*pi/105.d0 c v0 = 1.325d0 c v0 = 1.3125d0 c v0 = 1.31875d0 c v0 = 1.3d0+(3.d0)/(160.d0) c v0 = 1.3d0+(5.d0)/(320.d0) c v0 = 1.3d0+(11.d0)/(640.d0) c v0 = 1.3d0+(21.d0)/(1280.d0) c v0 = 1.3d0+(43.d0)/(2560.d0) c v0 = 1.3d0+(85.d0)/(5120.d0) c v0 = 1.3d0+(169.d0)/(10240.d0) c v0 = 1.3d0+(339.d0)/(20480.d0) c v0 = 1.3d0+(679.d0)/(40960.d0) c v0 = 1.3d0+(1357.d0)/(81920.d0) v0 = 1.3d0+(2713.d0)/(163840.d0) c------[Ten Lobe ->X<-] c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 52.d0*pi/105.d0 c------overshoots c v0 = 1.d0 + (1.d0)/(2.d0) c v0 = 1.d0 + (3.d0)/(8.d0) c v0 = 1.d0 + (11.d0)/(32.d0) c v0 = 1.d0 + (21.d0)/(64.d0) c v0 = 1.d0 + (41.d0)/(128.d0) c v0 = 1.d0 + (163.d0)/(512.d0) c v0 = 1.d0 + (325.d0)/(1024.d0) c v0 = 1.d0 + (649.d0)/(2048.d0) c v0 = 1.d0 + (1297.d0)/(4096.d0) c v0 = 1.d0 + (5187.d0)/(16384.d0) c v0 = 1.d0 + (10373.d0)/(32768.d0) c------/overshoots c------undershoots c v0 = 1.d0 + (41491.d0)/(131072.d0) c v0 = 1.d0 + (20745.d0)/(65536.d0) c v0 = 1.d0 + (2593.d0)/(8192.d0) c v0 = 1.d0 + (81.d0)/(256.d0) c v0 = 1.d0 + (9.d0)/(32.d0) c v0 = 1.d0 + (5.d0)/(16.d0) c v0 = 1.d0 + (1.d0)/(4.d0) c v0 = 1.d0 c------/undershoots c------[Fourteen Lobe Orbit ->)][(<-] c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 472.d0*pi/945.d0 c------overshoots c v0 = 2.d0 c v0 = 1.d0+(1.d0)/(2.d0) c v0 = 1.d0+(3.d0)/(8.d0) c v0 = 1.d0+(5.d0)/(16.d0) c v0 = 1.d0+(39.d0)/(128.d0) c v0 = 1.d0+(155.d0)/(512.d0) c v0 = 1.d0+(1239.d0)/(4096.d0) c v0 = 1.d0+(2477.d0)/(8192.d0) c v0 = 1.d0+(4953.d0)/(16384.d0) c------/overshoots v0 = 1.d0+(19811.d0)/(65536.d0) c------undershoots c v0 = 1.d0+(9905.d0)/(32768.d0) c v0 = 1.d0+(619.d0)/(2048.d0) c v0 = 1.d0+(309.d0)/(1024.d0) c v0 = 1.d0+(77.d0)/(256.d0) c v0 = 1.d0+(19.d0)/(64.d0) c v0 = 1.d0+(9.d0)/(32.d0) c v0 = 1.d0+(1.d0)/(4.d0) c v0 = 1.d0 c------/undershoots c------[Fourteen Lobe Orbit ->)}{(<-] c-----This orbit is interesting, it has 14 lobes just as the one above does. c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 577.d0*pi/1155.d0 c------overshoots c v0 = 1.d0 + (1.d0)/(2.d0) c v0 = 1.d0 + (3.d0)/(8.d0) c v0 = 1.d0 + (5.d0)/(16.d0) c v0 = 1.d0 + (151.d0)/(512.d0) c v0 = 1.d0 + (301.d0)/(1024.d0) c v0 = 1.d0 + (601.d0)/(2048.d0) c v0 = 1.d0 + (2403.d0)/(8192.d0) c v0 = 1.d0 + (9611.d0)/(32768.d0) c v0 = 1.d0 + (19221.d0)/(65536.d0) c v0 = 1.d0 + (38441.d0)/(131072.d0) c------/overshoots c v0 = 1.d0 + (76881.d0)/(262144.d0) c------undershoots c v0 = 1.d0 + (76881.d0)/(262144.d0) c v0 = 1.d0 + (4805.d0)/(16384.d0) c v0 = 1.d0 + (1201.d0)/(4096.d0) c v0 = 1.d0 + (75.d0)/(256.d0) c v0 = 1.d0 + (37.d0)/(128.d0) c v0 = 1.d0 + (19.d0)/(64.d0) c v0 = 1.d0 + (9.d0)/(32.d0) c v0 = 1.d0 + (1.d0)/(4.d0) c v0 = 1.d0 c------/undershoots c--other orbit shapes c------[3pi/7] c-----This orbit is close to a stable orbit, but it is very sensitive to dt c-----and the initial conditions, probably because it approaches the masses c-----so closely. theta = 3.d0*pi/7.d0 c------overshoots c v0 = 1.d0 + (1.d0)/(2.d0) c v0 = 1.d0 c v0 = (15.d0)/(16.d0) c------/overshoots v0 = (59.d0)/(64.d0) v0 = (119.d0)/(128.d0) v0 = (117.d0)/(128.d0) c------undershoots c v0 = (29.d0)/(32.d0) c v0 = (7.d0)/(8.d0) c------/undershoots c-----For this orbit // is an overshoot and // is an undershoot c / / c------[Figure 8 4pi/13] c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 4.d0*pi/13.d0 c------overshoots 1 1023/1024 4091/4096 16363/16384 130903/131072 c------/undershoots c------[36pi/89] This orbit I found (2006-10-27) after generating 2 random integers between 0 and 100 and checking if there was an orbit for this angle. The integers generated were 53 and 89, so I changed the fraction so that it was pointing into the first quadrant (36pi/89). I then, rather quickly, found this solution. Is there a closed orbit for all rational multiples of 2pi? I think so. c-----For this orbit // is an overshoot and // is an undershoot c / / theta = 36.d0*pi/89.d0 c------overshoots c v0 = 1.d0 + (1.d0)/(4.d0) c v0 = 1.d0 + (3.d0)/(16.d0) c v0 = 1.d0 + (1.d0)/(8.d0) c v0 = 1.d0 + (15.d0)/(128.d0) c v0 = 1.d0 + (29.d0)/(256.d0) c v0 = 1.d0 + (57.d0)/(512.d0) c------/overshoots v0 = 1.d0 + (14463.d0)/(131072.d0) c v0 = 145535/131072; c dt = .0001; c numpoints = 150000; c------undershoots c v0 = 1.d0 + (7231.d0)/(65536.d0) c v0 = 1.d0 + (3615.d0)/(32768.d0) c v0 = 1.d0 + (1807.d0)/(16384.d0) c v0 = 1.d0 + (903.d0)/(8192.d0) c v0 = 1.d0 + (451.d0)/(4096.d0) c v0 = 1.d0 + (225.d0)/(2048.d0) c v0 = 1.d0 + (113.d0)/(1024.d0) c v0 = 1.d0 + (7.d0)/(64.d0) c v0 = 1.d0 + (3.d0)/(32.d0) c v0 = 1.d0 + (1.d0)/(16.d0) c v0 = 1.d0 c v0 = (7.d0)/(8.d0) c v0 = (3.d0)/(4.d0) c------/undershoots //[36pi/89] theta = 36.0*pi/89.0; v0 = 1.0 + (14463.0)/(131072.0); c------[18pi/89] c-----For this orbit // is an undershoot and // is an overshoot cx / / theta = 18.d0*pi/89.d0 c dt = .00002; c numpoints = 1200000; c------overshoots c v0 = 157.d0/128.d0 c v0 = 623.d0/512.d0 c v0 = 1243.d0/1024.d0 c------/overshoots c------undershoots c v0 = 621.d0/512.d0 c v0 = 607.d0/512.d0 c v0 = 303.d0/256.d0 c v0 = 151.d0/128.d0 c v0 = 150.d0/128.d0 c------/undershoots c------[Conductor Orbit] theta = pi/7.d0 c-----For this orbit // is an overshoot and // is an undershoot c / / c------overshoots c v0 = 1.d0 + (25.d0)/(512.d0) c v0 = 1.d0 + (47.d0)/(1024.d0) c v0 = 1.d0 + (187.d0)/(4096.d0) c v0 = 1.d0 + (747.d0)/(16384.d0) c v0 = 1.d0 + (747.d0)/(16384.d0) c------/overshoots v0 = 1.d0 + (2987.d0)/(65536.d0) c------undershoots c v0 = 1.d0 + (1493.d0)/(32768.d0) c v0 = 1.d0 + (373.d0)/(8192.d0) c v0 = 1.d0 + (93.d0)/(2048.d0) c v0 = 1.045d0 c v0 = 1.d0 + (23.d0)/(512.d0) c v0 = 1.d0 + (21.d0)/(512.d0) c------/undershoots c------[Flower Orbit] theta = 1.d0*pi/5.d0 c------overshoots c v0 = 1.d0 + (1.d0)/(2.d0) c v0 = 1.d0 + (1.d0)/(4.d0) c v0 = dsqrt(dsqrt(2.d0)) c v0 = 1.d0 + (3.d0)/(16.d0) c------/overshoots v0 = 1.d0 + (23.d0)/(128.d0) c------undershoots c v0 = 1.d0 + (11.d0)/(64.d0) c v0 = 1.d0 + (1.d0)/(8.d0) c v0 = 1.d0 c------/undershoots c-----For this orbit // is an overshoot and // is an undershoot c / / c------[Flower Orbit] theta = 4.d0*pi/17.d0 c------overshoots c v0 = (17.d0)/(16.d0) c v0 = (33.d0)/(32.d0) c v0 = (131.d0)/(128.d0) c v0 = (263.d0)/(256.d0) c v0 = (2103.d0)/(2048.d0) c v0 = (16823.d0)/(16384.d0) c v0 = (8411.d0)/(8192.d0) c------/overshoots c v0 = (33643.d0)/(32768.d0) c------undershoots c v0 = (16823.d0)/(16384.d0) c------/undershoots c-----For this orbit // is an overshoot and // is an undershoot c / / c------[2pi/5] c theta = 2.d0*pi/5.d0 c------overshoots c v0 = (17.d0)/(16.d0) c v0 = (1589.d0)/(2048.d0) c v0 = (25421.d0)/(32768.d0) c------/overshoots c v0 = (50841.d0)/(65536.d0) c------undershoots c v0 = (6355.d0)/(8192.d0) c v0 = (199.d0)/(256.d0) c v0 = (99.d0)/(128.d0) c v0 = (25.d0)/(32.d0) c v0 = (13.d0)/(16.d0) c------/undershoots c 2pi/5 c 199/256 c timestep: .00001 c iterations: 1000000 c-----For this orbit // is an overshoot and // is an undershoot c / / c------[2pi/5] c theta = 2.d0*pi/5.d0 c------overshoots c v0 = (77.d0)/(64.d0) c------/overshoots c v0 = (307.d0)/(256.d0) c------undershoots c v0 = (153.d0)/(128.d0) c v0 = (19.d0)/(16.d0) c------/undershoots c 2pi/5 c 19/16 c timestep: .00001 c iterations: 1000000 c--old values c------[] c theta = pi/5.d0 c v0 = dsqrt(3.d0)/(3.d0) c v0 = 26.d0/45.d0 c v0 = dsqrt(dsqrt(2.d0)) c------[] c theta = pi/5.d0 c theta = (7.d0)*pi/(36.d0) c theta = pi/3.d0 c v0 = dsqrt(.5d0) c v0 = dsqrt(3.d0)/1.68033d0 Guesses 7/15 1 21809/65536 87345 52/105 1 20746/65536 86282 (1063) (.98782987) 472/945 1 19811/65536 85347 (935) (.989163441) 577/1155 [1 19000/65536 84536 (811) (.990498812)] unfinished orbits shape-ish theta starting point asterisk 5pi/13 43/32 six-lobe-ii 8pi/17 21/16, 673/512, 2693/2048 figure-8-iii 5pi/17 57/64 3/7 3pi/7 117/128-118/128 for fun v0 theta 7/8 5/16, 41/128