Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Logit
Anmeldungsdatum: 22.03.2005 Beiträge: 27
|
Verfasst am: 28. März 2005 08:26 Titel: Rechnen |
|
|
hallo,
ich habe gehört, dass man mit vb auch pi ausrechnen kann.
Wie stellt man das an?
(könnt ihr mir die Frage überhaupt beantworten? Oder rede ich nur schwachsin?) |
|
Nach oben |
|
|
|
Gast
|
Verfasst am: 28. März 2005 09:02 Titel: |
|
|
Mit jeder Programmiersprache kann man pi ausrechnen. Es gibt viele Verfahren, nach denen man die Zahl pi annähern kann, ein sehr einfaches Beispiel ist die Montecarlomethode, bei der man die Treffer (von Zufallspunkten) in einem Kreis zählt. Es gibt natürlich auch Methoden, mit denen man Pi direkt annähern kann (etwa die Arcus-Tangens-Methode, die aber relativ schlecht konvergiert). Das Beste Was ich in dieser Richtung gehört habe ist ^9-fache Konvergenz (bei jeder Iteration wird die Zahl der korrekten Stellen verneunfacht). Für hexadezimale Stellen von Pi hat man sogar die möglichkeit einzelne bestimmte Stellen auszurechnen, ohne die vorangehenden Zahlen wissen zu müssen.
Gruß, der dachdecker2 |
|
Nach oben |
|
|
Gast
|
Verfasst am: 07. Apr 2005 15:18 Titel: |
|
|
Wenn die Monte-Carlo-Methode so funktioniert, kann man sie wohl gleich vergessen:
Code: | '
' Zählt diejenigen Punkte, die in den in ein Quadrat eingeschriebenen
' Einheitskreis (Radius = 1) fallen
'
Private Function CalculatePiMC(lIterations As Long) As Double
Dim x, y As Double ' X-/Y-Position eines zufälligen Punkts im Kreis
Dim a, b As Double ' Abstand in X- bzw. Y-Richtung dieses Punkts zum
' Kreismittelpunkt
Dim c As Double ' Absoluter Abstand des Punkts zum Kreismittelpunkt
Dim l As Long ' Schleifenzähler
Dim cnt As Long ' Zähler der Punkte, die innerhalb eines Viertelkreises
' liegen (daher die Vervierfachung der Iterations-
' schritte)
cnt = 0
lIterations = lIterations * 4
For l = 0 To lIterations - 1
x = Rnd() * 2
y = Rnd() * 2
a = 1 - x
b = 1 - y
c = Sqr(a ^ 2 + b ^ 2)
If c <= 1 Then cnt = cnt + 1
Next l
CalculatePiMC = cnt / (lIterations / 4)
End Function |
Anmerkungen?
LG Marc |
|
Nach oben |
|
|
Logit
Anmeldungsdatum: 22.03.2005 Beiträge: 27
|
Verfasst am: 07. Apr 2005 17:19 Titel: |
|
|
|
|
Nach oben |
|
|
Twips
Anmeldungsdatum: 21.11.2005 Beiträge: 2
|
Verfasst am: 21. Nov 2005 22:26 Titel: |
|
|
Hm ja also ist es theoretisch nun möglich sowas mit der Monte-Carlo Methode in VB umzusetzen?
Und hat da vielleicht jemand einen Ansatz??
Danke!!! |
|
Nach oben |
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 22. Nov 2005 18:04 Titel: |
|
|
Es gibt unzählige gegen ein Vielfaches von PI konvergierende Reihen. Hier eine von Leibnitz:
D.h. du kannst PI annähern, indem du die Reihe irgendwann abbrichst. Je später du sie abbrichst, desto genauer wird das Ergebis.
Du erhälst natürlich pi/4. D.h. du musst dein Ergebnis am Ende noch mit 4 multiplizieren.
Auf Wikipedia findest du eine schöne Übersicht:
http://de.wikipedia.org/wiki/Kreiszahl |
|
Nach oben |
|
|
Twips
Anmeldungsdatum: 21.11.2005 Beiträge: 2
|
Verfasst am: 23. Nov 2005 13:31 Titel: |
|
|
Ja da hab ich schon ziemlich viel gefunden, nur zum thema Monte Carlo verfahren hab ich da mal 0 Ahnung wie man das in VB umsetzen könnte, hat da jemand eine Idee??
Danke!! |
|
Nach oben |
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 23. Nov 2005 14:30 Titel: |
|
|
Du hast doch schon nen Monta-Carlo Algorithmus da oben stehen. Wo ist denn noch das Problem?
Ferner lönntest du auch einfach den auf http://de.wikipedia.org/wiki/Kreiszahl in VB konvertieren. Geht auch ganz einfach. |
|
Nach oben |
|
|
gtakiller
Anmeldungsdatum: 03.02.2006 Beiträge: 17 Wohnort: NRW
|
Verfasst am: 06. Feb 2006 21:27 Titel: math.pi |
|
|
versuch mal
um es dann anzuzeigen musst du, was du hoffentlich weisst einfach
Code: | textbox1.text = math.pi |
hinschreiben...
aber das is ja auch selbstverständlich _________________ puh.. 255 buchstaben kann ich hier rein tun.... hmm.... also.... meine signatur ist.... ist... ist... hmmm... KLEINGESCHRIEBEN! |
|
Nach oben |
|
|
|