AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Monte Carlo trifft PI

Ein Thema von Delphi-Padawan · begonnen am 21. Jan 2005 · letzter Beitrag vom 24. Jan 2005
Antwort Antwort
Seite 1 von 3  1 23      
Delphi-Padawan

Registriert seit: 21. Okt 2003
28 Beiträge
 
#1

Monte Carlo trifft PI

  Alt 21. Jan 2005, 22:10
Hallo zusammen,

wir behandeln in der Schule zur Zeit die Monte Carlo-Methode.
Dazu möchte ich ein Programm schreiben:
Folgendes habe ich schon:
Zunächst wird ein Quadrat gezeichnet, darin ein Kreis mit maximaler Größe. Dieses Gebilde wird in vier Teile geteilt. Rechts oben in das Viertel werden n-Punkte gezeichnet.

was ich noch brauche:
Nun soll mir der PC ausgeben, wie viele der Punkte auf dem Kreis gelandet sind und wie viele auf dem Rest des Quadrates! Ich habe mir das so überlegt: wenn ich den Abstand der Punkte zum Mittelpunkt des Kreises errechnen könnte, wäre das meine Lösung, denn
Wenn Länge von Mittelpunkt zu Punkt < Radius dann ist der Punkt auf dem Kreis.

Ich zeichne mit Canvas.Ellipse, Canvas.Rectangle und Canvas.Pixels
Ich habe sie auch schon verbinden gelassen, kann aber nicht abfragen, wie lange diese Strecken jeweils sind!
Ich brauche das dringend!

Bitte helft mir!
I love Delphi
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Monte Carlo trifft PI

  Alt 21. Jan 2005, 22:13
Den Abstand zum Ursprung kannst du doch sehr einfach über den Satz des Pythagoras errechnen lassen...
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Monte Carlo trifft PI

  Alt 21. Jan 2005, 22:14
Hi,
lässt es sich nicht mathematisch ausrechnen, ob ein Punkt innerhalb einer bestimmten Fläche liegt? Ich weiß, dass ich das mal gemacht habe und das geht, aber leider weiß nicht mehr wie. Jedenfalls wäre das wesentlich effektiver, als über Canvas irgendwas zu lösen.

Chris
  Mit Zitat antworten Zitat
Delphi-Padawan

Registriert seit: 21. Okt 2003
28 Beiträge
 
#4

Re: Monte Carlo trifft PI

  Alt 21. Jan 2005, 22:15
Hi Toxman,

das klingt gut, ich erinnere mich an etwas...
Aber wie ging das noch?
Kannst du mir das sagen?
BITTE!
I love Delphi
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Monte Carlo trifft PI

  Alt 21. Jan 2005, 22:18
Hi,
Satz des Pythagoras sollte man als Schüler schon wissen bzw. wissen, wo man ihn nachschlagen kann:
Code:
a² + b² = c²
Wobei a und b die Katheten des rechtwinkligen Dreiecks ABC sind und c die Hypothenuse ist (die dem rechten Winkel gegenüberliegende Seite).
Chris
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#6

Re: Monte Carlo trifft PI

  Alt 21. Jan 2005, 22:48
Ein anderer Thread mit Progrmm zum Problem
Ich musste für den Entwickler den Tester spielen.
Das Programm ist leider nicht OpenSource, aber du kanst dir ansehen, wie er es gelöst hat und dich gegebenenfalls mit dem Autor in Verbindung setzen. Er muss es ja wissen....
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Monte Carlo trifft PI

  Alt 21. Jan 2005, 23:24
Zitat von Delphi-Padawan:
Ich habe mir das so überlegt: wenn ich den Abstand der Punkte zum Mittelpunkt des Kreises errechnen könnte, wäre das meine Lösung, denn
Wenn Länge von Mittelpunkt zu Punkt < Radius dann ist der Punkt auf dem Kreis.
Im Grunde hast du die Lösung schon selbst genannt... Man verwendet die Abstandsformel. Siehe Anhang!
Miniaturansicht angehängter Grafiken
formel_404.png  
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Monte Carlo trifft PI

  Alt 24. Jan 2005, 10:57
Also wenn der Kreis den Radius r hat, und der Punkt die Koordinaten P(x,y), dann kann man mit

Delphi-Quellcode:
if (sqrt(x*x+y*y)<=r) then begin
  //Punkt im Kreis
  ...
end
else begin
  //Punkt außerhalb des Kreises
  ...
end;
testen, ob der Punkt im Kreis ist. dazu braucht man auch keinen Canvas o.ä. .

MfG
Binärbaum

[Edit] Dabei wird davon ausgegangen, dass der Kreis den Mittelpunkt M(0;0) hat.
Ansonsten müsste man die if Abfrage ändern:
if (sqrt(sqr(x-c)+sqr(x-d))<=r) then //Fortsetzung wie oben... Dabei hat der Mittelpunkt des kreises die Koordinaten M(c;d).
[/Edit]
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Monte Carlo trifft PI

  Alt 24. Jan 2005, 12:49
Zitat von Binärbaum:
if (sqrt(x*x+y*y)<=r)
Statt über die Wurzel zu verfahren geht das hier auch, und hat den Vorteil, daß es wesentlich schneller läuft. Ist bei Monte Carlos immer zu berücksichtigen, da das Verfahren sehr oft durchgeprüft werden muss.
x*x+y*y<=r*r
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Monte Carlo trifft PI

  Alt 24. Jan 2005, 13:31
Ich habe mal eine Frage zum Verständnis. Das ganze mit Canvas zu machen bringt doch rein garnichts oder?
Wenn ich so ein Viertelkreis habe, dann könnte ich doch auch gleich die Pixel auszählen, um zu gucken, wie groß Pi unefähr ist, oder? Das wäre zwar nicht sehr genau, aber es käme auf dauer doch das gleiche raus wie bei der Monte Carlo Methode.
Sehe ich da was falsch?
Beispiel:
Das obige Bild hat 71x71 Pixel. Das sind dann insgesamt 5041 Pixel.
Davon liegen 1605 Pixel außerhalb des Kreises und 3436 Pixel innerhalb. Dann käme ich auf ein Pi von ungefähr 3,1408.
Das Ergebnis wird doch fast genauso bleiben, wenn ich da jetzt ein paar Punkte zufällig raufmale, oder?

Das heißt (denk ich mal) dass man eine so große Fläche bräuchte, die mit einem Canvas nicht mehr zu bewältigen ist. Aber auch sp ist doch der Effekt mit den Pixelzählen immer schneller ung genauer als ein paar zufällige Punkte...

Naja, vielleicht kann mich ja einer eines Besseren belehren...
Gruß
Nicolai

Geändert von Nicolai1234 (14. Feb 2015 um 20:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr.
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