Wie wird die Tschebyscheff-Methode von JPL verwendet?

In den DE-Paketen gibt uns die NASA eine Reihe von Koeffizienten für die Tschebyscheff-Näherung. So wie ich es verstehe, sind diese Annäherungen durch eine Reihe von Polynomen gegeben T n für das Intervall [ 1 , 1 ] . Dann überlegen wir f ( t ) sein ich a ich T ich ( τ ) (wo τ ist die normalisierte Zeit). Was ist a ich und was sind seine Werte?

Dann betrachten wir eine Annäherung unter Verwendung einer Taylor-Reihe, die definiert ist als f ( t ) = ich b ich τ ich . Was ist b ich ? Ist es eine Bessel-Funktion?

Die letzten beiden Beziehungen repräsentieren den Clenshaw-Algorithmus. Hier verstehe ich nicht genau, wie es funktioniert. Hat die Zahl von 13 Koeffizienten auch etwas mit Runges Phänomen zu tun?

Unten sind die Gleichungen 3.52 bis 3.59 aus Abschnitt 3.3.3 (Chebychev Approximation) im Buch Satellite Orbits: Models, Methods and Applications * von De Oliver Montenbruck und Eberhard Gill Springer 2000, ISBN 978-3-642-58351-3das unter books.google.com einsehbar ist

Bild12323

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Es wäre toll, wenn Sie einen Link zu der Quelle hinzufügen könnten, die Sie gerade lesen.
Das ist übrigens ein fantastisches Buch!

Antworten (2)

Die a ich sind die Koeffizienten für die Tschebyscheff-Näherung. Wie Sie sagen, die NASA gibt uns die. Das finden Sie in den DE-Dateien, zB de430.bsp . (Klicken Sie nicht darauf, es sei denn, Sie möchten eine >100-MB-Datei herunterladen.) NASA/JPL brauchte eine Möglichkeit, hochauflösende und hochgenaue Zeitfunktionen für die Positionen der Planeten bereitzustellen, und die kompakteste Methode waren Koeffizienten von Tschebyscheff Polynome. Die Funktionen werden in kleine Intervalle zerlegt, innerhalb derer die Koeffizienten und resultierenden Funktionen gültig sind.

Nein, die b ich sind keine Besselfunktionen. Sie sind die Koeffizienten einer Taylor-Reihe, die schätzt f über dem τ für dieses Intervall. Diese Gleichung wurde aus dem Kontext gerissen, wo in diesem Kontext diskutiert wurde, warum Tschebyscheff-Polynome, T n ( τ ) statt einer Taylor-Reihe, die die Polynome verwendet, zur Approximation verwendet τ n . Der Grund dafür ist, dass eine Tschebyscheff-Näherung weniger Terme für die gleiche Genauigkeit benötigt.

Der Clenshaw-Algorithmus ist einfach eine Möglichkeit, sowohl die Tschebyscheff-Polynome zu erzeugen als auch mit zu multiplizieren a ich und addieren sie gleichzeitig, um die Anzahl der erforderlichen Operationen zu minimieren. Es ist auf der verlinkten Wikipedia-Seite gut beschrieben und kann leicht aus der Wiederholungsbeziehung für die Tschebyscheff-Polynome oben in Ihrem Bild abgeleitet werden.

Der Fehler in einer Tschebyscheff-Näherung ist nicht flach. Es oszilliert und kommt dem des Minimax-Polynoms gleicher Ordnung nahe. Der Unterschied zwischen einer wohlerzogenen Funktion f ( t ) und das Minimax-Polynom der Ordnung n die diese Funktion über dieses Intervall annähert n + 2 extrem, wo n ist die Ordnung des Polynoms, wobei der Absolutwert der Differenz an jedem Extremum gleich ist. Es gibt keine Garantie dafür, wie sich die Fehlerfunktion für eine Taylor-Reihe oder sogar für eine Näherung der kleinsten Fehlerquadrate verhält. ...
Ein Benutzer einer Annäherung kümmert sich typischerweise um das Schlimmste, was die Annäherung ihm antun kann, eher um das Verhalten der kleinsten Quadrate. Dass Tschebyscheff-Polynome nahe am idealen Minimax-Polynom liegen, ist der Grund, warum sie so weit verbreitet sind.

Der Artikel Format of the JPL Ephemeris Files enthält eine detaillierte Aufschlüsselung der Verwendung der Entwicklungs-Ephemeriden, einschließlich einer exemplarischen Vorgehensweise und eines Beispielquellcodes.

Ich denke, Sie haben viele überflüssige Informationen, alles, was Sie wirklich brauchen, ist:

ich = 1 n a ich T ich ( x )

Woher a ich sind die Koeffizienten, x ist die auf das Intervall normierte Zeitvariable [ 1 , 1 ] , und T ich ( x ) ist wie folgt definiert:

T 0 ( x ) = 0

T 1 ( x ) = x

T n + 1 ( x ) = 2 x T n ( x ) T n 1 ( x )

Code in Javascript, um diese Berechnung durchzuführen:

function computePolynomial(x,coefficients){
   let T=new Array();

   T[0]=1;
   T[1]=x;
   for(let n=2;n<coefficients.length;n++)  {
     T[n]=2*x*T[n-1] - T[n-2];
   }

  let v=0;
  for(let i=coefficients.length-1;i>=0;i--){
    v+=T[i]*coefficients[i];
  }
  return v;
}   

Beachten Sie, dass die Summierung aller Variablen in umgekehrter Reihenfolge erfolgt, von der kleinsten zur größten, um Gleitkommarundungen zu vermeiden.

Das Github-Repository gmiller123456/jpl-development-ephemeris enthält nicht optimierten Quellcode in mehreren Sprachen, der den gesamten Prozess implementiert.