Programmieren
 
 
 
 
 
C-Grundkurs

 
 
 
 
.. Beispiel: absolute Helligkeit eines Sterns
 
 

 
 
 
 

 

Aufgabe:
Schreiben Sie eine C -Funktion absHell(), die nach der unten angegebenen Formel, aus der Entfernung eines Sterns in Lichtjahren und seiner scheinbaren Helligkeit die absolute Helligkeit berechnet. Fügen Sie ein Testprogramm für ihre Funktion bei.

Theorie:
Sterne leuchten uns unterschiedlich hell, weil sie sich in ihrer Größe voneinander unterscheiden, aber auch, weil sie unterschiedlich weit von der Erde entfernt sind. Von der Erde aus kann man die Helligkeit eines Stern feststellen. Man nennt diese Helligkeit seine 'scheinbare Helligkeit'. Aus ihr geht wegen des oben genannten Grundes jedoch nicht hervor ob der Stern groß oder klein ist. Um das festzustellen muss man seine 'absolute Helligkeit' berechnen. Diese geht davon aus, dass alle Sterne genau 10 Parsec von der Erde entfernt wären. In diesem Fall würden kleine Sterne dunkel und große hell leuchten und die Helligkeit wäre ein Maß für ihre Größe.

Formel:
Die Formel zur Berechnung der 'absoluten Helligkeit' eines Sterns lautet:



In ihr ist 'Entfernung echt' die tatsächliche Entfernung des Sterns von der Erde. Entfernung10 ist die konstante Entfernung 10 Parsec. Wird 'Entfernung echt' in Lichtjahren eingesetzt, muss Entfernung10 auch in Lichtjahren angegeben werden, wobei 1Parsec = 3,262 Lichtjahre sind. Anstelle des Logarithmus Naturalis kann auch der Logarithmus zur Basis 10 oder jeder andere Logarithmus verwendet werden, wenn er sowohl im Zähler als auch im Nenner eingesetzt wird.

 

 

 

 




// absHell.cpp
// -----------  Version 20.05.2002
//              Model: small
//              Fliesskommaemulation ein (bei SC12)
//              Schwarzer, BBS WiLu

// Berechnung der absoluten Helligkeit eines Sterns aus
// der scheinbaren Helligkeit und Entfernung. Die
// Entfernung muss in Lichtjahren angegeben sein.


// Deklarationen von Bibliotheksfunktionen
#include <stdio.h>      // für printf()
#include <math.h>       // für log10()

// Deklarationen eigener Funktionen
double absHell (double, double);

// main()
// Einstiegsfunktion des lauffähigen Programms .exe vom
// Betriebssystem aus.
// main dient hier als Testprogramm für die Benutzer-
// Funktion absHell()

void main (void)
{                       // Beispiel Polarstern
 double Entf   = 700;   // Entfernung zum Polarstern in LJ
 double S_Hell = 2.2;   // scheinbare Helligkeit Polarstern
 double A_Hell;         // Ergebnisspeicher

 // Aufruf der Funktion absHell()
 A_Hell = absHell (S_Hell, Entf);

 printf ("\r\n absolute Helligkeit = %.3fM, "
         "\r\n scheinbare Helligkeit = %.3fm"
         "\r\n Entfernung = %.0fLJ",
         A_Hell, S_Hell, Entf);
}

// absHell()
// Definition der Funktion
// Der Funktion wird die scheinbare Helligkeit eines Sterns
// so wie er am Himmel zu sehen ist und seine Entfernung
// übergeben. Sie berechnet dann seine absolute Helligkeit,
// so wie sie im Abstand von 10 Parsec Entfernung, zu
// sehen wäre. Auf diese Weise können Helligkeiten von
// Sternen miteinander verglichen werden.
double absHell (double scheinHell, double Entf_LJ)
{
 double Temp;
 Temp = Entf_LJ / 32,62; // Entfernung echt : Entfernung10
 Temp = Temp * Temp;     // zum Quadrat
 Temp = log10(Temp);     // Logarithm.z.Basis 10 vom Zähler
 Temp = Temp / 0.4;      // Zähler:log10 (5.Wurzel aus 100)
 Temp = scheinHell-Temp; // Ergebnis, absolute Helligkeit
 return (Temp);          // diese zurückgeben
}




 

 

 


Hinweise zur Lösung:

Die Funktion 'absHell()' berechnet aus der scheinbaren Helligkeit eines Sterns und seiner Entfernung zur Erde in Lichtjahren ,dessen absolute Helligkeit, die ein Maß für seine Größe ist.

Deklaration:
double absHell (double scheinbarHell, double entfernung_LJ);
diese Deklaration beinhaltet neben den Angaben, die der Compiler unbedingt benötigt auch Angaben, die ein Benutzer der Funktion gebrauchen kann, nämlich die Beschreibung der zu übergebenden Variablen. Kürzer könnte man schreiben ..
double absHell (double, double);

Übergabeparameter 1:
Der Funktion wird die scheinbare Helligkeit als doppeltgenaue Fliesskommazahl übergeben. Die scheinbare Helligkeit ist die Helligkeit, mit der man einen Stern von der Erde aus tatsächlich sieht.

Übergabeparameter 2:
Der Funktion wird die Entfernung Erde - Stern übergeben. Diese ist in Lichtjahren anzugeben.

Rückgabe:
Die Funktion gibt die absolute Helligkeit als doppeltgenaue Fliesskommazahl zurück. Die absolute Helligkeit ist die Helligkeit eines Sterns, die er in einer Entfernung von 10 Parsec (PC) = 32,62 Lichtjahren (LJ) haben würde.


Programmiertaktik:
Da die programmierte Funktion die Entfernung in Lichtjahren erwartet, wurde der konstante Ausdruck Entfernung10 auf 32,62 Lichtjahre gesetzt. Der Nenner-Ausdruck ist ebenfalls konstant und ergibt den Wert 0.4, bei Verwendung des Logarithmus zur Basis 10.


Das Testprogramm muss den Wert –4,3M als absolute Helligkeit des Polarsterns liefern. Dieser ist 700 Lichtjahre entfernt und besitzt eine scheinbare Helligkeit von 2,2m.

Nebenbei, die Sonne ist 8 Lichtminuten entfernt und besitzt eine scheinbare Helligkeit von -26,74. Berechnen Sie doch mal ihre absolute Helligkeit.





www..de