Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Monte Carlo trifft PI (https://www.delphipraxis.net/38621-monte-carlo-trifft-pi.html)

Jelly 24. Jan 2005 13:41

Re: Monte Carlo trifft PI
 
Zitat:

Zitat von Nicolai1605
als ein paar zufällige Punkte...

Mit der Monte Carlo Methode kannst du Pi beliebig genau bestimmen. Musst nur die Anzahl deiner Tests erhöhen :-D
Beim Zählen der Pixel klappt das nicht, da du nur x*y Pixel hast.

Nicolai1234 24. Jan 2005 14:01

Re: Monte Carlo trifft PI
 
Aber wenn die Punkte gegen unendlich laufen, ist doch der Wert genau der, der bei meiner Pixelrechnung rauskommt, oder?

Jelly 24. Jan 2005 14:03

Re: Monte Carlo trifft PI
 
Zitat:

Zitat von Nicolai1605
Aber wenn die Punkte gegen unendlich laufen

Hast du denn auch unendlich Speicher um dein Schachbrett im Speicher zu halten ?

Nicolai1234 24. Jan 2005 14:05

Re: Monte Carlo trifft PI
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von Nicolai1605
Aber wenn die Punkte gegen unendlich laufen

Hast du denn auch unendlich Speicher um dein Schachbrett im Speicher zu halten ?

?

Erlär doch mal, warum meine Annahme falsch ist. Wenn ich das oben genannte Beispiel durchrechnen lasse, dann komme ich wirklich nur auf den Wert, der auch bei den Pixeln rauskommt. egal wie viele Millionen mal ich da Punkte raufmache...
WO liegt denn da mein Denkfehler?

Jelly 24. Jan 2005 14:15

Re: Monte Carlo trifft PI
 
Stell dir ein Kasten von 10x10 vor, sprich 100 Pixel. Selbst wenn du alle Pixel zählst, wirst du nur 31 schwarze (damit mein ich Pixel innerhalb des Kreises) und für den Rest weisse finden. Damit wirst du Pi NIE genauer wie 3.1 bestimmen können. (Pi=schwarze/Gesamtzahl)

Oder hab ich dich falsch verstanden, wie du über das Canvas Pi bestimmen willst. :gruebel:

Nicolai1234 24. Jan 2005 14:21

Re: Monte Carlo trifft PI
 
Ne, hast du nicht, aber ganz oben hat eienr gefragt, wie er das mit Canvas macht...


Was brauch man denn für eine Größe um Pi genauer zu bestimmen?

Tortus 24. Jan 2005 14:22

Re: Monte Carlo trifft PI
 
Zitat:

Zitat von Nicolai1605
Zitat:

Zitat von Jelly
Zitat:

Zitat von Nicolai1605
Aber wenn die Punkte gegen unendlich laufen

Hast du denn auch unendlich Speicher um dein Schachbrett im Speicher zu halten ?

?

Erlär doch mal, warum meine Annahme falsch ist. Wenn ich das oben genannte Beispiel durchrechnen lasse, dann komme ich wirklich nur auf den Wert, der auch bei den Pixeln rauskommt. egal wie viele Millionen mal ich da Punkte raufmache...
WO liegt denn da mein Denkfehler?

Ich glaube, deine Lösung ist auch richtig.
Dein Denkfehler (und gleichzeitig der Vorteil der Monte-Carlo-Methode) besteht darin, das bei deiner Pixelbasierenden Lösung das Canvas seeehr groß sein müsste, um ein brauchbares ergebnis zu liefern, da ein Pixel ja bekanntlich entweder schwarz oder weiß ist, aber nicht halb schwarz, halb weiß oder so.
Bei der Monte-Carlo-Methode hingegen kann man Dezimalzahlen einsetzen, die die Ergebnisse des Zufallszahlengenerators sind.

/E: Herrlich, bin ich wieder zu langsam gewesen, und ich glaube sogar am Thema vorbei.

Dafür gibts hier jetzt mal eine ganz einfache Übersetzung des Vorschlags von Wikipedia zur Monte-Carlo Methode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  tropfenzahl,
  innerhalb,
  gesamt: Integer;
  dotx,
  doty,
  piwert: Extended;
begin
  tropfenzahl := StrToInt(Edit1.Text);
  innerhalb := 0;
  gesamt := tropfenzahl;
  Progressbar1.Max := tropfenzahl;
  while(tropfenzahl>0) do
  begin
    Randomize;
    dotx := 2 * Random-1;
    doty := 2 * Random-1;
    if(Sqrt(dotx*dotx + doty*doty) <= 1) then
    begin
      innerhalb := innerhalb +1;
    end;
    tropfenzahl := tropfenzahl -1;
    Progressbar1.Position := Gesamt - tropfenzahl;
    Application.ProcessMessages;
  end;
  Edit2.Text := FloatToStr(4*innerhalb/gesamt);
end;
Wie gesagt, einfach aus meinem Testprogrämmle kopiert, und ohne weiteres Tuning

Binärbaum 24. Jan 2005 16:39

Re: Monte Carlo trifft PI
 
@jelly
@Nicolai

Wenn man das Ergebnis möglichst genau haben will, muss man sich vom Canvas loslösen und die Sache rein arithmetisch/analytisch betrachten. Damit könnte man auch die Genauigkeit beliebig erhöhen, vorausgesetzt man lässt das Programm lang genug laufen.

MfG
Binärbaum

//Edit: Rechtschreibfehler korrigiert

Jelly 24. Jan 2005 17:03

Re: Monte Carlo trifft PI
 
Zitat:

Zitat von Binärbaum
Damit könnte man auch die Genauigkeit beliebig erhöhen, vorausgesetzt man lässt das Programm lang genug laufen.

Hab ich was anderes behauptet :wiejetzt:

Binärbaum 24. Jan 2005 17:11

Re: Monte Carlo trifft PI
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von Binärbaum
Damit könnte man auch die Genauigkeit beliebig erhöhen, vorausgesetzt man lässt das Programm lang genug laufen.

Hab ich was anderes behauptet :wiejetzt:

Irgendwie schon, weil du da von Canvas geredet hast, und ein Canvas -auch wenn er noch so groß ist und noch so viele Pixel hat- begrenzt ist, und damit sind der Genauigkeit gewisse Grenzen gesetzt (vom Speicherbadarf des Canvas mal abgesehen).


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz