Diese Seite bezieht sich auf die erste Auflage (2020) des Buches.   ➜   Zur aktuellen Auflage.

Aufgaben

Lösung zu Aufgabe 7.2

Das unten abgedruckte Programm stellt den Abstand zwischen Tempel1 und der Erde bzw. der Sonne grafisch dar. Bitte beachten Sie, dass sich die Datei ephemeriden.npz, die die simulierten Positionsdaten der Himmelskörper enthält, im gleichen Verzeichnis befinden muss. Das Programm liefert die folgende grafische Darstellung:

Aus dieser Auftragung kann man bei entsprechender Vergrößerung entnehmen, dass der Komet Tempel1 nach 1675 Tagen und nach 3715 Tagen ab dem Simulationsbeginn am 01.01.2012 seinen sonnennächsten Punkt (Perihel) erreicht. Aus der Datenbank Minor Planet Center der IAU (International Astronomical Union) entnimmt man, dass die ein Periheldurchgang von Tempel1 am 02.08.2016 stattgefunden hat. Der nächste Periheldurchgang wird für den 04.03.2022 vorausgesagt. Die folgende kurze Rechnung mit Python zeigt, dass die Daten von unserem Simulationsprogramm damit übereinstimmen:

    
>>> import datetime
>>> print(datetime.date(2012, 1, 1) + datetime.timedelta(days=1675))
2016-08-02
>>> print(datetime.date(2012, 1, 1) + datetime.timedelta(days=3715))
2022-03-04
    
  

Link    Datei ephemeriden.npz

Download    Mehrkoerper/Loesungen/tempel1.py

"""Abstand des Kometen 9P/Tempel 1 von der Erde bzw. von der
Sonne als  Funktion der Zeit. """

import numpy as np
import matplotlib.pyplot as plt

# Lies die Simulationsdaten ein.
dat = np.load('ephemeriden.npz')
tag, jahr, AE, G = dat['tag'], dat['jahr'], dat['AE'], dat['G']
T, dt = dat['T'], dat['dt']
m, name = dat['m'], dat['name']
t, r, v = dat['t'], dat['r'],  dat['v']

# Berechne den Abstand zwischen Tempel1 und Erde sowie zwischen
# Tempel1 und Sonne.
d_erde = np.linalg.norm(r[9] - r[3], axis=0)
d_sonne = np.linalg.norm(r[9] - r[0], axis=0)

# Erzeuge eine Figure und eine Axes.
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_xlabel('t [Tage]')
ax.set_ylabel('d [AE]')
ax.grid()

# Plotte die Abstände und erzeuge eine Legende.
ax.plot(t / tag, d_erde / AE, label='Tempel1 - Erde')
ax.plot(t / tag, d_sonne / AE, label='Tempel1 - Sonne')
ax.legend()

# Zeige die Grafik an.
plt.show()