Sonnestandsberechnung... Ich komm nicht weiter =(

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 24. Juni 2008, 12:31

tan dürfte der Tangens sein! tan^2 ist dann wohl das Quadrat davon.
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Dienstag 24. Juni 2008, 13:24

Ja mich hat das nur irritiert, da wir - schulisch - das Quadrat immernoch nach den Term schreiben. Man schreibt ja auch 2² und nicht ²2, oder?

Andere Sache: Ich will nur die Stunden und Minuten vom aktuellen Tag haben - ausgehend vom Timestamp. Jemand eine Idee? Das Teilen durch 86400 erscheint mir sinnvoll, gibt mir aber nur ~ 14.000 Sekunden zurück was gerade 3 Stunden sind?

MfG
Iopodx
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 24. Juni 2008, 13:44

Korrekterweise schreib man (tan(x))^2.
In der Praxis ist oft in einer Formel klar, welches die Argumente fuer die trigonometrischen Funktionen sind, sodass man die Klammern um das Argument weg laesst, also tan x schreibt. tan x^2 ohne Klammern hiesse ja aber eigentlich tan (x^2), also schreibt man das Quadrat an den Tangens dran. Eigentlich eine bloede Notation, aber unheimlich praktisch.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 24. Juni 2008, 14:26

Iopodx hat geschrieben:Andere Sache: Ich will nur die Stunden und Minuten vom aktuellen Tag haben - ausgehend vom Timestamp. Jemand eine Idee? Das Teilen durch 86400 erscheint mir sinnvoll, gibt mir aber nur ~ 14.000 Sekunden zurück was gerade 3 Stunden sind?

Code: Alles auswählen

>>> import datetime
>>> datetime.datetime.now().hour
15
>>> datetime.datetime.now().minute
26
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Dienstag 24. Juni 2008, 14:47

Fein - kein Mensch hat's gewollt - aber es funktioniert =)

Ich bin so frei:

Code: Alles auswählen

# -*- coding: cp1252 -*-
import math, time, datetime

def sonnenstand():
    geobreite = 50.83333
    geolaenge = 12.91667
    

    # 01.01.2000 12:00 war 946724400.0 (Timestamp)
    
    n = time.time() - 946724400.0

    n = n/86400.0

    L = 280.46  + 0.9856474 * n
    
    g = 357.528 + 0.9856003 * n

    d = L + 1.915 * math.sin(math.radians(g)) + 0.02 * math.sin(math.radians(2*g))

    e = 23.439 - 0.0000004 * n

    DELTA = math.degrees(math.asin(math.sin(math.radians(e)) * math.sin(math.radians(d))))

    ALPHA = math.atan((math.cos(math.radians(e)) * math.sin(math.radians(d))) / math.cos(math.radians(d)))

    ALPHA = math.degrees(ALPHA)

    if ALPHA < 0:
        ALPHA = ALPHA + 180

    # Azimut berechnen
    
    JD0 = 2451545 + n

    T0 = (JD0 - 2451545.0) / 36525

    T = datetime.datetime.utcnow().hour + datetime.datetime.utcnow().minute / 60

    D   = 6.697376 + 2400.05134 * T0 + 1.002738 * T

    Rg = D * 15

    R = (Rg + 11.6) % 360

    r = (R - ALPHA) % 360

    ZAEHLER = math.sin(math.radians(r))

    NENNER  = math.cos(math.radians(r)) * math.sin(math.radians(geobreite)) - \
              math.tan(math.radians(DELTA)) * math.cos(math.radians(geobreite))
    
    return math.degrees(math.atan(ZAEHLER/NENNER))

print sonnenstand()
Vielleicht braucht's ja mal wer ;)

MfG
Iopodx
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 24. Juni 2008, 14:54

Zeile 39 ist so sicher falsch.

Der zweite Summand liefert immer 0, weil du eine Ganzzahl <60 durch 60 dividierst. Korrektur:

Code: Alles auswählen

datetime.datetime.utcnow().minute / 60.0
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Dienstag 24. Juni 2008, 15:01

Danke! Ich hab mich schon gewundert warum bei mir alles rund eine Stunde verschoben ist... Bei 15:59 kein Wunder!

Jetzt beträgt die Abweichung 5° zu http://www.infraroth.de/index.html?nav_ ... ziele.html... Mal schauen - wenn das immer 5° sind, dann kann man das ja einbeziehen. Ansonsten such ich mal den Fehler...

MfG
Iopodx

Edit://

Zu http://www.srrb.noaa.gov/highlights/sunrise/azel.html

Hab ich nur Abweichungen von rund 3.5°

Interessant wie Unterschiedlich die Berechnungen doch sind ;)
Antworten