Seite 1 von 3

aktelle Werte in einer while schleife ausgeben

Verfasst: Dienstag 7. Oktober 2014, 18:41
von plotxy
Ich möchte die eulersche zahl auf n stellen berechnen und habe damit noch bis nächsten mittwoch zeit. Da die berechnung sehr lange dauert fange ich morgen an mein script auszuführen. Doch die eigentliche Gretchenfrage ist wie, ob ich währen der Berechnung die aktuellen Werte auslesen kann, gesetzt dem Fall, dass der Rechenknecht bis dahin nicht fertig wird ...

Danke schon mal im Voraus für hilfreiche antworten.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Dienstag 7. Oktober 2014, 18:58
von EyDu
Hallo und willkommen im Forum!

Ich würde einfach ab und zu, wie häufig musst du selbst entscheiden, das Zwischenergebnis in eine Datei schreiben. Dazu vielleicht noch alle anderen Werte, welche zur Fortsetzung benötigt werden. Dann überstehst du auch einen Stromausfall oder einen Absturz.

Wie viele Stellen sollst du denn bestimmen und warum machst du das in Python? Wenn es wirklich so lange dauert, dann hätte ich C oder C++ bemüht. Falls du es noch nicht getan haben solltest, dann wirf noch einen Blick auf PyPy und Cython. Damit lässt sich für sehr wenig Aufwand sehr viel Zeit sparen.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Dienstag 7. Oktober 2014, 19:18
von plotxy
ich mache es in python, weil ich da mit der lib mpmath eine hinreichende Genauigkeit erreichen kann. 1 mio stellen wäre schon gut. Aber der Flaschenhals ist der Speicher.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Dienstag 7. Oktober 2014, 20:25
von EyDu
GNU MP kennst du? Ich würde mal davon ausgehen, dass das deutlich performanter ist als die Pure-Python-Lösung von mpmath. Für GNU MP gibt es mit GMPY auch eine Python-Schnittstelle.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Dienstag 7. Oktober 2014, 21:12
von plotxy
Also was genau soll ich jetzt machen ? einfach gmpy installieren ? und was ist mit pypy oder cython ?

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Dienstag 7. Oktober 2014, 22:58
von EyDu
Wenn du dein Programm schon fertig geschrieben hast, dann würde ich es einfach mit PyPy starten. Das läuft dann wahrscheinlich deutlich schneller als mit dem Standardinterpreter. Dann musst du nicht ganz so lange warten. In GMPY oder Cython würde ich mich an deiner Stelle nur einarbeiten, wenn du noch mehr solcher intensiver Berechnungen machen musst. Sonst lohnt sich der ganze Aufwand wohl nicht.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 08:13
von plotxy
Also wenn ich den code bei pypy reinhacke ist die Bibliothek mpmath unbekannt. Aber danke schon mal für deine Hilfe.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 08:17
von EyDu
Du musst mpmath noch für PyPy installieren.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 08:33
von Sirius3
Ich hab mal die Eulerzahl auf eine Million Stellen berechnet. Mit reinem Python hat's bei mir ~15min gedauert.
Die ersten paar Ziffern sind 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 09:01
von plotxy
Ah, das habe ich mir schon fast gedacht ... danke.
Also bei mir hat er für 200000 stellen 40 min gebraucht. Wie hast du das mit der Genauigkeit gelöst ?

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 09:20
von Sirius3
@plotxy: ich habe jetzt keine genaue Fehlerrechnung gemacht, sondern einfach ein paar hundert Stellen mehr berechnet und dann gerundet. Mathematica scheint sich in den letzten paar Stellen auch immer etwas großzügig zu zeigen. (braucht übrigens für die selbe Aufgabe nur 2 Sekunden).

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 09:44
von plotxy
@Sirius3 bis welche Fakultät hast du es denn laufen lassen ? Oder hast du eine andere Berechnungsformel genommen ?

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 09:44
von Sirius3
205211!

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 10:00
von plotxy
Und Genauigkeit 1 mio ? Woher wusstest du, dass du es bis 200000! Laufen lassen musstest ?

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 10:56
von Sirius3
Wußte ich nicht; kam aus der Rechnung raus.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 11:20
von plotxy
Warum ist es bei dir so krass schneller ?

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 11:39
von EyDu
Wie sieht denn dein bisheriger Code aus? Welches Verfahren verwendest du? Wenn ich ins Blaue tippen sollte würde ich vermuten, dass du bei jedem Durchlauf die Fakultät neu berechnest und nicht vom vorherigen Wert weiterrechnest.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 12:13
von Sirius3
Ich bin ja auch blöd. Divisionen dauern naturgemäß viel länger als Multiplikationen. Jetzt bin ich bei gut 4 Minuten.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 12:14
von plotxy
Ich poste den code nachher mal. Bin noch in der Schule. Ich habe das Taylor verfahren benutzt und die Fakultät nicht immer neu berechnet. Ich habe Python 3.4 mit der lib mpmath.

Re: aktelle Werte in einer while schleife ausgeben

Verfasst: Mittwoch 8. Oktober 2014, 13:45
von EyDu
Mein altes Notebook rödelt auch in recht genau vier Minuten durch. PyPy machts in drei.