Domanda:
Qual è il formato esatto dei file delle effemeridi JPL?
Lukas Bystricky
2015-10-30 19:20:17 UTC
view on stackexchange narkive permalink

Sto tentando di eseguire alcuni calcoli di base sulla posizione del pianeta utilizzando i dati sulle effemeridi del JPL. Il primo passo è analizzare correttamente i file. Ecco la mia comprensione fino ad ora:

Il file di intestazione fornisce una matrice, ad esempio:

  3171 231 309 342 366 387 405 423 441 753 819 89914 10 13 11 8 7 6 6 6 13 11 10 10 4 2 2 1 1 1 1 1 1 8 2 4 4  

La documentazione dice che questo può essere interpretato come segue:

La parola (1, i) è la posizione iniziale in ogni record di dati dei coefficienti chebychev appartenenti all'elemento i-esimo. La parola (2, i) è il numero di coefficienti chebychev per componente dell'i esimo elemento e la parola (3, i) è il numero di serie complete di coefficienti in ogni record di dati per l'i esimo elemento.

E più avanti:

Le prime due parole a doppia precisione in ogni record di dati contengono la data giuliana dei primi dati nel record e la data giuliana degli ultimi dati nel record.

I dati rimanenti sono coefficienti di posizione chebychev per ogni componente di ciascun corpo sul nastro. I coefficienti chebychev per i pianeti rappresentano le posizioni baricentriche del sistema solare dei centri dei sistemi planetari.

Ci sono tre componenti cartesiane (x, y, z), per ciascuno degli elementi # 1-11

Quindi ogni pianeta ha coefficienti $ N $ in ciascuno dei sottointervalli $ n $ per ciascuna delle 3 coordinate ($ N = 14 $ e $ n = 4 $ per il primo pianeta nei dati sopra).

La mia domanda ora è: qual è l'ordine dei coefficienti in ogni sottointervallo? Ad esempio, se $ X_i ^ k, Y_i ^ k $ e $ Z_i ^ k $ sono $ k $ th coefficiente per $ (x, y, z) $ nel sottointervallo $ i $ th, i coefficienti potrebbero essere ordinati logicamente in qualsiasi dei seguenti modi (e probabilmente altri):

  • $ X_1 ^ 1, ..., X_1 ^ N, Y_1 ^ 1, Y_1 ^ 2, ..., Y_1 ^ N, Z_1 ^ 1, ..., Z_1 ^ N, X_2 ^ 1, ... $
  • $ X_1 ^ 1, ..., X_1 ^ N, X_2 ^ 1, ... X_n ^ N, Y ^ 1_1, ..., Y_n ^ N, Z ^ 1_1, ..., Z_n ^ N $
  • $ X_1 ^ 1, Y_1 ^ 1, Z_1 ^ 1, X_1 ^ 2, Y_1 ^ 2, Z_1 ^ 2, ... $

C'è qualsiasi documentazione che va oltre questo ordine?

Quattro risposte:
David Hammen
2015-10-30 23:56:07 UTC
view on stackexchange narkive permalink

Puoi analizzare e utilizzare quei file di effemeridi JPL ascii.

Attenzione : questo è un esercizio per le persone a cui piace torturarsi. Se non ti piace l'auto-flagellazione, dovresti fare ciò che ha scritto Mark Adler e utilizzare il toolkit SPICE. Ho attraversato questa autoflagellazione più di dieci anni fa, quando SPICE era chiuso e non era più quello che è ora. Ora le persone stanno pensando di eliminare un migliaio di righe di codice sostituendo il mio lavoro con SPICE. Ed è esattamente quello che dovrebbero fare.


Considera il file ascp2200.405. (Ho scelto quel file perché è relativamente piccolo.) La prima riga è

  1 1018  

"1" denota il numero di blocco all'interno del file. Il "1018" indica il numero di numeri nel blocco. Le successive 340 righe contengono quei 1018 numeri (più altri due per il riempimento). I primi due numeri rappresentano le date giuliane di inizio e fine del blocco, nel tempo delle effemeridi di JPL. Se non ti interessano gli errori millisecondi, puoi usare TAI al posto di $ T _ {\ text {eph}} $ di JPL.

I primi 168 numeri in quel blocco riguardano Mercury, il il successivo 60 a Venere, il successivo 78 al baricentro Terra-Luna, e così via. Questo è specificato nella sezione GROUP 1050 del file di intestazione. È possibile dedurre la dimensionalità di ogni elemento da quella sezione. In alternativa, dovresti sapere che la posizione è tridimensionale, mentre le librazioni sono bidimensionali.

I 168 numeri che descrivono la posizione di Mercurio sono organizzati in quattro sottoblocchi, ciascuno composto da 3 * 14 = 42 numeri . (Per quanto riguarda quei numeri magici: 14 proviene dai dati del GRUPPO 1050 per Mercurio e 3 è la dimensionalità dei dati di posizione.) Di questi 42 numeri, i primi 14 sono i coefficienti per il 13 esimo I coefficienti polinomiali di Chebyshev che descrivono la posizione x, i successivi 14 descrivono la posizione y e gli ultimi 14 descrivono la posizione z.

Questi 14 numeri sono coefficienti polinomiali di Chebyshev con il tempo (opportunamente scalato) come variabile indipendente. I polinomi di Chebyshev sono funzioni limitate al dominio [-1,1]. Per trovare la posizione di Mercurio in un dato momento $ t $, devi prima trovare il blocco che appartiene a quel momento. Quindi dovrai trovare il sottoblocco (Mercurio ha quattro serie di coefficienti) che appartiene a quel momento. Successivamente dovrai compensare il tempo dalla metà di quel sottoblocco e scalare il risultato in modo che -1 rappresenti l'inizio del sottoblocco e 1 rappresenti la fine. Infine, dovrai calcolare $ \ sum_ {k = 0} ^ {13} C_n T_n (t) $ per ciascuno dei tre elementi del vettore di posizione, dove $ C_n $ sono i coefficienti polinomiali di Chebyshev e $ T_n (t) $ sono i polinomi di Chebyshev: $ T_0 (t) = 1 $, $ T_1 (t) = t $ e $ T_ {n + 1} (t) = 2tT_n (t) -T_ {n-1} (t) $. I risultati sono in chilometri, ad eccezione degli elementi relativi alla rotazione. Questo può o non può essere quello che vuoi.

Per rendere le cose ancora più divertenti (il divertimento dell'auto-flagellazione, cioè), e se volessi conoscere la posizione di Marte rispetto alla Terra? Il file delle effemeridi JPL non ha coefficienti per la Terra. Ha coefficienti per il baricentro Terra-Luna (relativo al baricentro del sistema solare) e per la Luna (relativo al centro della Terra). Dovrai calcolare la posizione della Terra calcolando la posizione di Marte, la posizione del baricentro Terra-Luna e la posizione della Luna rispetto alla Terra. Successivamente dovrai calcolare la posizione della Terra (rispetto al baricentro del sistema solare) usando il rapporto di massa Terra-Luna (un numero magico che si trova nel file di intestazione). Con questo, puoi finalmente calcolare la posizione di Marte rispetto alla Terra. Questa è la posizione relativa istantanea. Se ti interessa dove vedresti Marte nel cielo, dovrai preoccuparti di dove si trovava Marte nel momento in cui la luce ti raggiunge sulla Terra.


In alternativa, puoi seguire il consiglio di Mark Adler: usa il toolkit SPICE.

Mark Adler
2015-10-30 20:49:50 UTC
view on stackexchange narkive permalink

No, il primo passaggio è scaricare SPICE Toolkit. Leggerà le effemeridi e genererà i dati necessari per te, oltre a fare molto, molto di più. Ci sono molti formati usati nei file del kernel di SPICE, non solo quello in particolare che stai guardando, che probabilmente è un array Chebyshev di sola posizione (tipo 2). Esistono 16 tipi. I valori possono essere memorizzati in little o big endian. Possono esserci ampie sezioni di commenti nel file. Ci sono diversi corpi in ogni file. I corpi avranno diversi gradi di risoluzione nel tempo. Ci vorrà un po 'di lavoro per decodificare la cosa da soli, che è solo tempo perso poiché il toolkit farà tutto questo per te.

Scarica il toolkit.

Per rispondere al tuo domanda, se hai trovato con successo un singolo record di array Chebyshev di sola posizione di tipo 2 e sei arrivato ai coefficienti polinomiali (dopo aver letto MID e RADIUS per quel record), è questa: la sequenza dei doppi inizia con il termine costante del polinomio per $ x $, e continua con il coefficiente lineare di $ t $, finché quel polinomio non è completo, seguito dalla stessa cosa per $ y $ e $ z $. I doppi sono numeri in virgola mobile IEEE a 64 bit in ordine little o big-endian a seconda di ciò che dice nell'intestazione.

$ t $ è il tempo delle effemeridi in secondi e i risultati sono in km.

Il formato è documentato qui.

Tuttavia dovresti scaricare il toolkit.

Il toolkit è una buona idea, tuttavia avrei dovuto menzionare nella mia domanda che questo è per il mio interesse personale, quindi mi piacerebbe programmare una versione approssimativa da solo. Il formato nel collegamento che hai fornito sembra leggermente diverso dal formato descritto [qui] (ftp://ssd.jpl.nasa.gov/pub/eph/planets/ascii/ascii_format.txt). Per prima cosa i tempi sono forniti all'inizio e alla fine, non a metà e raggio. Anche i coefficienti dovrebbero essere coefficienti per i polinomi di Chebyshev, non il polinomio che hai descritto.
I primi due polinomi di Chebyshev sono $ 1 $ e $ x $, quindi quello che ho detto è coerente con questo.
Sembra che tu stia fondendo due diverse parti del formato. La sostanza dei dati è una sequenza di record in cui ciascuno è medio, raggio, x coeff, y, coeff, z coeffs. Quella sequenza di record è seguita da quattro doppi che sono l'epoca iniziale, la lunghezza dell'intervallo, gli elementi in ogni record (da te che puoi calcolare il grado dei polinomi) e il numero di record.
O forse stai guardando un diverso tipo di file. Dovresti utilizzare i file SPK Ephemeris come de430.bsp o de431.bsp.
Le parti interne profonde delle effemeridi JPL sono polinomi di Chebyshev del primo tipo, non del secondo: $ T_0 (x) = 1 $, $ T_1 (x) = x $, $ T_ {n + 1} (x) = 2xT_n (x ) -T_ {n-1} (x) $.
Escualo
2017-03-19 21:04:08 UTC
view on stackexchange narkive permalink

Il formato esatto dei file SPK di SPICE Toolkit (chiamati anche file BSP) è chiamato DAF ( File di array a doppia precisione ). È un formato binario costituito da blocchi consecutivi di 1.024 byte. Il primo record è sempre il record del file , quindi ha alcuni blocchi che fungono da area dei commenti , poi ha gli record dell'array e infine una raccolta di record di dati .

[FILE RECORD] (1024 byte) [PRIMO BLOCCO DI COMMENTO] (1024 byte) ... [ULTIMO BLOCCO DI COMMENTO] (1024 byte) [PRIMO BLOCCO DI SUMMARY RECORDS] (1024 byte) ... [ULTIMO BLOCCO DI REGISTRI DI SOMMARIO] (1024 byte) [PRIMO BLOCCO DI REGISTRI DI NOME] (1024 byte) ... [ULTIMO BLOCCO DI REGISTRI DI NOME] (1024 byte) [PRIMO BLOCCO DI REGISTRI DI ELEMENTI] (1024 byte) ... [ULTIMO BLOCCO DI REGISTRI DI ELEMENTI] (1024 byte)

Tutti i dati binari di SPICE sono memorizzati in formato DAF (non solo le effemeridi). Il tipo specifico di dati (ovvero la semantica dei record) dipende dalle informazioni memorizzate nei record di riepilogo e dai record dell'elemento. Devi sapere che tipo di dati stai leggendo per interpretare correttamente i record.

Esistono molti tipi di effemeridi . I pianeti sono spesso di Tipo II ; i satelliti sono spesso di Tipo III ; i veicoli spaziali sono spesso di Tipo I . I tipi II e III rappresentano i polinomi di Chebyshev e la loro differenza è se usano la derivata del polinomio di Chebyshev per calcolare la velocità (Tipo II) o se viene utilizzato un polinomio separato per calcolare la velocità (Tipo III).

In altre parole: un file SPK di tipo II ti fornirà un polinomio di un certo ordine il cui valore rappresenta la posizione e la cui derivata rappresenta la velocità. Un file SPK di tipo III fornirà un polinomio per la posizione e un polinomio diverso per la velocità. Entrambi i tipi sono polinomi di Chebyshev.

Per i file SPK, i record di riepilogo ti diranno dove inizia e finisce ogni record, il tipo di effemeridi, l'intervallo di tempo, il frame, il target e l'osservatore. Ogni record specifico (che molto probabilmente conterrà più di un blocco) avrà il seguente aspetto:

+ --------------- + | Record 1 | + --------------- + | Record 2 | + --------------- +. . . + --------------- + | Record N | + --------------- + | INIT | + --------------- + | INTLEN | + --------------- + | RSIZE | + --------------- + | N | + --------------- +

e ogni record ha il seguente aspetto

+ ------ ------------ + | MID | + ------------------ + | RAGGIO | + ------------------ + | Coefficienti X | + ------------------ + | Coefficienti Y | + ------------------ + | Coefficienti Z | + ------------------ +

per Tipo II e simili

+ --- --------------- + | MID | + ------------------ + | RAGGIO | + ------------------ + | Coefficienti X | + ------------------ + | Coefficienti Y | + ------------------ + | Coefficienti Z | + ------------------ + | Coefficienti X '| + ------------------ + | Coefficienti Y '| + ------------------ + | Coefficienti Z '| + ------------------ +

per Tipo III.

Il grado del polinomio è (RSIZE - 2) / 3-1 . MID ti dice il punto medio dell'intervallo (tempo delle effemeridi), e RADIUS ti dice la metà della dimensione dell'intervallo. Quindi il suo intervallo di tempo è [MID - RADIUS, MID + RADIUS] .

Per ottenere la posizione si valuta semplicemente Chebyshev al momento corrispondente. Per la velocità si valuta la derivata o un polinomio diverso. Ricorda di normalizzare il tempo prima di valutare e de-normalizzare il tempo dopo la valutazione (questo mi ha procurato molte volte).

Trattare direttamente con DAF può essere un'esperienza gratificante (ad esempio: ho un analizzatore di effemeridi ad alte prestazioni thread-safe), ma è facile sbagliare. E dopo molto lavoro hai solo una posizione o velocità in un dato fotogramma che devi ancora ruotare / tradurre / ecc (per il quale devi reinventare SPICE o fare affidamento su di esso).

A meno che tu non abbia una buona ragione per non farlo, attieniti a SPICE.

Un semplice script Python

Ho appena creato uno script Python che potrebbe aiutare qualcuno iniziare con il formato binario DAF. Eseguirà semplicemente il dump delle informazioni sul record del file e dei contenuti (riepiloghi degli array) contenuti in un DAF.

  import mmapimport structRECLEN = 1024def peek_spk (mem): # record file è sempre la prima # stringa data locidw = mem [0: 8] locifn = mem [16:16 + 60] locfmt = mem [88: 88 + 8] ftpstr = mem [699: 699 + 28] # endianness fmt = "<" if locfmt == "LTL-IEEE" else ">" int_fmt = fmt + "I" nd, = struct.unpack_from (int_fmt, mem, offset = 8) ni, = struct.unpack_from (int_fmt, mem, offset = 12) fward, = struct .unpack_from (int_fmt, mem, offset = 76) bward, = struct.unpack_from (int_fmt, mem, offset = 80) free, = struct.unpack_from (int_fmt, mem, offset = 84) print "locidw {0}". formato (locidw) print "nd {0}". format (nd) print "ni {0}". format (ni) print "locifn {0}". format (locifn) print "fward {0}". format (fward ) print "bward {0}". format (bward) print "free {0}". format (free) print "locfmt {0}". format (l ocfmt) print "ftpstr {0}". format (repr (ftpstr)) # facciamo solo il primo record di riepilogo ... dobbiamo leggere nd # double e ni interi a partire da offset fward offset = (fward - 1) * RECLEN sum_fmt = fmt + nd * "d" + ni * "I" size = nd + (ni + 1) / 2 # divisione intera mentre True: nxt, prv, nsum = struct.unpack_from (fmt + "ddd", mem , offset = offset) offset + = 24 # salta tre doppi
for n in range (int (nsum)): print struct.unpack_from (sum_fmt, mem, offset = offset) offset + = size * 8 if nxt == 0: breakdef peek (path): print "peeking into {0}" .format (percorso) con open (percorso, "rb") come fp: mem = mmap.mmap (fp.fileno (), 0, access = mmap.PROT_READ) peek_spk (mem) if __name__ == "__main__": import sys per il percorso in sys.argv [1:]: peek (percorso)  

Ad esempio: eseguirlo per jup310.bsp dà

sbirciare in / data / spice / jup310.bsplocidw DAF / SPK nd 2ni 6locifn NIO2SPK
fward 6bward 6free 122077514locfmt LTL-IEEEftpstr 'FTPSTR: \ r: \ n: \ r \ n: \ r \ x00: \ x81: \ x10 \ xce : ENDFTP '(- 3155716758.8160305, 3155716867.183885, 501, 5, 1, 3, 897, 7208500) (- 3155716758.8160305, 3155716867.183885, 502, 5, 1, 3, 7208501, 1436740475, - 3155716758.8160305, 3155716867.183885, 502, 5, 1, 3, 7208501, 14367385, 508 , 3, 14367405, 19140106) (- 3155716758.8160305, 3155716867.183885, 504, 5, 1, 3, 19140107, 22451778) (- 3155716758.8160305, 3155716867.183885 , 505, 5, 1, 3, 22451779, 44074360) (- 3155716758.8160305, 3155716867.183885, 514, 5, 1, 3, 44074361, 65696942) (- 3155716758.8160305, 3155716867.183885, 515, 5, 1, 3, 9069 -3155716758.8160305, 3155716867.183885, 516, 5, 1, 3, 90825889, 115954834) (- 3155716758.8160305, 3155716867.183885, 599, 5, 1, 3, 115954835, 120922238, - 3155716758.8160305, 3155716867.183885, 599, 5, 1, 3, 115954835, 120922238) (- 3155730867, 3155730867, 3155730867, 3155730867 , 121109489) (- 3155716758.8160305, 3155716867.183885, 5, 0, 1, 2, 121109490, 121168877) (- 3155716758.8160305, 3155716867.183885, 10, 0, 1, 2, 121168878, 121328760567, 3155138716, 3155138716, 3155138671, 31551 3867, 315513867, 315513867, , 2, 121328727, 122077513)

Ciò significa che jup310 contiene record che si estendono su ET (-3155716758.8160305, 3155716867.183885) per alcune lune di Giove (da 501 a 519) relative al baricentro di Giove (5), in formato J2000 (1), e sono di tipo 3. Altri record sono per i baricentri della Terra, Giove e del Sole (3, 5 e 10) rispetto al Baricentro del Sistema Solare (0) in J200 (1) e sono di tipo 2.

Ogni record ti dice dove nel file inizia e finisce ogni array. Puoi estendere lo script per passare a ciascuna posizione e leggere l'intero record per una successiva interpolazione.

Software disponibile

Ho creato rapidamente una semplice implementazione in Python che può leggere e lavorare direttamente con Tipi II e III. Si confronta bene con CSPICE.

https://gist.github.com/arrieta/c2b56f1e2277a6fede6d1afbc85095fb

questa è una risposta esauriente ed estremamente utile. Grazie. Mi chiedo se potresti approfondire l'uso del fattore 2 durante la valutazione polinomiale, ovvero perché l'input per il metodo Horner è 2x anziché x?
Greg Miller
2020-07-15 20:04:24 UTC
view on stackexchange narkive permalink

Non sono d'accordo con tutte le risposte precedenti. Direi che implementare il tuo programma Ephemeris è banale al limite una volta che conosci il formato dei file e hai le equazioni relativamente semplici per usare i polinomi per calcolare le posizioni. Il compito rientra nel regno di un programmatore principiante. Il formato del file è la parte più difficile, solo perché ci sono molti pezzi da mettere insieme, ma non esattamente difficile da fare.

L'articolo Formato dei file effemeridi JPL ha una guida piuttosto approfondita, con esempi e un ' implementazione JavaScript come esempio. Notare che l'intera classe che esegue le ricerche e i calcoli dei coefficienti è inferiore a 100 righe di codice. Inoltre ci sono implementazioni di esempio nel repository Github gmiller123456 / jpl-development-ephemeris che attualmente ha implementazioni in Python, Perl, C # e JavaScript.

Come hai già capito , la sezione "GROUP 1050" dell'intestazione contiene molte delle chiavi per il formato del file. Questa è la sezione per DE405

  GROUP 1050 311731309 342366387405 423 441 753 819 89914 10 13 11 8 7 6 6 6 13 11 10 10 4 2 2 1 1 1 1 1 1 8 2 4 4  

L'ordine e il numero di componenti a cui corrispondono è dato nel documento Formato Ascii da JPL. Ogni colonna rappresenta i valori per un dato pianeta (o altra proprietà):

  # Proprietà Unità Nome centro1 3 km SSB Mercurio2 3 km SSB Venere3 3 km SSB Terra-Luna baricentro4 3 km SSB Marte5 3 km SSB Giove6 3 km SSB Saturno7 3 km SSB Urano8 3 km SSB Nettuno
9 3 km SSB Plutone10 3 km Terra Luna (geocentrica) 11 3 km SSB Sole12 2 radianti Terra Nutazioni in longitudine e obliquità (modello IAU 1980) 13 3 radianti Librazione del mantello lunare14 3 radianti / giorno Velocità angolare del mantello lunare15 1 Secondi TT-TDB ( at geocenter)  

Ciascuno dei file ASCII è suddiviso in blocchi, validi per il numero di giorni indicato nel file di intestazione. I primi due numeri nel blocco sono le date giuliane per le quali quel blocco è valido, quindi trovare il blocco corrispondente a una data data giuliana è banale.

Da GROUP 1050 nell'intestazione, i numeri in ogni colonna corrispondono a:

  1. L'offset iniziale nel blocco (a partire da 1) 2. Numero di coefficienti per ogni proprietà 3. Il numero di sottointervalli  

Quindi, per calcolare l'offset nel blocco per un dato pianeta:

  lengthOfSubinterval = daysPerBlock / numberOfSubintervalssubinterval = floor ((JD- blockStartDate) / lengthOfSubinterval) offset = subinterval * numberOfCoefficients * numberOfProperties + seriesStartOffset;  

Quindi, per i pianeti, avrai tutti i coefficienti X, poi tutti i coefficienti Y e infine tutti i coefficienti Z. Ad esempio, i coefficienti per Mercury per JD = 2458850,5 sono forniti nel codice seguente.

Per prendere in prestito l'esempio dall'articolo Format of the JPL Ephemeris Files, questo calcola effettivamente le posizioni :

  funzione computePolynomial (x, coefficienti) {let T = new Array (); T [0] = 1; T [1] = x; per (sia n = 2; n<14; n ++) {T [n] = 2 * x * T [n-1] - T [n-2]; } let v = 0; per (sia i = coefficienti.lunghezza-1; i> = 0; i -) {v + = T [i] * coefficienti [i]; } return v;} funzione computeExamplePolynomials () {
let X = [0.230446411715880504E + 04, 0.133726736662702635E + 08, -0.782187090879053358E + 04, -0.267678745522568279E + 05, -0.227070698075548364E + 03, -0.142012340261296774E + 04, -0.267678745522568279E + 05, -0.227070698075548364E + 03, -0.142012340261296774E + 04, -0.267678745522568279E + 05, -0.227070698075548364E + 03, -0.142012340261296774E -0.142012340261296774E -0.14 E-03, 0.302564651657819373E-04, 0.980701702776103911E-06, 0.505819702568259545E-07, 0.113034198242195379E-08, 0.323800745882515925E-10]; let Y = [- 0.593914454531169161E + 08, 0.138391312173493067E + 07, 0.725419090211108793E + 06, 0.139471465250126903E + 04, -0.290917422263861397E + 03, -0.635064566332839320E + 06, 0.139471465250126903E + 04, -0.290917422263861397E + 03, -0.6350645663328393209, 0150768 -034768 -03499 -0349, 0150768 -0349, 01 0.681164244772722110E-03, -0.783160742259704191E-05, -0.953933699143903451E-07, 0.170514411319974421E-07, 0.132846579503924915E-08, 0.625629348278007546E-10]; let Z = [- 0.318846685234071501E + 08, -0.647159726192409638E + 06, 0.388325111500594590E + 06, 0.351975238047553557E + 04, -0.131868705094903135E + 03, -0.192040059987689204E + 06, 0.351975238047553557E + 04, -0.131868705094903135E + 03, -0.192040059987689204E +059, 035.635, 035.635, 035.635, 035.635, 035.635, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 035, 0, 35; -0.400870301836372738E-03, -0.731991272299537233E-05, -0.152615685994738755E-06, 0.386553675297770635E-08, 0.592487943320094233E-09, 0.300642066655273442E-10]; sia x = -0,5; console.log (computePolynomial (x, X)); console.log (computePolynomial (x, Y)); console.log (computePolynomial (x, Z));}  

La chiamata della funzione computeExamplePolynomials () sopra, produce i valori seguenti:

  X = - 6706768.766943997 kmY = -60444568.85087551 kmZ = -31751664.901437085 km  


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...