BBP-Formel

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von FloFuchs.

    Erstmal vorweg, ich habe Google benutzt. Ich habe auch eine Implementierung der BBP-Formel in vb.net gefunden, allerdigns weiß ich nicht wie ich damit nur eine bestimmte Stelle von pi ausrechnen kann. Ich bekomme immer nur Pi auf ca. 15 Stellen ausgespuckt... Langsam gibt Google auch nichts mehr her, deswegen frage ich mal euch... Wie kann man mithilfe der BBP-Formel eine bestimmte Stelle von pi ausrechnen (z.B. die 99ste) ?

    Ich habe diese Implementierung gefunden:

    VB.NET-Quellcode

    1. Public Function GetPI() As Double
    2. Dim PI As Double = 0
    3. For i As Integer = 0 To 100
    4. PI += 1 / Math.Pow(16, i) * (4 / ((8 * i) + 1) - 2 / ((8 * i) + 4) - 1 / ((8 * i) + 5) - 1 / ((8 * i) + 6))
    5. Next
    6. Return PI
    7. End Function


    Ergebnis: 3,14.......
    auch wenn ich die for-schleife verändere, ich bekomme nie eine einzelne Ziffer, sondern immer 3,14.....
    Aber gerade dafür ist doch die BBP-Formel bekannt, dass man ohne Kenntnis der vorherigen Ziffern eine einzelne Ziffer von pi berechnen kann ?
    Es geht mir ja nicht darum, dass ein Datentyp seine Grenzen hat, sondern darum dass ich nur eine bestimmte Ziffer brauche, ohne die vorherigen zu kennen. Der Code den ich oben gepostet habe spuckt mir aber die komplette PI (bis zur Grenze von double) aus... Ich will einfach z.B. die 99ste Stelle von PI berechnen, ohne die vorherigen berechnen zu müssen...
    Nein! Das kannst du so ohne weiteres nicht machen, da es eine dezimale Zahl ist und du das Ergebnis von PI nur annähern kannst, dafür benötigst du aber die vorherigen Ergebnisse damit du noch näher ran kommst.
    Aber evtl. wäre das etwas für dich: wolframalpha.com/input/?i=Pi
    ich glaube auch, dass die eine Api haben...musst du mal gucken. Dann brauchst du nicht rechnen, sondern lässt andere rechnen.
    normalerweise werden die vorherigen Stellen benötigt, das weiß ich. Aber bei der BBP-Formel eben nicht ! :D

    Das Erstaunliche an dieser speziellen Formel ist, dass man mit ein wenig Umstellen einen Algorithmus daraus ableiten kann, der eine beliebige Ziffer der Darstellung von \pi im Hexadezimalsystem bestimmen kann, ohne die vorherigen Ziffern zu benötigen (Ziffer-Extraktion).
    (Wikipedia)
    DU wenn du doch schon auf der Wikipedia Seite warst...
    de.wikipedia.org/wiki/Bailey-Borwein-Plouffe-Formel
    da steht doch ganz klar wie man die einzelne Stelle darstellt!
    DeineStelleWert=(10hoch(DeineStellePosition-1)*Pi mod 1) * 10
    ändert nix daran, dass du dann Pi mal mindestens bis zu dieser Stelle vorher bestimmt haben musst ;)
    sprich wenn in deinem Programm PI nur bis 3,14 vorliegt wirst du mit der Formel nich die 10. Nachkommastelle bestimmen können ;)

    FloFuchs schrieb:

    DU wenn du doch schon auf der Wikipedia Seite warst...
    de.wikipedia.org/wiki/Bailey-Borwein-Plouffe-Formel
    da steht doch ganz klar wie man die einzelne Stelle darstellt!
    DeineStelleWert=(10hoch(DeineStellePosition-1)*Pi mod 1) * 10
    ändert nix daran, dass du dann Pi mal mindestens bis zu dieser Stelle vorher bestimmt haben musst ;)
    sprich wenn in deinem Programm PI nur bis 3,14 vorliegt wirst du mit der Formel nich die 10. Nachkommastelle bestimmen können ;)



    mithilfe der BBP-formel aber schon, schau mal hier: unet.univie.ac.at/~a8727063/Science/BBP/
    Du musst mich nich zitieren, wenn ich direkt über dir schreibe, schon garnich 2x!!!
    Und dein Problem verstehe ich immer noch nicht!
    Du hast zwei Internetseiten, wo haarklein steht was du machen sollst. Auf Deiner Seite sogar mit mehreren Programmierbeispielen.
    Wenn du möchtest das Dir das jemand in VB übersetzt solltest du deine Frage im Markplatz posten.
    Ansonsten solltest du anfangen die von dir rausgesuchte Seite zu verstehen.
    Das is Mathematik, nich ganz so trivial.. aber wenn man sich was damit beschäftigt erlernbar. Have fun =)
    Wenn du dann die ersten Zeilen Code hast mit Fehlermeldungen fragste wieder.
    das 2 mal zitiert war ja wohl kaum absichtlich.
    und ich hätte auch nicht gefragt, wenn ich den inhalt dieser seite verstehen würde. ich hab mich damit schon beschäftigt, aber für einen 16jährigen ist das dann doch etwas zu hoch.
    Dann muss ich dir eine traurige MItteilung machen.. Wenn du das ganze mathematisch nicht begreifen kannst, wirst du es unmöglich programmieren können.
    NIx für ungut. Warum willst du das überhaupt?
    Für ein erstes Programm solltest du mal hier im Forum schauen, da gibt es bessere Wege.
    Ansonsten erst mal ein Buch lesen:
    microsoft.com/germany/msdn/akt…005dasentwicklerbuch.mspx
    als Einstieg ins Programmieren.
    ODer mal hier schauen:
    [Sammlung] Programmieren, aber was? (Programmideen)
    Ansonsten.. das reine NAchrechnen von i-welchen PI stellen ganz hinten, ist ja nu auch nix dolles... wenn du deine Seite liest... für wirklich weit entfernete Stellen brauchst du schon mehrere TAge rechenzeit un dann hast du immer noch eine Unsicherheit beim Ergebnis.

    juli90 schrieb:

    aber für einen 16jährigen ist das dann doch etwas zu hoch.

    Oder Du programmierst Sudoku. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!