"Sternenhimmel" auf den neuesten Stand bringen

There are 611 replies in this Thread which has previously been viewed 76,330 times. The latest Post (September 28, 2024 at 6:02 AM) was by BIF.

  • Eigentlich hätte ich ja gern die *Ursache* des Absturzes gewusst. Die Abfang-Kur ist ja mehr ein Doktern an Symptomen. Dann könnte auch wieder die elegante FN-Version reaktiviert werden. Immerhin gehören die neuen Zeilen zu den meistaufgerufenen im Sternenhimmel. Statt einer Zeile jetzt vier verlangsamt das Ganze sicher spürbar.

    Arndt

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

  • Eigentlich hätte ich ja gern die *Ursache* des Absturzes gewusst. Die Abfang-Kur ist ja mehr ein Doktern an Symptomen. Dann könnte auch wieder die elegante FN-Version reaktiviert werden. Immerhin gehören die neuen Zeilen zu den meistaufgerufenen im Sternenhimmel. Statt einer Zeile jetzt vier verlangsamt das Ganze sicher spürbar.

    Arndt

    Das ist relativ schnell beantwortet.

    Liegt an Zeile

    40250 deffnac(x)=pi/2-atn(x/sqr(1-x*x))

    pi= konstante (an der liegt's nicht!)

    2 = konstante Zahl (an der liegt's auch nicht!)

    atn = arctan, der ist für alle reellen Zahlen definiert (an dem liegts also auch nicht!)

    es liegt an der Quadratwurzel

    sqr(1-x*x)


    die Wurzel ist nur für positive Zahlen definiert!

    wenn der Wert x=1, ist der Ausdruck x/sqr(1-x*x) nicht definiert weil Snoopy "Division by Zero"

    wenn der Wert x>1, dann ist der Ausdruck sqr(1-x*x) nicht definiert, weil z.B. bei x=1.1 -> sqr(1-(1.1*1.1)) =sqr(1-1,21)=sqr(-0.21).

    wenn der Wert x<-1, dann ist der Ausdruck sqr(1-x*x) nicht definiert, weil z.B. bei x=-1.1 -> sqr(1-(-1.1*-1.1)) =sqr(1-1,21)=sqr(-0.21).

    Es muss also verhindert werden, dass -1<= x =>1 (die "=" wegen Snoopy "Division by Zero" und |x| >1 wegen "illegal quantitity error".

    WIKI -Eintrag:

    Please login to see this link.Please login to see this link.)

    edit: hinter Mathematik muss eine ) , sonst geht der Link nicht!

    Bild Werte-/Definitionsbereich

    Please login to see this link.

  • wieder so ein Typo! ;(

    sollte richtig lauten:

    Es muss also verhindert werden, dass -1>= x >=1 (die "=" wegen Please login to see this link. "Division by Zero" und |x| >1 wegen "illegal quantitity error". /// rem edit -1<= x zu -1>= x

  • 40250 deffnac(x)=pi/2-atn(x/sqr(1-x*x))

    Ich muss also den ganzen Ausdruck in Zeile 180 überprüfen, denn das ist ja das Argument von FN ac(x)?!

    Kann man das weiter herunterbrechen? Welcher Wert führt denn dazu, dass die Werte 1 und -1 erreicht oder überschritten werden? Hat das was mit der Uhrzeit zu tun? (Eine Eingabe von 1:01 Uhr erzeugt *keinen* Absturz!) Oder sind es die Koordinaten? (Damit hab ich noch nicht herumprobiert.)

    Arndt

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

  • 40250 deffnac(x)=pi/2-atn(x/sqr(1-x*x))

    Ich muss also den ganzen Ausdruck in Zeile 180 überprüfen, denn das ist ja das Argument von FN ac(x)?!

    Kann man das weiter herunterbrechen? Welcher Wert führt denn dazu, dass die Werte 1 und -1 erreicht oder überschritten werden? Hat das was mit der Uhrzeit zu tun? (Eine Eingabe von 1:01 Uhr erzeugt *keinen* Absturz!) Oder sind es die Koordinaten? (Damit hab ich noch nicht herumprobiert.)

    Arndt

    Du musst -soweit ich das überblicke - nur x überprüfen. Das darf nie (-1) oder (1) sein. Das erzeugt eine Division durch 0 und dann den Fehler.

    Wenn durch Rundungen das x für TSB als (-1) oder (1) benutzt wird, dann musst du korrigierend eingreifen, um den Fehler zu vermeiden.

  • Ich muss also den ganzen Ausdruck in Zeile 180 überprüfen, denn das ist ja das Argument von FN ac(x)?!

    Auf die Schnelle seh' ich da keine andere Möglichkeit.

    175 a=(sin(de)-sb*sin(h))/(cb*cos(h))

    die Bedingung -1< a >1 muss erfüllt werden bevor das Argument der Funktion übergeben wird.

    Kann man das weiter herunterbrechen? Welcher Wert führt denn dazu, dass die Werte 1 und -1 erreicht oder überschritten werden?

    Da muss man sich alle verwendeten Variablen und Funktionen ansehen, welche Werte die annehmen können wenn sie in der Zeile 175 verwendet werden, usw. Das braucht dann doch viel Zeit mit viel Ruhe um sich das im einzelnen anzuschauen. Auf die Schnelle geht da nix.

    Hat das was mit der Uhrzeit zu tun? (Eine Eingabe von 1:01 Uhr erzeugt *keinen* Absturz!) Oder sind es die Koordinaten? (Damit hab ich noch nicht herumprobiert.)

    Nun ja, die Sterne, Planeten usw. ändern ihre Position mit der Uhrzeit. Wird wohl damit irgendwie zusammenhängen.

    in Zeile 190 wird das Ergebnis aus Zeile 175 als Argument der Funktion übergeben

    190 a=pi/2-atn(a/sqr(1-a*a)):ifsw<pithena=-a

    und dann in der Zeile 200

    200 s(s,1)=a/pi*180-360*(a<0):

    wird das Ergebnis a (aus Zeile 190) verwendet.

    Was ist denn s(s,1) ? Ort des Sterns?

  • Du musst -soweit ich das überblicke - nur x überprüfen. Das darf nie (-1) oder (1) sein. Das erzeugt eine Division durch 0 und dann den Fehler.

    Wenn durch Rundungen das x für TSB als (-1) oder (1) benutzt wird, dann musst du korrigierend eingreifen, um den Fehler zu vermeiden.

    Das wird in

    175 a=(sin(de)-sb*sin(h))/(cb*cos(h))

    180 ifa>.9999999995thena=.999999999

    185 ifa<-.9999999995thena=-.999999999

    190 a=pi/2-atn(a/sqr(1-a*a)):ifsw<pithena=-a

    ja gemacht.

    Die Frage war ja, ob das einfacher geht.

  • Die Frage war ja, ob das einfacher geht.

    Die Zeilen 180 und 185 kann man zu einer Zeile vereinfachen. Hier wie in Zeile 20:

    Please login to see this attachment.

    Man kann sich zunutze machen, dass x aufgrund der falschen Rundungen für TSB ja wie (1) ist, deswegen gibt es ja den Fehler. Man prüft ganz einfach, ob eine Zahl für TSB 1 oder -1 ist. Und mit ABS und SGN spart man sich die doppelte Überprüfung.

  • Die Zeilen 180 und 185 kann man zu einer Zeile vereinfachen. Hier wie in Zeile 20:

    Please login to see this attachment.

    Man kann sich zunutze machen, dass x aufgrund der falschen Rundungen für TSB ja wie (1) ist, deswegen gibt es ja den Fehler. Man prüft ganz einfach, ob eine Zahl für TSB 1 oder -1 ist. Und mit ABS und SGN spart man sich die doppelte Überprüfung.

    Again what learned! :thumbup:

  • AAAABER...

    wir hatten doch einen "illegal quantitity error" und keinen "Division by Zero". :sleeping:

    Deshalb war der Wert nicht (1), sondern >1! ;)

    Please login to see this attachment.

    Da geht das vielleicht aber nicht so. :tel:

  • if abs(a)=1 or abs(a)>1 then a=sgn(a)*0.99999999

    Oder auch if abs(a)>=1 then a=sgn(a)*.99999999 :smile:

    Arndt

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

  • Partielle Mondfinsternis! Pünktlich rausgucken oder "Sternenhimmel" anwerfen! :prof:

    Please login to see this link.

    Please login to see this attachment.

  • Partielle Mondfinsternis! Pünktlich rausgucken oder "Sternenhimmel" anwerfen!

    Please login to see this attachment.


    Da werde ich wohl Pech haben, morgen Bewölkung pur an meinen Standort.

    Sternenhimmel läuft trotzdem immer:D

  • Und hier wieder ein Screenshot, der zeigt, wie man Finsternisse im Planetarium erkennen kann: Bei Mondfinsternissen liegen sich Sonne und Mond diametral gegenüber (man muss allerdings wissen, dass Vollmond ist). Da das um 21:45 Uhr morgen nicht mehr der Fall ist (die Sonne ist ja schon untergegangen), nimmt man eine Uhrzeit, an der die Sonne gerade *noch* zu sehen ist und der Mond gerade *schon*. Ist morgen um 17:50 der Fall:

    Please login to see this attachment.

    Wie schon mal erwähnt, bei einer Sonnenfinsternis liegen Mond und Sonne übereinander (klar, und der Mond ist in der Neumondphase). Im StH erkennt man das daran, dass sich im Sonnenklecks ein kleiner schwarzer (nein, blauer) Punkt gebildet hat. :smile:

    Arndt

    Edit: Das Programm hab ich übrigens gemäß Post #595 upgedatet. :smile:

    GoDot C64 Image Processing
    Please login to see this link. - Please login to see this link. - Please login to see this link.
    Please login to see this link. - Please login to see this link. - Please login to see this link.

    Edited 3 times, last by GoDot (October 27, 2023 at 10:18 PM).

  • Ich hab mal 2025 die partielle Sonnenfinsternis eingegeben, den Punkt kann man gut erkennen.


    Please login to see this attachment.        Please login to see this attachment.