AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi MonteCarloSimulation - falsche ergebnisse
Thema durchsuchen
Ansicht
Themen-Optionen

MonteCarloSimulation - falsche ergebnisse

Ein Thema von glkgereon · begonnen am 15. Sep 2004 · letzter Beitrag vom 16. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 19:32
hi

ich mach grad ein prog zur montecarlo-simulation
damit berrechne ich pi

nun ist pi ja meines wissens 3,14....

bei mir kommt aber 3,18... raus

wo ist der fehler?

Delphi-Quellcode:
var
  x, y, i, pin:integer;//x, y, alle punkte, punkte im kreis
  pi:Extended;
begin
while (running) do
  begin
  x:=random(NETZGENAUIGKEIT);
  y:=random(NETZGENAUIGKEIT);
  if sqr(x)+sqr(y)<sqr(NETZGENAUIGKEIT) then inc(pin);
  inc(i);
  Application.ProcessMessages;
  end;
pi:=4*pin/i;
also ein randomize is davor....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 19:50
Wie oft machst du das denn? Diese Methode ist ja recht ungenau und langsam, da musst du schon ordentlich rechnen, bis was rauskommt.

Ich hab mal ein kleines Programm mit unterschiedlichen Algorhytmen in der Schule geschrieben (siehe Anhang), da gibt's vielleicht eine schnellere Version drunter für dich.
Angehängte Dateien
Dateityp: exe projectpiendless.exe (480,0 KB, 18x aufgerufen)
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 20:07
naja, also sagen wir mal so:

mein prog is nach 500000 durchläufen bei 3,18
(mittlerweile über 1000000, aber immer noach 3,18 )

deins is bereits nach 50000 wenigstens zwischen 3,15 und 3,13

kannst du mir ma den qt für deins geben?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 20:11
Was betweckst du denn mit NETZGENAUIGKEIT... Wenn du random(Netzgenauigkeit) aufrufst, kriegst du nur ganze Zahlen als Zufallszahlen... Rufe stattdessen einfach radom auf (ohne Parameter), und du erhältst ein Float zwischen 0..1.

Gruß,
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 20:19
das funzt....

aber wie stelle ich das jetzt in ner paintbox dar?
also vom umrechnen
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 20:23
Die Monte-Carlo Methode ist ganz unten.
Dein Fehler könnte hier liegen:
if sqr(x)+sqr(y)<sqr(NETZGENAUIGKEIT) then inc(pin); Ich nehme an Netzgenauigkeit ist die Kantenlänge deines Quadrats. Setzt die mal 1 oder lass das sqr nach dem '<' weg. [Ich bezieh mich jetzt auf das unterste Bild in meinem Programm:
Der Radius des roten Viertelkreises ist gleich der Kantenlänge, d.h. das sqr ist falsch. Es müsste nurif sqr(x*x+y*y) < Netzgenauigkeit then {Treffer} Ich glaube du hattest einen Denkfehler als du den Pythagoras geschrieben hast. [Falls ich nicht ganz falsch liege ]
Angehängte Dateien
Dateityp: pas unit1_184.pas (6,5 KB, 8x aufgerufen)
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 20:23
Ich versteh nicht was du in einer Paintbox darstellen willst?
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 20:26
so ein bildchen, wo ein viertelkreis drauf is, und gezeigt wird wo die ganzen pünktchen gelandet sind....

@Toxman: ich habs jetzt so umgeschrieben (und es funzt)
Delphi-Quellcode:
x:=random;
y:=random;
if sqr(x)+sqr(y)<1 then inc(pin);
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 21:11
mach's doch so:
Delphi-Quellcode:
if d < 1 then
col:= clmaroon else col:= clblack;

image1.Canvas.Pixels[round(x*image1.width),round(y*image1.height)] := col;
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: MonteCarloSimulation - falsche ergebnisse

  Alt 15. Sep 2004, 21:19
gute idee
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:22 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