Die Community zu .NET und Classic VB.
Menü

Pi berechnen

 von 

Über Pi  

Pi ist eine Naturkonstante, die einem immer wieder bei Kreisberechnungen über den Weg läuft. Das Interessante an Pi ist, dass Pi irrational ist, was bedeutet, dass die Zahl unendlich viele Nachkommastellen hat, die sich nicht periodisch wiederholen. Man nennt Pi wie auch die Euler'sche Zahl e sogar transzendent, weil man sie nicht als Wurzeln schreiben kann. Pi lässt sich auch nicht direkt berechnen, sondern nur zwischen zwei Zahlen einschachteln.

Die Berechnung von Pi ist nur mathematisch interessant und eine Spielerei, die schon die antiken Griechen faszinierte; letzten Endes ist es immer sinnvoller einen definierten Näherungswert als Konstante zu nehmen, als Pi auszurechnen. Dennoch ist es interessant, sich klar zu machen, wie man Pi berechnen kann.

Berechnung von Pi mit Hilfe von Vielecken  

Wie schon gesagt gibt es keine direkte Formel zum Berechnen von Pi. Man kann Pi nur zwischen zwei Zahlen einschachteln. Die einfachste Möglichkeit ist, dass man in und um den Kreis ein Quadrat zeichnet, wie es einst Archimedes getan hat:


Abbildung 1: der Kreis kann auf Grund von optischen Täuschungen verzerrt vorkommen

Der Flächeninhalt des äußeren Quadrates ist (2r)2 = 4r2, da jede Seite die 2fache Länge des Radius' r hat. Der Flächeninhalt des inneren Quadrats lässt sich mit Hilfe der blauen Diagonale ausrechnen: Diese unterteilt das Viereck in zwei gleichschenklige Dreiecke, deren Flächeninhalt sich mit der Formel ausrechnen lässt. Dabei ist g die blaue Linie, die 2r lang ist, und h die Höhe von 1r. Damit lässt sich folgendes ausrechnen:

Und damit

Der Kreis liegt zwischen den beiden Quadraten, somit liegt auch der Flächeninhalt dazwischen. Es gilt also

Der Mittelwert besagt also

Da für Flächeninhalte von Kreisen gilt, können wir schließen, dass ist.

Dieses Verfahren lässt sich ausbauen, indem man Vielecke mit mehr Ecken nimmt, so dass man immer näher an den Kreis kommt und die Einschachtelung immer genauer wird. Allerdings wird das, was beim Quadrat und auch noch beim Sechseck relativ simpel war, bei 96-Ecken ziemlich unüberschaubar, was Archimedes aber nicht davon abgehalten hat, es damit auszurechnen.

Wenn man Archimedes' Verfahren in Visual Basic nachkonstruieren möchte, nimmt man am besten immer 2x-Ecke, weil man hier äußerst bequem inneren und äußeren Flächeninhalt ausrechnen kann. Umgesetzt sieht das dann so aus:

' Erstellt Pi aufgrund des Archimedes-Verfahren
' mit einem 2 ^ 26 Eck.
Private Function Pi() As Double
    Dim a       As Double
    Dim b       As Double
    
    a = 2 * Sqr(3)
    b = 3
    
    Do Until a = b
        a = 2 * a * b / (a + b)
        b = Sqr(a * b)
    Loop
    
    Pi = a
    
End Function

Listing 1

Diese Version läuft so optimiert in Visual Basic sehr schnell, auch wenn man sich klar machen sollte, dass hierbei ein 226-Eck ausgerechnet wird, sprich ein 402.653.184 Eck. Was für den Computer kein Problem ist, ist für uns eben nicht immer ganz so leicht...

Berechnung mit der Streifenmethode  

Eine andere Methode ist es, keine Vielecke in Kreise zu konstruieren, sondern anhand von Streifen vorgeht:

Man unterteilt einen Viertelkreis in verschieden viele Streifenpaare, je mehr Streifenpaare man nimmt, desto genauer wird später der Näherungswert von Pi. Der erste Streifen geht von dem Boden des Viertelkreises so hoch, bis er mit der ersten Ecke den Kreis berührt. Der äußere Streifen geht von dem Boden des Viertelkreises so hoch, dass die zweite Ecke gerade noch den Kreis berührt. Das Ganze sollte dann so aussehen (die schrägen roten Geraden werden später erklärt):


Abbildung 2

Wenn man nun alle Flächeninhalte der inneren Streifen zusammenzählt und den aller äußeren Streifen, hat man den Flächeninhalt und damit Pi schon bedeutend näher eingekreist. Zur Berechnung der Flächeninhalte der Streifen lässt sich folgendes sagen:

Die Breite ist eindeutig, und zwar 1/n * r, wobei n die Anzahl der Streifen ist. Die Höhe lässt sich mit dem Satz des Pythagoras berechnen, womit sich jetzt die roten schrägen Geraden erklären.

Man hat hierdurch ein rechtwinkliges Dreieck von dem man zwei Seitenlängen kennt. Zum einen dem Abstand vom Mittelpunkt des Kreises zu dem Streifen und zum anderen die Länge der roten Geraden, nämlich r. Dass heißt, dass man mithilfe des Satzes von Pythagoras die dritte Seitenlänge ausrechnen kann:

Laut a2 + b2 = c2 gilt hier zum Beispiel für den fünften Streifen, den ich y5 nenne:
(5 * 1/n * r)2 + y52 = r2
y52 = r2 - (5 * 1/n * r)2

Jetzt setze man n gleich 10 und voilà:

Somit ist der Flächeninhalt des 5. inneren Streifens:

Die äußeren Streifen lassen sich auch einfach berechnen, da sie als Höhe schlicht die Höhe des links daneben liegenden inneren Rechtecks haben. Aufgepasst werden muss, dass es so scheint, als gäbe es einen äußeren Streifen mehr - in Wirklichkeit hat nur der letzte innere Streifen eine Höhe von 0.

Nun kann man die beiden Streifensortimente zusammenrechnen und wieder den Mittelwert bilden, so dass man einen relativ genauen Mittelwert des Flächeninhaltes des Viertelkreises bekommt. Mit vier multipliziert erhält man nun den gesamten Flächeninhalt, der hier so aussieht:

Und damit

Das Ganze auf dem Taschenrechner zu tippen ist äußerst mühsam zumal die Spanne zwischen beiden Werten immer noch 0,4 beträgt, was nach einer Berechnung mit hundert, zehntausend oder einer Millionen Streifen schreit. Deswegen lohnt es sich auch hier, das Ganze in ein Programm zu fassen:

Den Streifen-Algorithmus in Visual Basic zu schreiben ist nicht schwer; es ist eher ein Problem der Zeit, die zur Berechnung gebraucht wird. Denn dieser Algorithmus ist in der Ausführung langsamer als die vorherige Version:

'gibt Pi zurück;
'Stripes ist die Anzahl der Streifen,
'die die Funktion ausrechnen soll.
'Je mehr Streifen, desto langsamer, aber genauer.

Private Function Pi(Stripes As Long) As Double
    Dim I As Long 'zum Zählen
    Dim OneStep As Double 'Breite eines Streifens
    Dim S_Values As Double 'Zwischenspeichern der Flächeninhalte
    
    If Stripes < 1 Then Stripes = 1000
    
    OneStep = 1 / Stripes
    
    For I = 1 To Stripes
        S_Values = S_Values + Sqr(1 - (I * OneStep) ^ 2) * OneStep
        If I / 10000 = I \ 10000 Then DoEvents
    Next
    
    Pi = (S_Values + OneStep / 2) * 4
End Function

Listing 2

Pi mit beliebig vielen Nachkommastellen  

Wenn man die beiden obigen Codes anschaut, merkt man, dass die Rückgabewerte Doubles sind. Während dem Ingenieur in der Praxis schon eine Nachkommastelle genügt, reichen dem Freund der Zahl Pi die verhältnismäßig wenig Nachkommastellen eines Doubles nicht. Es ist eine Spielerei einiger Leute den Rekord an bekannten Nachkommastellen zu brechen, auf www.pibel.de zum Beispiel kann man Pi als PDF mit 10 Millionen Nachkommastellen herunterladen, was natürlich weit unter dem Wert liegt, der auf den Festplatten einiger Supercomputer schlummert.

Das Problem in Visual Basic ist, dass es keinen Typ gibt, der mehr Nachkommastellen speichern kann als ein Double. Also muss man die Rechenaufgabe geschickt teilen und den Rückgabewert letztlich als String handhaben. Um das zu lösen, habe ich ein altes QuickBasic Projekt von Jason Stratos Papadopoulos, welches ich auf BasicGuru.com fand, nach Visual Basic übersetzt.

Das Programm nimmt zwei Formeln zur Hand, die eine von Leonhard Euler, die da lautet:


Abbildung 3

Zum anderen benutzt er eine Formel von James Gregory, die es einem ermöglicht, Teile der hier entstehenden Brüche zu berechnen. Diese Teile werden dann in einem Array gespeichert und darin weiterverarbeitet, so dass es möglich wird, Pi mit beliebig vielen Nachkommastellen zu berechnen. Beeindruckend ist hierbei die atemberaubende Geschwindigkeit dieses Codes.

Da der Code ein wenig länger ist, ist er hier nicht abgedruckt, aber im Beispielprojekt lässt er sich leicht finden.

Andere Methoden  

Alle Methoden, Pi zu bestimmen, aufzuzählen, würde den Rahmen dieser Kolumne eindeutig sprengen. Ich habe hier einige aufgezählt, aber wer bei Google sucht, wird noch viele andere Methoden finden, wie zum Beispiel Monte Carlos, welches Pi mit Hilfe des Zufalles bestimmt.

Fazit und Download  

Es ist eine interessante Sache, zu verstehen, wie man Pi berechnen kann. Im Gegensatz zur Meinung vieler Leute, Pi gehe aus einer einfachen Division oder Ähnlichem hervor, ist es so, dass man sich Pi nur immer näher annähern kann, es "einkesseln" kann. Es ist und bleibt eine Spielerei Pi zuberechnen, da man in realen Projekten stets einen Näherungswert nehmen wird - schon allein um Zeit zu sparen.

Anbei ist ein Beispielprojekt, welches neben dem Berechnen von Pi auch die Streifenmethode grafisch darstellen kann.

Claus von der Burchard

Download des Beispielprojektes 

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Pi-Formel - Grafenfeld 25.10.16 21:16 37 Antworten

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 49 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von theKing110 am 21.11.2011 um 14:18

Wäre es möglich eine aktuelle Version (VB.net 2010) zu erstellen???
Vielen Dank
theKing110

Kommentar von d am 13.11.2011 um 10:51

dumm.

Kommentar von Mk am 21.10.2010 um 23:41

Wieso basieren Sinus, Cosinus.. auf Pi ?

Kommentar von Ingmar Gutberlet am 23.03.2010 um 17:06

Informativ, gut geschrieben, eine Freude zu lesen. Danke!

Kommentar von Jens am 17.03.2010 um 16:52

Schlecht... Tststs!

Kommentar von Felix.S am 15.02.2010 um 22:26

@Jaroslaw Kubacki:
Der Google-Translator ist jetzt besser geworden...
Pi ist aus dem FF 3.141592653589793238 (gemein, wenn VB mir die Zahl immer kürzt. Dabei habe ich sie doch so schön auswendig gelernt.) Wie du auf deine komische Nichts-Zahl kommst...

@Musa:
Kein Kommentar.

@Claus von der Burchard:
Vielen Dank für diese Kolummne, ich habe noch nichts vergleichbares im Netz gefunden und Wolfram|Alpha ärgert mich nur >;)

Kommentar von Zeynep am 03.01.2010 um 23:40


Ich bin Mathestudentin und soll mich mit einem Startwert n=4 durch schrittweise Verdoppelung von n dem Wert Pi nähern, undzwar bis auf 16 Stellen nach dem Komma.
Die Frage lautet, wie oft man n verdoppeln muss, um auf diese Annäherung zu kommen.

Ich weiß nicht mal, wie ich da steht ansetzen soll.
Könnte mir vielleicht jemand behilflich sein?
Über jeden Tip wäre ich sehr dankbar.

Mit freundlichen Grüßen
Z. Karahasanoglu

Kommentar von nix am 17.11.2009 um 12:13

blubb

Kommentar von kati am 27.10.2009 um 17:05

Ihr beitrag gefällt mir richtig gut. es hat viele information die für meine hausaufgabe in mathe 9. klasse sehr hilfreich waren. außerdem habe nSie es einfach und verständlich erklärt.

Kommentar von Eugen Berger am 04.04.2009 um 08:16

Ich wäre sehr interessiert an einer Visual C++ 6.0 - MFC - Version des Beispielprojekts

MfG
Eugen Berger

Kommentar von am 04.04.2009 um 07:45

Ich bin beeindruckt ...
Gibt es eine Quelle, die das Beispielprojekt als Visusual C++ 6.0-MFC-Projekt zum Download anbietet ?

E-Mail : eugen.berger@t-online.de

Kommentar von Mazloom am 31.10.2008 um 15:48

Hallo,
ich muss dieser Aufgabe lösen d.h. ein Programm schreiben aber leider habe ich bis jetzt mit exacte stellen nicht hin bekommen kann jemand vielleicht ne Idee!?
Das ist die Aufgabestellung :Die Kreiszahl π lässt sich folgendermaßen durch eine Reihenentwicklung berechnen:
π /4 = 1-1/3+1/5-1/7+1/9 ... Programmieren Sie eine Funktion
Pi2(exact as integer), die Pi auf exact Stellen genau ausrechnet.

Grüße
Benny

Kommentar von Markus am 30.10.2008 um 14:56

Hallo,
ich habe für einen Beleg an der Uni den hier vorhandenen Algorithmus zur Pi-Berechnung mit beliebig vielen Stellen analysiert. Soweit ich das erkennen kann, ist in der obigen Beschreibung ein Fehler.
Wie beschrieben werden zwei Formeln zur Hand genommen. Dies ist zum einen die Gregory-Reihe (oder auch Leibnitz-Reihe genannt)(Pi/4 = 1 – 1/3 + 1/5 – 1/7 + ...) - zum anderen jedoch ist das NICHT die Euler-Reihe wie oben abgebildet, sondern es handelt sich um eine Optimierung der Gregory-Reihe mit Hilfe der Euler-Transformation! Die Gregory-Reihe wurde mit Hilfe dieser Transformation in eine Reihe der Form Pi = 2 + 1/3(2 + 2/5(2 + 3/7(2 + ...))) umgewandelt.
Das Grundproblem besteht nämlich darin, dass die Berechnung der Zahl Pi allein über die Gregory-Reihe für eine größere Anzahl von Stellen nicht möglich ist, da die Reihe viel zu langsam gegen Pi konvergiert. (Das heißt, man muss sehr sehr viele Summenglieder berechnen, um Pi auf ein paar Stellen genau zu erhalten.) Deshalb wurde die beschriebene Optimierung vorgenommen, welche als Kombination mit der reihen Gregory-Reihe einen guten Geschwindigkeitsgewinn bringt. Das Prinzip funktioniert nämlich so, dass eine 2/3 zu 1/3 Teilung vorgenommen wird und jeweils die „schnellere“ Reihe zur Berechnung herangezogen wird.
Ich will mal ein Beispiel für 5 Stellen Genauigkeit angeben. Führt man den Algorithmus mit diesem Startwert aus, erhält man folgende Reihe:

Pi/4 = 1 – 1/3 + 1/5 – 1/7 + 1/9 * (1/2 + 1/11(1/2 + 2/13(1/2 + 3/15(1/2 + ... (1/2 + 40/51)))))


(Man sieht hier schön die Teilung der beiden Reihen nach 1/9.)

Grüße Markus

P.S.: Wenn Interesse an einer PHP-Version besteht, dann kann ich diese mal posten.

Kommentar von Saskia Anderson am 10.09.2008 um 18:30

Können sie mir die ersten Billionen Stellen von Pi nennen?

Kommentar von Mario am 18.08.2008 um 11:05

Sehr interessantes Thema auf jeden Fall.

Ich habe in JAVA ein Programm geschrieben.
Ich habe eine Formel gesucht mit der ich den Flächeninhalt für ein beliebiges Vieleck berechnen kann um dann die Ecken gegen unendlich laufen zu lassen. (D.h. große Zahl im Programm).

Natürlich bekomme ich da auch "nur" einen double zurück.

Die Berechnung ist zwar gut und richtig, aber:
Ich nutze pi um pi zu berechnen, denn ich brauche Sinus und Kosinus. Und die basieren nun mal auf pi... :/

Das auch als Antwort auf Brandl Anton. Für Winkelfunktionen muss man pi schon kennen.

Kommentar von simon am 28.07.2008 um 13:57

' Erstellt Pi aufgrund des Archimedes-Verfahren
' mit einem 2 ^ 26 Eck.
Private Function Pi() As Double
Dim a As Double
Dim b As Double

a = 2 * Sqr(3)
b = 3

Do Until a = b
a = 2 * a * b / (a + b)
b = Sqr(a * b)
Loop

Pi = a

End Function

Hier zu habe ich ne frage weil er bei mit "sqr (3)" und sqr (a * b) er sagt immer sqr ist nicht deklariert

Kommentar von Brandl Anton am 13.07.2008 um 20:01

Warum stellt man Pi nicht durch eine Winkelfunktion dar?
D.h.: Eine Formel, in der über einen X-beliebigen Winkel (dann sin, cos) die Zahl Pi auf X-beliebige Stelle nach dem Komma darzustellen?
Ist eine Winkelfunktion nicht erlaubt?
Ich habe eine Formel erarbeitet, in der folgende Angaben enthalten sind, mit welcher Pi errechnet wird, auf wievielter Stelle auch immer. Diese Formel enthält:
1. X-beliebiger Winkel
2. eine Winkelfunktion
3. zwei ganze Natürliche Zahlen
4. ein bestimmter Bruch
Branton

Kommentar von Stefan Greiner am 29.09.2007 um 15:30

Ich habe das ganze mal in Perl konvertiert.


#!/usr/bin/perl -l

use warnings;
use strict;

sub Pi{
my $Stripes = $_[0]; #Parameter 1
my $I; #Iterator
my $OneStep; #Breite eines Streifens
my $S_Values = 0; #Zwischenspeichern der Flächeninhalte
my $Pi; #das begehrte Objekt

if($Stripes < 1){
$Stripes = 1000
}

$OneStep = 1 / $Stripes;

for($I = 1; $I <= $Stripes; $I++){
$S_Values = $S_Values + (sqrt(1 - (($I * $OneStep) ** 2))) * $OneStep;
if($I % 10000 == 0){}
}

$Pi = ($S_Values + $OneStep / 2) * 4;
return($Pi);
}

my $pi = &Pi(1000000);

print"$pi";



viel Spaß damit!!

Kommentar von Matze am 12.09.2007 um 14:33

Hat jemand den Sourcecode für beliebig viele Nachkommastellen von PI? Die Seite steht nämlich zum verkauf.

Kommentar von anonym am 20.04.2007 um 21:28

Hey, ich kann leider kein basic, abe rich hab mir mal die Streifenmethode angeshen, und (ohne zu schummeln und auf den basic code zu schauen) das ganze in java gemacht.Fazit: recht flott, aber auch (mir) zu ungenau.Trotzdem bin ich zufrieden :).Dankeschön

Kommentar von General BiSoN am 08.04.2007 um 02:55

An James Hanks:
Welchen iq? na ich schätze mal
314,15926535897931
XD

MFG: BiSoN

Kommentar von James Hanks am 02.03.2007 um 16:28

was für einen IQ muss man haben das man das versteht

Kommentar von carole am 05.01.2007 um 15:57

meine Frage ist wie man in Excel Pi berechnet, auf möglichst viele Stellen und mit einer Tabelle.
Um schnelle Antwort ist gebeten, hier im Forum!
Danke vielmal

Kommentar von Siegmar Schulz am 14.12.2006 um 14:14

www.trigon-verlag.de
Der Trigon Verlag Ltd. Potsdam - Ein Verlag für mathematische Neuigkeiten!
In Vorbereitung zum Druck - erscheint im Januar 2007

Der Trigon Verlag veröffentlicht eine mathematische Abhandlung über die numerisch verwirklichte Berechnung der Kreiszahl π (Pi) sowohl aus eindeutig bestimmten Tangenswerten als auch aus ebensolchen Sinuswerten.

Autor: Karel Markowski
ISBN: 3-9810752-1-8
978-3-9810752-1-2
Titel: “Die Berechnung der Zahl π (Pi) aus Sinus- und Tangensintervallen”
Zum Inhalt:
Während in der Tradition von Archimedes durch van Ceulen, mit dem Sechseck beginnend, die Ziffernfolge von π im Kreis aus der fortlaufenden Zweiteilung der Polygone ermittelt wurde, erhöhten die Methoden von Leibniz und Gauß, Berechnung mittels unendlich fortführbarer Zahlenreihen, die Effizienz der Berechnung deutlich. In der Abhandlung von Markowski wird ein anderer Weg beschritten. Beginnend mit der Teilung eines Grades, sowohl jenes des 360 -Kreises als auch dessen des 400-gon-Kreises, durch zehn und fortgesetzt durch Zehnerpotenzen zu immer kleiner werdenden Winkeln, erscheinen aus dem Verhältnis der Katheten und der Hypotenuse besondere Eigenschaften des Tangens und auch des Sinus. Durch diese Tangens- und Sinuswerte ist es, wie bei Archimedes, Leibniz und Gauß, auch mathematisch möglich, die exakte Ziffernfolge von π/2 (Pi-halbe) zu berechnen. In konsequenter Fortführung dieses mathematischen Prinzips kann die Berechnung von π/2 und demzufolge π auf eine unbegrenzbare Anzahl von Ziffern fortgeführt werden. Diese Methode ist bislang von keinem Mathematiker beschrieben worden. Nicht nur der Berechnungsweg über die Tangensintervalle und parallel auch über die Sinusintervalle, sondern auch die sich dabei gleichsam herauskristallisierenden Eigenschaften des Tangens und des Sinus an beiden Kreisformen, die in numerische Identität miteinander verschmelzen, sind mathematisch neu. Das neue Stichwort lautet: Architektur von Sinus und Tangens.

Die Darstellungen der Architektur von Sinus und Tangens erfolgen sowohl tabellarisch als auch verbal. Die Berechnungsmethoden und deren Resultate werden in der Abhandlung umfassend beschrieben. Sie sind in ihrer mathematischen Logik nicht nur für den Mathematiker, sondern auch für den mathematisch Interessierten nachvollziehbar.

Kommentar von Jaroslaw Kubacki am 21.08.2006 um 15:49

Ich verstehe nicht, warum man gibts sich so viel mühe, um zu
berechnen etwas, was nicht zu berechnen ist.
Vieleicht man gibt´s sich endlich mühe und versucht zu begreifen
warum pi Zahl ist so, wie er ist?
Auserdem der gesuchte Wert beträgt 3.125 und ist sehr
einfach zu ermitteln wen man stellt verbindung zwischen
dem Kreis,Kwadrat und Dreieck her.
Mit freundlichen Grüßen
J.K.

Kommentar von Janek Walkenhorst am 09.08.2006 um 18:09

Schöne Kolumne!

Die Zeile:

If I / 10000 = I \ 10000 Then DoEvents

sollte durch die Zeile:
If I Mod 10000 = 0 Then DoEvents

ersetzt werden. Das dürfte einen Geschwidigkeitszuwachs bringen.

mfG,
Janek

Kommentar von Gaga am 30.06.2006 um 09:03

Der Tangens von 90* ist mathematisch nicht definiert, weil an dieser Stelle dieser Wert ins unendliche wächst.
Nach den Umrechnungsformeln von Grad nach Bodenmaß ist 90 = PI/2

Da die VB-Winkelfunktionen im Bogenmaß denken, ist 2 * atn(unendlich) = PI
Wenn man jetzt für unendlich den größten Wert nimmt, den ein Double aufnehmen kann, kann man damit PI mit der Genauigkeit berechnen, den der Datentyp Double hergibt.

Das ist die schnellste und genaueste mir bekannte Möglichkeit, mit VB die Zahl Pi zu bestimmen:

Private Const Unendlich = 1.79769313486231E+308

Public Function PI() As Double
PI = 2 * Atn(Unendlich)
End Function

Kommentar von Mario Zeller am 27.06.2006 um 08:03

Hallo J.,

sieh dir dazu z.B. http://de.wikipedia.org/wiki/Pi_%28Kreiszahl%29#Formeln.2C_Anwendungen.2C_offene_Fragen an.

Kommentar von J. am 19.05.2006 um 22:26

Habe eine Frage an euch! WAs kann man mit Pi alles ausrechnen??

Kommentar von Cubs am 05.04.2006 um 20:23

Hey na,

vieleicht keine ich eure Sammlung ein kleines bisschen erweitern.Denn hier seht ihr mal wie man Pi mit Jvascript berechnen könnte:

code


var r=1;
var t=3000000;//<-- Genauigkeit
var fg=0;
var xold=0;
var yold=0;
pii();
function pii()
{
p=0;
xold=(-r+2*r/t*p);
yold=Math.sqrt(r*r-xold*xold);
for(p=1;p<=t;p++)
{
x=(-r+2*r/t*p);
y=Math.sqrt(r*r-x*x);
fg+=Math.sqrt((x-xold)*(x-xold)+(y-yold)*(y-yold));
xold=x;
yold=y;
}
document.write(fg);
}

/code

Kommentar von katja am 10.01.2006 um 20:15

hallo!!
eine frage: ich muss eine referat über das gregory-verfahren zur findung der kreiszahl pi halten...
wisst ihr wo ich eine seite finde, auf der das verfahren, sowie sein lebenslauf einfach erklärt und verständlich zu finden sind?
ich würde mich sehr über eure hilfe freuen!!
danke im voraus!!

Kommentar von Fabian am 07.01.2006 um 16:08

Du kannst das Programm aber auch in C oder C++ programmieren ohne Probleme...
dafür kannst du auch einige compiler umsonst im internet legal als freeware bekommen...

# include <stdio.h>
# include <math.h>


int main ()
{

int i,x;
double t1=0,t2=0,erg=0,end=0,t3;

for (i=0;i<10000;i++)
{
t3=(2*i)+1;
t1=1/t3;
x=-1;
t2=pow(x,i);
printf ("Teilergebnis:%f %f",t1,t2);
erg=t2*t1;
end=end+erg;
printf (" PI: %f\n",end);
}
printf ("PI: %f",end*4);
getchar();
return 0;
}

Kommentar von am 16.12.2005 um 18:31

klfkijghjkblvc
¨üpvolbkjhkfldsdf

Kommentar von Claus von der Burchard am 15.09.2005 um 21:10

Hallo,

der Programmcode ist in Visual Basic geschrieben. Dies muss käuflich erworben werden.

Gruß,
Claus

Kommentar von Cédric am 14.09.2005 um 21:16

Wie kann ich so ein Programm schreiben? Muss man das in den Editor kopieren? Und als was abspeichern? Wie starten? Ich habe keine ahnung. Könnten Sie mir helfen?

Kommentar von Claus von der Burchard am 13.09.2005 um 21:29

Hallo,

[wikipedia]Kreiszahl[/wikipedia] sollte einen recht guten Überblick geben. Demnach gibt es drei gängige Definitionen für Pi:

1.) das Verhältnis des Umfangs eines Kreises zu seinem Durchmesser

2.)die Fläche eines Kreises mit dem Radius 1

3.) das Doppelte der kleinsten positiven Nullstelle des Kosinus (nach Edmund Landau)

Pi kommt daher zum Einsatz, wenn Umfang oder Flächinhalt eines Kreises berechnet werden soll oder auch, wenn das Volumen einer Kugel zu bestimmen ist.

Auch zur Geschichte der Zahl Pi ist bei Wikipedia umfangreiches Material zu finden.

Gruß,
Claus

Kommentar von Michi am 13.09.2005 um 16:53

was kann man mithilfe von pi berechnen??nenne beispiele!!
wer hat sich wann um die genauere bestimmung von pi verdient gemacht??

Kommentar von Chris am 12.08.2005 um 13:40

Endlich hab ich mal ein Programm gefunden, womit man Pi berechnen kann xD

Da ich aber leider noch wenig VB Kenntnisse besitze, wollte ich mal Fragen, ob es nicht möglich wäre, wenn man da nocheinTimer einbauen könnte incl. einer Speicher-Funktion damit man am nächsten Tag (z.B.) weitermachen kann.

Zu den Timern:
Ein Timer sollte anzeigen, wie lange es noch Dauert
und am ande sollte der Anzeigen, wielange es dann gedauert hat (oder wie auch immer).
Ich würde mich sehr über solch eine Erweiterung freuen (wäre auch noch für alle praktisch).

MfG
Chris

PS: Wäre es möglich anzeigen zu lassen, wie weit der gerade ist?

Kommentar von Musa am 23.07.2005 um 15:09

was ist pi

Kommentar von leo am 28.06.2005 um 16:21

Hallo,
man kann pi auch einfach durch den umfang eines vieleckes zu berechnen.
hier eine java Klasse (da ich hier mit BigDecimals rechne ist java 1.5 Voraussetzung...). Wer eine gui schreiben will, muss darin die methoden status (wird bei jedem schleifendurchgang aufgerufen) und result (gibt ein array mit ergebnis und der anzahl der schleifendurchgänge) implementieren.
/*
* Pythagoras.java
*
* Created on 30. Mai 2005, 21:53
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/

package pi;

import java.math.*;
import java.io.*;
import java.util.*;
/**
*
* @author leo
*/
public class Pythagoras extends Thread{
GUI gui;
MathContext mc;
Rechner rechner=new Rechner();
int scale=10;

private final BigDecimal zwei=new BigDecimal("2");
private final BigDecimal drei=new BigDecimal("3");
private final BigDecimal sechs=new BigDecimal("6");
/** Creates a new instance of Pythagoras */
public Pythagoras(GUI gui,MathContext mc,int scale) {
this.gui=gui;
if((mc.getPrecision()<=scale)&&(scale<=536)&&(scale>0)) this.mc=new MathContext(scale, mc.getRoundingMode());
else this.mc=mc;
this.scale=scale;
}
public void lessThanFiveHundredThirtySix() {
BigDecimal result[]=new BigDecimal[2];
BigDecimal un=rechner.sqrt(zwei.add(rechner.sqrt(new BigDecimal("3"), mc), mc),mc);
BigDecimal pi1=new BigDecimal("-1",mc);
BigDecimal pi2;
int n=2;

for(;n<=scale;n++) {
try {
un=rechner.sqrt(zwei.add(un,mc),mc);
gui.status(n);
if(n==(scale-1)) pi1=rechner.sqrt(zwei.subtract(un, mc),mc).multiply(rechner.pow(zwei,n+1,mc),mc).multiply(drei,mc);
} catch(Exception e) {
break;
}
}

pi2=rechner.sqrt(zwei.subtract(un, mc),mc).multiply(rechner.pow(zwei,n,mc),mc).multiply(drei,mc);
result[0]=pi2;
result[1]=this.difference(pi2, pi1);
gui.result(result);
}

public void moreThanFiveHundredThirtySix() {
BigDecimal un=new BigDecimal("3",mc);
BigDecimal uncheck=new BigDecimal("-1",mc);
BigDecimal result[]=new BigDecimal[2];
BigDecimal counter=new BigDecimal("6",mc);

for(int i=2;i<=scale;i++) {
try {
if(i==scale) uncheck=un;
un=zwei.multiply(un,mc).divide(rechner.sqrt(zwei.add(zwei.multiply(rechner.sqrt(java.math.BigDecimal.ONE.subtract(rechner.pow(un.divide(counter,mc), 2, mc), mc), mc), mc), mc), mc),mc);
counter=counter.multiply(zwei,mc);

gui.status(i);

} catch(Exception e) {
break;
}
}

result[0]=un;
result[1]=this.difference(un, uncheck);

gui.result(result);
}

private BigDecimal difference(BigDecimal a,BigDecimal b) {
try {
String ao=a.toString();
String bo=b.toString();

int length=ao.length();

int i=3;

for(;i<length;i++) {
if(ao.charAt(i)!=bo.charAt(i)) {
break;
}
}
return (new BigDecimal(ao.substring(0, i)));
} catch(Exception e) {
return drei;
}
}

public void run() {
if(scale<=536) this.lessThanFiveHundredThirtySix();
else this.moreThanFiveHundredThirtySix();
}

public static void main(String args[]) {
class gui implements GUI{
int i;
public gui() {
System.out.print("Berechne ein 6*2^");
}
public void status(int i) {
System.out.print(i+"-Eck...");
for(int l=-6;l<=Integer.toString(i).length();l++) System.out.print("\b");
this.i=i;
}
public void result(BigDecimal data[]) {
System.out.println("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bBerechnung eines 6*2^"+Integer.toString(i)+"="+(new BigDecimal("6")).multiply((new BigDecimal("2")).pow(i+2)).toString()+"-Ecks:\n\nUmfang/2*Radius="+data[0].toString()+"\n\nPi="+data[1].toString());
}
}
System.out.println("");
Pythagoras p=new Pythagoras(new gui(), new MathContext(Integer.parseInt(args[1]), java.math.RoundingMode.HALF_UP), Integer.parseInt(args[0]));
p.start();
}
}

Kommentar von Claus von der Burchard am 17.06.2005 um 14:59

Hallo,

es gibt wahrscheinlich entsprechenden Quellcode für PHP und Java, nur kann ich diesen nicht bieten, da ich PHP kaum verstehe und Java gar nicht.

Einen Versuch wäre es wert, es bei Google zu versuchen: [google]Pi berechnen Java Nachkommastellen[/google]

Gruß,
Claus

Kommentar von F. Jergitsch am 02.06.2005 um 20:44

Hallo,

gibt es eine Möglichkeit, Pi mit PHP bzw. mit Javascript auf 100-200 Stellen zu berechnen?

Mfg

Kommentar von knapp simon am 11.04.2005 um 09:34

Hallo. Ich habe eine Frage zur Berechnung von Flächeninhalten, (Grundfläche), von Quadraten. Es würde mich freuen wenn Sie mir eine Formel oder eine Beispielrechnung per e-mail zusenden würden Danke. Simon. e-mail. knappsim@tu-cottbus.de

Kommentar von am 08.04.2005 um 15:35

Hallo wollte fragen ob es möglich währe die funktion so zu jändern das man ihr einen String als Startwert geben kann. Will sagen ich habe pi schon auf 1000000 Stellen berechnet aber ich möchte weiter rechnen ohne neu anfangen zu müssen.

Kommentar von Ilias von Traunstein am 13.12.2004 um 14:27

Sehr geehrter Herr von der Burchard,
das ist genial und sehr mathematisch fundiert. Ich habs letztens geschafft die Pi Zahl 28-stellig genau anzugeben. Ich hatte mit meinem Mathe-Lehrer gewettet, dass ichs schaffe Pi mit mehr stellen anzugeben als nen normal konfiguriertes Excel. Ich gratuliere zu ihrer Version, die auch dem Matheunterricht entspricht.
Mit netten Grüßen,
Ilias v. Tr.

Kommentar von Ilias von Traunstein am 13.12.2004 um 14:25

Sehr geehrter Herr von der Burchard,
das ist genial und sehr mathematisch fundiert. Ich habs letztens geschafft die Pi Zahl 28-stellig genau anzugeben. Ich hatte mit meinem Mathe-Lehrer gewettet, dass ichs schaffe Pi mit mehr stellen anzugeben als nen normal konfiguriertes Excel. Ich gratuliere zu ihrer Version, die auch dem Matheunterricht entspricht.
Mit netten Grüßen,
Ilias v. Tr.

Kommentar von Pi-Fan am 03.11.2004 um 19:54

@password:
Ja, die Rechnung
Atn(1)*4
liefert bei Doubles exakt dasselbe Ergebnis wie die Approximation des Gregory-Verfahrens.

Kommentar von password am 24.09.2004 um 20:17

Ich kenne mich in Mathematik nicht so aus, habe aber mal ein Programm gefunden, in dem der Autor behauptet, Pi lässt sich als der Arkustangens von 1 mal 4 berechenen, also

Atn(1) * 4

Geht das?

Kommentar von Pedro Hafermann am 12.09.2004 um 20:50

Einfach Klasse.
Großes Lob an den Programmierer.
Ich habe mir schon stundenlang den Kopf darüber zerbrochen, wie es denn geht und nun hab ich über 3 Seiten Pi berechnet, klasse.