&[fertig] Pi Berechnung von campweb auf 1000101 Dezimalstellen in C++

  • Das sollte jetzt passen:

    [autoit]


    $pi = 0
    For $k = 1 To 100000 Step 2
    $pi += 1 / $k^2
    Next
    ConsoleWrite(Sqrt($pi) * Sqrt(8) & @CRLF)

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Oder auch so.

    [autoit]


    $ergebnis = 0
    for $x = 1 To 999999 Step 2
    $ergebnis = $ergebnis + 1/($x*$x)
    Next
    MsgBox(64, "", Sqrt($ergebnis*8))

    [/autoit]

    edit: ouh ya :D endlich mal vor misterspeed ;D

  • Leonhard Euler führte in seiner im Jahre 1748 erschienenen Introductio in Analysin Infinitorum im ersten Bande π bereits auf 148 Stellen genau an. Von Euler entdeckte Formeln (s. auch riemannsche ζ-Funktion:(
    [Blockierte Grafik: http://upload.wikimedia.org/math/c/3/2/c329cfc147a39ff10ec663227f3d493b.png]

    So lautet die korrekte Formel. Im Startposting steht was völlig anders...

    Würde dann in Autoit so ausschaun:

    [autoit]


    $teilergebnis = 0
    For $x = 1 To 99999 Step 2
    $teilergebnis = $teilergebnis + (1/($x^2))
    Next
    MsgBox(0,"", Sqrt($teilergebnis * 8) )

    [/autoit]

    EDIT: waren wohl einige schneller...

  • =====GESCHLOSSEN=====

    Ich hab mir jetzt eine Berechnung in C++ geschrieben, die auf 1000101 Dezimalstellen berechnet!
    Wird wohl so 15 Stunden dauern!
    Wer sich für das Programm interessiert, PN an mich.

  • Zitat

    =====GESCHLOSSEN=====

    Ich hab mir jetzt eine Berechnung in C++ geschrieben, die auf 1000101 Dezimalstellen berechnet!
    Wird wohl so 15 Stunden dauern!
    Wer sich für das Programm interessiert, PN an mich.

    Die Bailey - Borwein - Plouffe - Formel berechnet die nte Dezimalziffer (und auch noch weitere folgende) von Pi. Seit dieser Formel müssen dazu die vorausgehenden Stellen nicht mehr ermittelt werden, was das Verfahren letztendlich zur ultimativen Berechnung von Pi per Computer erhebt!

  • Wenn ich die ganzen Dezi´s aber haben will!!! :cursing:

    Können wir dieses Thema jetzt mal abhacken? Ja. Gute Nacht noch.

  • Wenn ich die ganzen Dezi´s aber haben will!!! :cursing:

    Können wir dieses Thema jetzt mal abhacken? Ja. Gute Nacht noch.

    Bekommst du doch auch.

    Andy:
    Hab mal die BBP Folge verwendet:

    [autoit]

    $Pi = 0
    For $i = 0 To 10000000
    $Pi += (1/16^$i) * ((4/(8 * $i + 1)) - (2/(8 * $i + 4)) - (1/(8 * $i + 5)) - (1/(8 * $i + 6)))
    Next

    [/autoit]

    Frage ist jedoch, warum AutoIt nicht über 12 Nachkommastellen hinausgeht, obwohl ich ja eig. eine höhere maximale Zahl angegeben hab, naja ich schreib mal eine DLL.

  • Die vorgeschlagene Formel liefert wie deine auch die Zahl Pi inklusive der gewünschten Dezimalstellen. Der Vorteil der Formel ist aber, dass diese umgeformt werden kann um eine bestimmte Dezimalstelle zu erhalten. Dadurch ist man nicht abhängig vom Datentyp, was ja in Autoit dazu führt, dass standardmässig nur 14 (?) Stellen angezeigt werden. Mit dieser Formel wäre es möglich jede Zahl in einem String zu speichern und als Ergebnis dann eine Stringkette auszugeben was eine Darstellung von deutlich mehr Stellen erlaubt (keine Ahnung wieviele Zeichen eine Variable enthalten darf). Ansonsten müsstest du in Autoit wie schon anfangs erwähnt wurde die bignum.au3 verwenden. Auch in C++ wirst du vermutlich irgendwann an die Grenzen des Datentyps stossen.

    Siehe auch hier: http://de.wikipedia.org/wiki/Bailey-Bo…BBP-Algorithmus

    @ Pinguin: Weil du die Formel nicht benutzt um die einzelnen Stellen zu erhalten und Autoit nunmal nicht mehr Nachkomma Stellen darstellen kann. Siehe wikipedia Artikel, da ist erklärt wie man die Formel nutzt und die Zahlen dann einzeln erhält um sie z.B. in einem String zwischenzuspeichern.

  • Pinguin
    wg BBP, der "passende" Link mit Beispiel für den Nutzen ist das hier.
    Gerade im unteren Teil ist auch eine feine kurze (superschnelle) Variante gezeigt, um MODULO sehr großer Zahlen per Binärrechnung in einer Handvoll Rechenschritten zu machen, was die Sache extrem beschleunigt.(bin mir nicht sicher, aber eukalyptus hat das m.E. sogar in der BigInt.udf so gemacht)
    Der Witz ist nämlich an der BBP-Methode, dass die Berechnung der n-ten Dezimalstelle gewissermassen als "Abfall" noch einige weitere Dezimalstellen liefert. Und die weiteren Dezimalstellen sind dann mit einer kleinen Veränderung an der Rechenmatrix zu erhalten, OHNE den kompletten Algorithmus nochmal durchzulaufen!

    Zitat von campweb

    Wenn ich die ganzen Dezi´s aber haben will!!!
    Können wir dieses Thema jetzt mal abhacken? Ja. Gute Nacht noch.

    naja, Ignoranz gepaart mit extrem schmaler geistiger Bandbreite führt genau dazu:

    Zitat von campweb

    Endlich 100104 Stellen in 4 Stunden af meinem Pentium-Dual Core mit Hilfe von Delphi.

    Ich hab die 100104 Stellen selbst auf einem 1,2Ghz-PIII in nicht mal 10 Sec. erhalten! Incl. schreiben in eine Datei...mit Hilfe von Opera 10.63. Hat in etwa genausoviel mit AutoIt zu tun wie Delphi. Ist aber wesetlich schneller im Ergebnis! :rofl: