これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2024/12/05 07:26:42.662 (台灣標準時)
REBOUND を使うと Python で軌道積分を行うことができるので、お手軽に小惑星の軌道積分ができるよう に Python のスクリプトを書いてみたでござる。
#!/usr/pkg/bin/python3.10 # # Time-stamp: <2023/07/20 09:53:19 (CST) daisuke> # # importing argparse module import argparse # importing ssl module import ssl # importing pathlib module import pathlib # importing sys module import sys # importing datetime module import datetime # importing re module import re # importing numpy module import numpy # importing rebound module import rebound # date/time datetime_now_utc = datetime.datetime.now (tz=datetime.timezone.utc) datetime_now_utc_str = f'{datetime_now_utc.year:04d}' \ + f'-{datetime_now_utc.month:02d}' \ + f'-{datetime_now_utc.day:02d}' \ + f'_{datetime_now_utc.hour:02d}' \ + f':{datetime_now_utc.minute:02d}' \ + f':{datetime_now_utc.second:02d}' # setting for SSL ssl._create_default_https_context = ssl._create_unverified_context # constants pi = numpy.pi year = 2.0 * pi # 1 yr = 2 pi for G=1 # pattern for regular expression pattern_space = re.compile ('\s+') underscore = '_' # choices of integrator choices_integrator = [ 'ias15', 'whfast', 'BS', 'mercurius', 'saba', 'janus', 'eos', 'sei', 'tes', 'none', 'whfast512' ] # initialising a parser desc = 'backward orbital integration of asteroids' parser = argparse.ArgumentParser (description=desc) # adding arguments parser.add_argument ('-s', '--start', default='2000-01-01 12:00', \ help='start date/time (default: 2000-01-01 12:00)') parser.add_argument ('-i', '--integrator', choices=choices_integrator, \ default='mercurius', \ help='choice of integrator (default: mercurius)') parser.add_argument ('-t', '--timestep', type=float, \ default=-0.01, \ help='step size of integration in yr (default: -0.01)') parser.add_argument ('-d', '--duration', type=float, \ default=10**6, \ help='duration of integration in yr (default: 10**6)') parser.add_argument ('-n', '--noutputs', type=int, \ default=10**8, \ help='number of outputs (default: 10**8)') parser.add_argument ('-o', '--output', default='rebount.out', \ help='output file name (default: rebound.out)') parser.add_argument ('-v', '--verbose', action='store_true', \ help='verbose mode (default: off)') parser.add_argument ('asteroids', \ nargs='+', \ default='Ceres', \ help='asteroid names (default: Ceres)') # parsing arguments args = parser.parse_args () # input parameters datetime_start = args.start integrator = args.integrator timestep = args.timestep duration_yr = args.duration n_outputs = args.noutputs file_output = args.output verbose = args.verbose list_asteroids = args.asteroids # making pathlib object path_output = pathlib.Path (file_output) # existence check if (path_output.exists ()): # printing error message print (f'ERROR: file "{file_output} exists."') # exit sys.exit () # making a simulation object sim = rebound.Simulation () # adding the Sun and planets to simulation sim.add ('Sun', date=datetime_start) sim.add ('Mercury', date=datetime_start) sim.add ('Venus', date=datetime_start) sim.add ('Earth', date=datetime_start) sim.add ('Mars', date=datetime_start) sim.add ('Jupiter', date=datetime_start) sim.add ('Saturn', date=datetime_start) sim.add ('Uranus', date=datetime_start) sim.add ('Neptune', date=datetime_start) # adding asteroids to simulation for asteroid in list_asteroids: sim.add (asteroid, date=datetime_start) # time step of orbital integration # -0.01 ==> backward integration with time step of 0.01 yr sim.dt = timestep # choice of integrator sim.integrator = integrator # moving to centre of momentum frame sim.move_to_com () # pointer to particles ps = sim.particles # list for data output times times = numpy.linspace (0.0, duration_yr * year, n_outputs) # opening file for writing with open (file_output, 'w') as fh_output: # writing header to output file fh_output.write (f'#\n') fh_output.write (f'# Result of orbital integration by REBOUND\n') fh_output.write (f'#\n') fh_output.write (f'# start of simulation: {datetime_now_utc_str}\n') fh_output.write (f'#\n') fh_output.write (f'# input parameters\n') fh_output.write (f'# start date/time = {datetime_start}\n') fh_output.write (f'# integrator = {integrator}\n') fh_output.write (f'# timestep = {timestep} yr\n') fh_output.write (f'# duration_yr = {duration_yr} yr\n') fh_output.write (f'# n_outputs = {n_outputs}\n') fh_output.write (f'# file_output = {file_output}\n') fh_output.write (f'# verbose = {verbose}\n') fh_output.write (f'#\n') fh_output.write (f'# asteroids for orbital integration\n') for asteroid in list_asteroids: fh_output.write (f'# {asteroid}\n') fh_output.write (f'#\n') fh_output.write (f'# format of output data\n') fh_output.write (f'# time (in yr) from start date/time, object name,' \ + f' x, y, z, vx, vy, vz, a, e, i, Omega, omega, M\n') fh_output.write (f'#\n') # integration for i, time in enumerate (times): # integration by one timestep sim.integrate (time) # state vector and orbital elements of each asteroid for j in range (len (list_asteroids)): # time from start date/time in yr if (timestep < 0.0): time_from_start_yr = time / year * (-1.0) else: time_from_start_yr = time / year # asteroid name name = re.sub (pattern_space, underscore, list_asteroids[j]) # state vector ast_x = ps[j+9].x ast_y = ps[j+9].y ast_z = ps[j+9].z ast_vx = ps[j+9].vx ast_vy = ps[j+9].vy ast_vz = ps[j+9].vz # orbital elements ast_a = ps[j+9].a ast_e = ps[j+9].e ast_i = ps[j+9].inc ast_Omega = ps[j+9].Omega ast_omega = ps[j+9].omega ast_M = ps[j+9].M # asteroid name, time, state vector, and orbital elements result = f'{time_from_start_yr:15.6f}' \ + f' {name:16s}' \ + f' {ast_x:15.10f} {ast_y:15.10f} {ast_z:15.10f}' \ + f' {ast_vx:15.10f} {ast_vy:15.10f} {ast_vz:15.10f}' \ + f' {ast_a:15.10f} {ast_e:15.10f} {ast_i:15.10f}' \ + f' {ast_Omega:15.10f} {ast_omega:15.10f} {ast_M:15.10f}\n' # writing result into file fh_output.write (result) # printing progress if (verbose): if (i % 10000 == 0): progress_percent = i / len (times) * 100.0 print (f'progress of integration: {progress_percent:7.3f}%') # date/time datetime_now_utc = datetime.datetime.now (tz=datetime.timezone.utc) datetime_now_utc_str = f'{datetime_now_utc.year:04d}' \ + f'-{datetime_now_utc.month:02d}' \ + f'-{datetime_now_utc.day:02d}' \ + f'_{datetime_now_utc.hour:02d}' \ + f':{datetime_now_utc.minute:02d}' \ + f':{datetime_now_utc.second:02d}' fh_output.write (f'#\n') fh_output.write (f'# end of simulation : {datetime_now_utc_str}\n') fh_output.write (f'#\n')
使い方は以下の通りでござる。
% ./backint_asteroids.py -h usage: backint_asteroids.py [-h] [-s START] [-i {ias15,whfast,BS,mercurius,saba,janus,eos,sei,tes,none,whfast512}] [-t TIMESTEP] [-d DURATION] [-n NOUTPUTS] [-o OUTPUT] [-v] asteroids [asteroids ...] backward orbital integration of asteroids positional arguments: asteroids asteroid names (default: Ceres) options: -h, --help show this help message and exit -s START, --start START start date/time (default: 2000-01-01 12:00) -i {ias15,whfast,BS,mercurius,saba,janus,eos,sei,tes,none,whfast512}, --integrator {ias15,whfast,BS,mercurius,saba,janus,eos,sei,tes,none,whfast512} choice of integrator (default: mercurius) -t TIMESTEP, --timestep TIMESTEP step size of integration in yr (default: -0.01) -d DURATION, --duration DURATION duration of integration in yr (default: 10**6) -n NOUTPUTS, --noutputs NOUTPUTS number of outputs (default: 10**8) -o OUTPUT, --output OUTPUT output file name (default: rebound.out) -v, --verbose verbose mode (default: off)
小惑星 (1) Ceres を 2000 年 01 月 01 日 12:00 (UT) から過去に向かって 1000 年間だけ軌道積分するには、以下のようにすればよいでござる。
% ./backint_asteroids.py -v -d 1000 -n 100000 -o ceres.data Ceres Searching NASA Horizons for 'Sun'... Found: Sun (10) Searching NASA Horizons for 'Mercury'... Found: Mercury Barycenter (199) (chosen from query 'Mercury') Searching NASA Horizons for 'Venus'... Found: Venus Barycenter (299) (chosen from query 'Venus') Searching NASA Horizons for 'Earth'... Found: Earth-Moon Barycenter (3) (chosen from query 'Earth') Searching NASA Horizons for 'Mars'... Found: Mars Barycenter (4) (chosen from query 'Mars') Searching NASA Horizons for 'Jupiter'... Found: Jupiter Barycenter (5) (chosen from query 'Jupiter') Searching NASA Horizons for 'Saturn'... Found: Saturn Barycenter (6) (chosen from query 'Saturn') Searching NASA Horizons for 'Uranus'... Found: Uranus Barycenter (7) (chosen from query 'Uranus') Searching NASA Horizons for 'Neptune'... Found: Neptune Barycenter (8) (chosen from query 'Neptune') Searching NASA Horizons for 'Ceres'... Found: 1 Ceres (A801 AA) /usr/pkg/lib/python3.10/site-packages/rebound/horizons.py:172: RuntimeWarning: Warning: Mass cannot be retrieved from NASA HORIZONS. Set to 0. warnings.warn("Warning: Mass cannot be retrieved from NASA HORIZONS. Set to 0.", RuntimeWarning) progress of integration: 0.000% progress of integration: 10.000% progress of integration: 20.000% progress of integration: 30.000% progress of integration: 40.000% progress of integration: 50.000% progress of integration: 60.000% progress of integration: 70.000% progress of integration: 80.000% progress of integration: 90.000%
書き出される ceres.data というファイルの中身は以下のようになっているで ござる。
% ls -lF ceres.data -rw-r--r-- 1 daisuke taiwan 22500558 Jul 20 10:02 ceres.data % head -30 ceres.data # # Result of orbital integration by REBOUND # # start of simulation: 2023-07-20_02:01:14 # # input parameters # start date/time = 2000-01-01 12:00 # integrator = mercurius # timestep = -0.01 yr # duration_yr = 1000.0 yr # n_outputs = 100000 # file_output = ceres.data # verbose = True # # asteroids for orbital integration # Ceres # # format of output data # time (in yr) from start date/time, object name, x, y, z, vx, vy, vz, a, e, i, Omega, omega, M # -0.000000 Ceres -2.3864642362 0.7926901101 0.4632117513 -0.2080472740 -0.6158176149 0.0194022417 2.7789456954 0.0805478853 0.1843415718 1.4057721476 1.2775270197 0.1189638665 -0.010000 Ceres -2.3992529786 0.7539037527 0.4643757542 -0.1990195966 -0.6187534690 0.0176481546 2.7791166492 0.0805971545 0.1843407539 1.4057416086 1.2783202933 0.1318743264 -0.020000 Ceres -2.4114731284 0.7149375861 0.4654294364 -0.1899490437 -0.6215409477 0.0158907432 2.7792844192 0.0806444874 0.1843400288 1.4057111272 1.2791274691 0.1447707623 -0.030000 Ceres -2.4231220767 0.6758009541 0.4663726051 -0.1808383160 -0.6241793894 0.0141305255 2.7794489685 0.0806898550 0.1843393957 1.4056807135 1.2799477704 0.1576539347 -0.040000 Ceres -2.4341973841 0.6365032404 0.4672051004 -0.1716901249 -0.6266681940 0.0123680198 2.7796102624 0.0807332307 0.1843388542 1.4056503771 1.2807804166 0.1705246080 -0.050001 Ceres -2.4446967822 0.5970538642 0.4679267948 -0.1625071908 -0.6290068231 0.0106037440 2.7797682683 0.0807745899 0.1843384035 1.4056201277 1.2816246236 0.1833835506 -0.060001 Ceres -2.4546181737 0.5574622767 0.4685375933 -0.1532922421 -0.6311947999 0.0088382157 2.7799229560 0.0808139104 0.1843380431 1.4055899747 1.2824796049 0.1962315338 -0.070001 Ceres -2.4639596329 0.5177379572 0.4690374334 -0.1440480125 -0.6332317097 0.0070719514 2.7800742975 0.0808511722 0.1843377721 1.4055599275 1.2833445720 0.2090693309 -0.080001 Ceres -2.4727194060 0.4778904089 0.4694262852 -0.1347772401 -0.6351171994 0.0053054665 2.7802222673 0.0808863576 0.1843375900 1.4055299951 1.2842187348 0.2218977170 -0.090001 Ceres -2.4808959113 0.4379291554 0.4697041509 -0.1254826657 -0.6368509776 0.0035392753 2.7803668422 0.0809194512 0.1843374957 1.4055001866 1.2851013026 0.2347174678
軌道積分する小惑星は、小惑星の確定番号でも指定することができるでござる。 但し、番号の若い小惑星の場合、番号の後にセミコロンをつけないと JPL Horizons が惑星として取り扱ってしまうでござる。また、シェルに勘違いさ れないように、シングルクォート或いはダブルクォートでくくっておく必要が あるでござる。
% ./backint_asteroids.py -v -d 1000 -n 100000 -o ceres.data '1;' Searching NASA Horizons for 'Sun'... Found: Sun (10) Searching NASA Horizons for 'Mercury'... Found: Mercury Barycenter (199) (chosen from query 'Mercury') Searching NASA Horizons for 'Venus'... Found: Venus Barycenter (299) (chosen from query 'Venus') Searching NASA Horizons for 'Earth'... Found: Earth-Moon Barycenter (3) (chosen from query 'Earth') Searching NASA Horizons for 'Mars'... Found: Mars Barycenter (4) (chosen from query 'Mars') Searching NASA Horizons for 'Jupiter'... Found: Jupiter Barycenter (5) (chosen from query 'Jupiter') Searching NASA Horizons for 'Saturn'... Found: Saturn Barycenter (6) (chosen from query 'Saturn') Searching NASA Horizons for 'Uranus'... Found: Uranus Barycenter (7) (chosen from query 'Uranus') Searching NASA Horizons for 'Neptune'... Found: Neptune Barycenter (8) (chosen from query 'Neptune') Searching NASA Horizons for '1;'... Found: 1 Ceres (A801 AA) /usr/pkg/lib/python3.10/site-packages/rebound/horizons.py:172: RuntimeWarning: Warning: Mass cannot be retrieved from NASA HORIZONS. Set to 0. warnings.warn("Warning: Mass cannot be retrieved from NASA HORIZONS. Set to 0.", RuntimeWarning) progress of integration: 0.000% progress of integration: 10.000% progress of integration: 20.000% progress of integration: 30.000% progress of integration: 40.000% progress of integration: 50.000% progress of integration: 60.000% progress of integration: 70.000% progress of integration: 80.000% progress of integration: 90.000%
以下は、 1 とだけ指定した場合に、水星 (Mercury) だと解釈されてしまった 例でござる。
% ./backint_asteroids.py -v -d 1000 -n 100000 -o ceres.data 1 Searching NASA Horizons for 'Sun'... Found: Sun (10) Searching NASA Horizons for 'Mercury'... Found: Mercury Barycenter (199) (chosen from query 'Mercury') Searching NASA Horizons for 'Venus'... Found: Venus Barycenter (299) (chosen from query 'Venus') Searching NASA Horizons for 'Earth'... Found: Earth-Moon Barycenter (3) (chosen from query 'Earth') Searching NASA Horizons for 'Mars'... Found: Mars Barycenter (4) (chosen from query 'Mars') Searching NASA Horizons for 'Jupiter'... Found: Jupiter Barycenter (5) (chosen from query 'Jupiter') Searching NASA Horizons for 'Saturn'... Found: Saturn Barycenter (6) (chosen from query 'Saturn') Searching NASA Horizons for 'Uranus'... Found: Uranus Barycenter (7) (chosen from query 'Uranus') Searching NASA Horizons for 'Neptune'... Found: Neptune Barycenter (8) (chosen from query 'Neptune') Searching NASA Horizons for '1'... Found: Mercury Barycenter (199) progress of integration: 0.000% progress of integration: 10.000% progress of integration: 20.000% progress of integration: 30.000% progress of integration: 40.000% progress of integration: 50.000% progress of integration: 60.000% progress of integration: 70.000% progress of integration: 80.000% progress of integration: 90.000%
以下は、 1; と指定した場合に、やはり水星 (Mercury) だと解釈されてしまっ た例でござる。
% ./backint_asteroids.py -v -d 1000 -n 100000 -o ceres.data 1; Searching NASA Horizons for 'Sun'... Found: Sun (10) Searching NASA Horizons for 'Mercury'... Found: Mercury Barycenter (199) (chosen from query 'Mercury') Searching NASA Horizons for 'Venus'... Found: Venus Barycenter (299) (chosen from query 'Venus') Searching NASA Horizons for 'Earth'... Found: Earth-Moon Barycenter (3) (chosen from query 'Earth') Searching NASA Horizons for 'Mars'... Found: Mars Barycenter (4) (chosen from query 'Mars') Searching NASA Horizons for 'Jupiter'... Found: Jupiter Barycenter (5) (chosen from query 'Jupiter') Searching NASA Horizons for 'Saturn'... Found: Saturn Barycenter (6) (chosen from query 'Saturn') Searching NASA Horizons for 'Uranus'... Found: Uranus Barycenter (7) (chosen from query 'Uranus') Searching NASA Horizons for 'Neptune'... Found: Neptune Barycenter (8) (chosen from query 'Neptune') Searching NASA Horizons for '1'... Found: Mercury Barycenter (199) progress of integration: 0.000% progress of integration: 10.000% progress of integration: 20.000% progress of integration: 30.000% progress of integration: 40.000% progress of integration: 50.000% progress of integration: 60.000% progress of integration: 70.000% progress of integration: 80.000% progress of integration: 90.000%
複数の小惑星を指定し、軌道積分を実行した例は以下の通りでござる。
% ./backint_asteroids.py -v -d 1000 -n 100000 -o multiple.data Einstein Euler Hipparchus Curie 'Isaac Newton' Searching NASA Horizons for 'Sun'... Found: Sun (10) Searching NASA Horizons for 'Mercury'... Found: Mercury Barycenter (199) (chosen from query 'Mercury') Searching NASA Horizons for 'Venus'... Found: Venus Barycenter (299) (chosen from query 'Venus') Searching NASA Horizons for 'Earth'... Found: Earth-Moon Barycenter (3) (chosen from query 'Earth') Searching NASA Horizons for 'Mars'... Found: Mars Barycenter (4) (chosen from query 'Mars') Searching NASA Horizons for 'Jupiter'... Found: Jupiter Barycenter (5) (chosen from query 'Jupiter') Searching NASA Horizons for 'Saturn'... Found: Saturn Barycenter (6) (chosen from query 'Saturn') Searching NASA Horizons for 'Uranus'... Found: Uranus Barycenter (7) (chosen from query 'Uranus') Searching NASA Horizons for 'Neptune'... Found: Neptune Barycenter (8) (chosen from query 'Neptune') Searching NASA Horizons for 'Einstein'... Found: 2001 Einstein (1973 EB) /usr/pkg/lib/python3.10/site-packages/rebound/horizons.py:172: RuntimeWarning: Warning: Mass cannot be retrieved from NASA HORIZONS. Set to 0. warnings.warn("Warning: Mass cannot be retrieved from NASA HORIZONS. Set to 0.", RuntimeWarning) Searching NASA Horizons for 'Euler'... Found: 2002 Euler (1973 QQ1) Searching NASA Horizons for 'Hipparchus'... Found: 4000 Hipparchus (1989 AV) Searching NASA Horizons for 'Curie'... Found: 7000 Curie (1939 VD) Searching NASA Horizons for 'Isaac Newton'... Found: 8000 Isaac Newton (1986 RL5) progress of integration: 0.000% progress of integration: 10.000% progress of integration: 20.000% progress of integration: 30.000% progress of integration: 40.000% progress of integration: 50.000% progress of integration: 60.000% progress of integration: 70.000% progress of integration: 80.000% progress of integration: 90.000%
出力されたデータは以下の通りでござる。
% head -50 multiple.data # # Result of orbital integration by REBOUND # # start of simulation: 2023-07-20_02:16:29 # # input parameters # start date/time = 2000-01-01 12:00 # integrator = mercurius # timestep = -0.01 yr # duration_yr = 1000.0 yr # n_outputs = 100000 # file_output = multiple.data # verbose = True # # asteroids for orbital integration # Einstein # Euler # Hipparchus # Curie # Isaac Newton # # format of output data # time (in yr) from start date/time, object name, x, y, z, vx, vy, vz, a, e, i, Omega, omega, M # -0.000000 Einstein -1.5845757520 0.8842923825 0.3383303171 -0.3309353520 -0.6234363949 -0.2668746964 1.9423652033 0.0976168573 0.3960436571 -0.0468347395 3.7698320826 5.3302157144 -0.000000 Euler 2.4129809188 -0.5542653935 0.0757031944 0.1785643250 0.5927596998 -0.0893219899 2.3996225653 0.0695693306 0.1487003555 3.1213627916 0.8204927397 1.9909406310 -0.000000 Hipparchus 2.6066298991 -1.1388365225 0.0410338382 0.1966437477 0.5251734594 0.0248792650 2.5749772010 0.1172708514 0.0474139820 -0.7208120625 3.0356952589 3.6594875204 -0.000000 Curie -2.6790456061 -1.4171865681 0.2848583035 0.2800660823 -0.4112558669 -0.0776134637 2.4768078694 0.2587712374 0.1722941365 1.0571260482 5.3315162882 3.7458748795 -0.000000 Isaac_Newton -2.7814237458 1.7926105195 0.3903084558 -0.2781137547 -0.4393518905 -0.0655711917 3.0681030314 0.0889294327 0.1703055328 0.1833200456 5.2847597154 3.4212522565 -0.010000 Einstein -1.6048669241 0.8448432760 0.3214564989 -0.3148942479 -0.6321984606 -0.2702055355 1.9427216273 0.0977850404 0.3960275133 -0.0468128316 3.7688743765 5.3545689226 -0.010000 Euler 2.4238884982 -0.5169512929 0.0700813849 0.1686287217 0.5949465682 -0.0896199911 2.3995563739 0.0696777167 0.1487012414 3.1213615803 0.8207549021 2.0073816322 -0.010000 Hipparchus 2.6187622405 -1.1057425010 0.0425935332 0.1895290141 0.5282174313 0.0247661307 2.5748786716 0.1172769170 0.0474159537 -0.7207984883 3.0363059890 3.6739434986 -0.010000 Curie -2.6612601291 -1.4429263230 0.2799616759 0.2860548151 -0.4080460583 -0.0782480532 2.4768161707 0.2587911909 0.1722964472 1.0571173674 5.3313926755 3.7622331295 -0.010000 Isaac_Newton -2.7987492934 1.7649092363 0.3861676200 -0.2733645390 -0.4423910137 -0.0662332892 3.0681993760 0.0889007241 0.1703046139 0.1833251794 5.2844944795 3.4332439548 -0.020000 Einstein -1.6241404735 0.8048544204 0.3043781006 -0.2985450758 -0.6406151372 -0.2733858806 1.9430755367 0.0979580404 0.3960109636 -0.0467917576 3.7680024532 5.3788383893 -0.020000 Euler 2.4341713499 -0.4795047892 0.0644416017 0.1586792272 0.5969742529 -0.0898941114 2.3994931161 0.0697854526 0.1487021358 3.1213604565 0.8210592250 2.0237802446 -0.020000 Hipparchus 2.6304460826 -1.0724598652 0.0441459796 0.1823678264 0.5311770605 0.0246485342 2.5747805861 0.1172815134 0.0474179150 -0.7207844171 3.0369189689 3.6883966492 -0.020000 Curie -2.6430988895 -1.4684621830 0.2750254445 0.2920267832 -0.4047656888 -0.0788740631 2.4768243734 0.2588118210 0.1722987618 1.0571088684 5.3312700005 3.7785902948 -0.020000 Isaac_Newton -2.8157754032 1.7370184159 0.3819853907 -0.2685825071 -0.4453849364 -0.0668887642 3.0682954412 0.0888724456 0.1703036751 0.1833303217 5.2842240375 3.4452406933 -0.030000 Einstein -1.6423773006 0.7643478619 0.2871047166 -0.2818961002 -0.6486754757 -0.2764113301 1.9434265674 0.0981354558 0.3959940137 -0.0467715631 3.7672191101 5.4030213618 -0.030000 Euler 2.4438286775 -0.4419358701 0.0587853433 0.1487182764 0.5988432088 -0.0901444256 2.3994327598 0.0698924669 0.1487030378 3.1213594221 0.8214050736 2.0401370938 -0.030000 Hipparchus 2.6416785279 -1.0389939365 0.0456908968 0.1751608666 0.5340516494 0.0245264718 2.5746829462 0.1172846295 0.0474198655 -0.7207698518 3.0375340005 3.7028471669 -0.030000 Curie -2.6245629544 -1.4937897019 0.2700501515 0.2979815529 -0.4014143537 -0.0794913928 2.4768324710 0.2588331284 0.1723010801 1.0571005509 5.3311483070 3.7949463361 -0.030000 Isaac_Newton -2.8325000238 1.7089409079 0.3777621860 -0.2637679913 -0.4483333524 -0.0675375545 3.0683912284 0.0888446040 0.1703027163 0.1833354707 5.2839484661 3.4572423975 -0.040000 Einstein -1.6595588411 0.7233463313 0.2696462163 -0.2649561073 -0.6563686336 -0.2792775375 1.9437743464 0.0983168653 0.3959766699 -0.0467522933 3.7665269145 5.4271153162 -0.040000 Euler 2.4528598370 -0.4042544940 0.0531141028 0.1387482771 0.6005539195 -0.0903710131 2.3993752729 0.0699986901 0.1487039466 3.1213584791 0.8217917982 2.0564528204 -0.040000 Hipparchus 2.6524567221 -1.0053500803 0.0472280042 0.1679088251 0.5368404969 0.0243999399 2.5745857538 0.1172862548 0.0474218050 -0.7207547955 3.0381508840 3.7172952484 -0.040000 Curie -2.6056534183 -1.5189044078 0.2650363456 0.3039186770 -0.3979916366 -0.0800999388 2.4768404567 0.2588551138 0.1723034016 1.0570924147 5.3310276400 3.8113012135 -0.040000 Isaac_Newton -2.8489211247 1.6806795813 0.3734984278 -0.2589213259 -0.4512359558 -0.0681795980 3.0684867391 0.0888172057 0.1703017373 0.1833406245 5.2836678431 3.4692489919 -0.050001 Einstein -1.6756670996 0.6818732368 0.2520127402 -0.2477344101 -0.6636838982 -0.2819802212 1.9441184921 0.0985018289 0.3959589393 -0.0467339936 3.7659281904 5.4511179692