"guter" Algorithmus zur Berechnung der Sonnenpos.

Status
Es sind keine weiteren Antworten möglich.

mommermi

Aktives Mitglied
Hallo!

Ich bin auf der Suche nach einem Algorithmus zur Berechnung der Sonnenposition mit einer Genauigkeit von etwa 1' (weniger gehen aber auch :-) ). Ich habe schon verschiedenste ausprobiert, die aber leider sehr ungenau waren.
Hat jemand einen Tip?

Gruß
Michael
 
Hallo Michael,

Jean Meeus gibt in seinem Buch "Astronomical Algotithms" auf Seite 154 ff den gewuenschten Algorithmus an. Er berechnet die Position der Sonne innerhalb
der Jahre 1 bis 2800 mit einer Genauigkeit von 2.2" (Bogensekunden) und innerhalb von -4000 bis +8000 mit einer Genauigkeit von 3.2" . Das sollte ausreichen.

Ausserdem gibt er auch die Formeln fuer Praezession, Nutation, Planetenaberration, topozentrische Korrektur usw an. Die sind notwendig um Sonne tatsaechlich
mit dieser Genauigkeit am Himmel in Bezug auf einen Koordinatensystem oder Referenzpunkt zu finden!

Peter
 
Hallo Peter,

danke für deinen Tipp. Ich kenne das Buch zwar ... hatte es aber ganz vergessen?! <img src="/phpapps/ubbthreads/images/icons/crazy.gif" alt="" />

Gruß
Michael
 
Hi,

auf meiner Homepage kannst du dir ein Sonnenpositionsberechnungsprogram (Sonne.exe) runterladen. Den Algorithmuas (von Jean Meeus) gebe ich hier gleich mit.

{Bahnst”rungen durch Venus, Mars, Jupiter und Saturn sowie durch den Mond}
PROCEDURE STOERUNG;
VAR g2,g4,g5,g6,d,a,u: REAL;

BEGIN
g2:=212.45+58517.493*t; {Venusst”rung}
g4:=319.58+19139.977*t; {Marsst”rung}
g5:=225.28+ 3034.583*t+0.36111*SIN(RAD(133.775+39.804*t)); {Jupiterst”rung}
g6:=175.60+ 1221.794*t; {Saturnst”rung}
d :=350.737486+445267.114217*t-0.00144*t*t; d:=RAD(d); {Mondst”rung}
a :=296.104608+477198.849108*t; a:=RAD(a);
u := 11.250889+483202.02515*t; u:=RAD(u);

ll:= 1343.9*COS(RAD(299.102+g2-mas)) + 32.2*COS(RAD(148.9+2*g2-mas));
ll:=ll+1535.0*COS(RAD(148.313+2*g2-2*mas))+693.6*COS(RAD(315.943+2*g2-3*mas));
ll:=ll+ 433.1*COS(RAD(345.253+3*g2-4*mas))+185.0*COS(RAD(177.71+3*g2-3*mas));
ll:=ll+ 284.4*COS(RAD(318.15+3*g2-5*mas)) + 58.3*COS(RAD(206.2+4*g2-4*mas));
ll:=ll+ 40.0*COS(RAD(195.4+4*g2-5*mas)) + 42.2*COS(RAD(343.8+4*g2-6*mas));
ll:=ll+ 34.2*COS(RAD(195.3+5*g2-7*mas)) + 42.8*COS(RAD(359.6+5*g2-8*mas));

ll:=ll+567.5*COS(RAD(343.888-2*g4+2*mas)) +491.7*COS(RAD(200.402-2*g4+mas));
ll:=ll+ 75.8*COS(RAD(217.7-g4+mas)) + 35.8*COS(RAD(294.2-3*g4+3*mas));
ll:=ll+118.1*COS(RAD(338.88-3*g4+2*mas)) +138.9*COS(RAD(105.18-4*g4+3*mas));
ll:=ll+162.5*COS(RAD(334.06-4*g4+2*mas)) + 56.7*COS(RAD(100.8-5*g4+3*mas));
ll:=ll+ 42.8*COS(RAD(227.4-6*g4+4*mas)) + 28.1*COS(RAD(96.3-6*g4+3*mas));
ll:=ll+ 29.4*COS(RAD(222.7-7*g4+4*mas));

ll:=ll+2002.2*COS(RAD(179.532-g5+mas)) +722.2*COS(RAD(263.217-g5));
ll:=ll+ 758.6*COS(RAD(87.145-2*g5+2*mas))+447.2*COS(RAD(109.493-2*g5+mas));;
ll:=ll+ 45.3*COS(RAD(198.6-g5+2*mas)) + 45.6*COS(RAD(170.5-3*g5+3*mas));
ll:=ll+ 154.4*COS(RAD(82.65-3*g5+2*mas)) + 58.3*COS(RAD(98.5-3*g5+mas));

ll:=ll+116.4*COS(RAD(100.58-g6+mas)) + 88.9*COS(RAD(269.46-g6));
ll:=ll+ 30.0*COS(RAD(290.6-2*g6+2*mas)) + 31.1*COS(RAD(293.6-2*g6+mas));

ll:=ll+1792.8*SIN(d)+49.2*SIN(d+a)-117.8*SIN(d-a)+47.8*SIN(d-RAD(mas));

rs:= 5432*COS(RAD(209.08+g2-mas)) +15754*COS(RAD(58.318+2*g2-2*mas));
rs:=rs+ 368*COS(RAD(58.4+2*g2-mas)) + 2001*COS(RAD(226.7+2*g2-3*mas));
rs:=rs+2406*COS(RAD(87.57+3*g2-3*mas))+ 3447*COS(RAD(255.25+3*g2-4*mas));
rs:=rs+ 447*COS(RAD(49.5+3*g2-5*mas)) + 866*COS(RAD(116.28+4*g2-4*mas));
rs:=rs+451*COS(RAD(105.2+4*g2-5*mas)) + 375*COS(RAD(145.4+5*g2-5*mas));
rs:=rs+325*COS(RAD(105.4+5*g2-7*mas));

rs:=rs+4736*COS(RAD(253.828-2*g4+2*mas)) + 345*COS(RAD(127.7-g4+mas));
rs:=rs+ 348*COS(RAD(295-2*g4+mas)) + 387*COS(RAD(203.5-3*g4+3*mas));
rs:=rs+ 495*COS(RAD(249-3*g4+2*mas)) +1101*COS(RAD(15.17-4*g4+3*mas));
rs:=rs+ 242*COS(RAD(65.9-4*g4+2*mas)) + 246*COS(RAD(324.6-5*g4+4*mas));
rs:=rs+320*COS(RAD(137.3-6*g4+4*mas));

rs:=rs+16272*COS(RAD(89.545-g5+mas)) +9270*COS(RAD(357.108-2*g5+2*mas));
rs:=rs+ 479*COS(RAD(112-g5+2*mas)) + 562*COS(RAD(338.6-g5));
rs:=rs+ 237*COS(RAD(350.5-2*g5+3*mas))+3359*COS(RAD(19.467-2*g5+mas));
rs:=rs+ 647*COS(RAD(81.2-3*g5+3*mas)) +1849*COS(RAD(352.56-3*g5+2*mas));
rs:=rs+ 401*COS(RAD(8.6-3*g5+mas)) + 260*COS(RAD(347.7-4*g5+2*mas));

rs:=rs+988*COS(RAD(10.6-g6+mas)) +373*COS(RAD(200.6-2*g6+2*mas));
rs:=rs+258*COS(RAD(203.1-2*g6+mas));

rs:=rs+30763*COS(d)+852*COS(d+a)-3062*COS(d-a)-322*COS(d+RAD(mas))+829*COS(d-RAD(mas));

ekl_breite:=0.576*SIN(RAD(u))-0.21*COS(RAD(151.8+3*g2-4*mas))-0.166*COS(RAD(265.5-2*g5+mas));
ekl_breite:=ekl_breite/3600;
ekl_breite:=RAD(ekl_breite);
END; {STOERUNG}

PROCEDURE GEOZ_EKL_KOORD;
BEGIN
mls:=279.6966778+36000.768925*t+0.0003025*t*t+5.61e-5*SIN(RAD(315.6+893.3*t));
WINKEL360(mls);
mas:=358.4758333+35999.04975*t-0.00015*t*t;
WINKEL360(mas);
exzentrizitaet:=0.01675104-418e-7*t-126e-9*t*t;
dlp:=0.001778*SIN(RAD(231.19+20.2*t))+(5228e-7-444e-8*t)*SIN(RAD(57.24+150.27*t))+7.39e-5*SIN(RAD(31.8+119*t));
mas:=mas+dlp;
mls:=mls+dlp;
dl:=(1.9194603-0.0047889*t-14e-6*t*t)*SIN(RAD(mas))+(0.0200939-1e-4*t)*SIN(RAD(2*mas))+(293e-6*t)*SIN(RAD(3*mas));
ekl_laenge:=mls+dl;
v:=mas+dl;
v:=RAD(v);
radius:=1.0000002*(1-exzentrizitaet*exzentrizitaet)/(1+exzentrizitaet*COS(v));
STOERUNG; {Berechnet die Bahnst”hrungen durch Planeten und Mond}
ekl_laenge:=ekl_laenge+1e-6*ll;
IF ABS(ekl_laenge) > 360 THEN ekl_laenge:=ekl_laenge-360*SGN(ekl_laenge);
radius:=radius+1e-9*rs;
mls:=RAD(mls);
t1:=t-1;
NutationConst(t1, dphi, deps);
e_laenge:=ekl_laenge-0.0056932+DEG(dphi);
ekl_laenge:=RAD(ekl_laenge);
e_laenge:=RAD(e_laenge);
ekl:=ekliptikschiefe+deps;
END; {GEOZ_EKL_KOORD}

PROCEDURE PARALLAXE_DURCHMESSER;
BEGIN
parallaxe:=ASN(0.000042635/radius);
parallaxe:=DEG(parallaxe)*3600;
sdsonne:=ASN(4.65247E-3/radius){+RAD(4.3e-4)};
END; {PARALLAXE_DURCHMESSER}

PROCEDURE GEOZ_AEQU_KOORD;
VAR aa,bb: REAL;

BEGIN
deklination:=ASN(SIN(ekliptikschiefe)*COS(ekl_breite)*SIN(ekl_laenge)+COS(ekliptikschiefe)*SIN(ekl_breite));
aa:=COS(ekl_breite)*COS(ekl_laenge)/COS(deklination);
bb:=(COS(ekliptikschiefe)*COS(ekl_breite)*SIN(ekl_laenge)-SIN(ekliptikschiefe)*SIN(ekl_breite))/COS(deklination);
rektaszension:=ACS(aa);
IF bb < 0 THEN rektaszension:=2*PI-rektaszension;
IF rektaszension < 0 THEN rektaszension:=2*PI+rektaszension;
dekl:=ASN(SIN(ekl)*COS(ekl_breite)*SIN(e_laenge)+COS(ekl)*SIN(ekl_breite));
aa:=COS(ekl_breite)*COS(e_laenge)/COS(dekl);
bb:=(COS(ekl)*COS(ekl_breite)*SIN(e_laenge)-SIN(ekl)*SIN(ekl_breite))/COS(dekl);
rekt:=ACS(aa);
IF bb < 0 THEN rekt:=2*PI-rekt;
IF rekt< 0 THEN rekt:=2*PI+rekt;
x:=radius*COS(ekl_laenge); {Rechtwinklige geozentrische Koordinaten in AE}
y:=radius*SIN(ekl_laenge)*COS(ekliptikschiefe);
z:=radius*SIN(ekl_laenge)*SIN(ekliptikschiefe);
END; {GEOZ_AEQU_KKORD}

Gruß

Lots
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben