(Pi ist überall)
Über Google erfährt man bekanntlich so manches, was man vorher nicht wusste. Zum Beispiel, dass der 14.3 der Pi-Tag ist (eigentlich auch logisch). Kann und sollte man für eine harmlose Zahl einen Gedenktag einrichten? Ich denke schon, da es kaum etwas gibt (was mir spontan einfallen würde), das in allen Kulturen gleichermaßen geschätzt wird, das von keiner Ideologie umklammert ist, und um das noch keine Kriege geführt wurden. Pi ist vor allem ein besonderer Tag für die sog. Nerds.
Wie man als typischer Nerd (oder Geek, wobei ich den Unterschied zwischen den beiden soziologisch-kulturellen Minderheiten nicht in 1-2 Sätzen beschreiben könnte - ich vermute, Geeks pflegen häufiger soziale Kontakte) den "Pie-Day" am besten begehen kann erfährt man hier: http://www.wikihow.com/Celebrate-Pi-Day
Da es in diesem Blog hin und wieder auch um Visual Basic gehen soll, im folgenden eine kleine Console-App, die die Kreiszahl über eine einfache Reihenentwicklung annähert(zur Abwechslung einmal ohne LINQ&Lambdas):
' Berechnet Pi über eine einfache Annäherung
Module Module1
Private RecurseLimit As Byte = 60
Private PiOffiziell As String = "3.1415926535897932384626433832795028841971693993751"
Sub Main()
Console.Title = "Anhäherung an Pi"
Console.ForegroundColor = ConsoleColor.Green
Dim PiZahl As Double = 2 * CalculatePI(1)
Console.WriteLine("Die Annährung: {0:N20}", PiZahl)
Console.WriteLine("Math.PI: {0:N20}", Math.PI)
Console.WriteLine("Das Original: {0:N50}", PiOffiziell)
Console.ReadLine()
End Sub
Private Function CalculatePI(ByVal i As Integer) As Double
If i > RecurseLimit Then
Return i
Else
Return 1 + (i / (1 + (2 * i))) * CalculatePI(i + 1)
End If
End Function
End Module
Im Rahmen der Double-Genauigkeit ist das Ergebnis nicht schlecht und entspricht ziemlich genau dem, was auch Math.Pi liefert. Natürlich ist es kein Vergleich zur offiziellen Zahl, die inzwischen auf etwa 2 Trillionen Ziffern genau berechnet wurde (bekanntlich ist Pi eine unendliche Zahl), oder zu jener Kurzvarianten, die man (als echter Geek bzw. Nerd) eigentlich auswendig aufsagen können sollte (der Weltrekord liegt laut Wikipedia bei 100.000 Stellen, aufgestellt von Akira Haraguchi, der für das Aufzählen einen Tag benötigte):
3.1415926535897932384626433832795028841971693993751
Wer viel Zeit hat und gerne einmal eine "State of the Art"-Variante kennenlernen möchte, sollte sich den folgenden Text zu Gemüte führen, der zeigt, wie sich Pi mit Hilfe der Grafikkarten-CPU (GPU) und F# berechnen lässt:
http://tomasp.net/articles/accelerator-intro.aspx